diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..ee75523f2 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,72 @@ +# Contributing to MonoGame.Extended + +We're happy that you have chosen to contribute to the MonoGame Extended project. + +You are joining a team of dedicated volunteers that are building an extension library to the game framework [MonoGame](http://www.monogame.net/). + +Please read this document completely before contributing. + + +## How To Contribute + +MonoGame.Extended has a `master` branch for stable releases and a `develop` branch for daily development. New features and fixes are always submitted to the `develop` branch. + +If you are looking for ways to help you should start by looking at the [Open Issues](https://github.com/craftworkgames/MonoGame.Extended/issues). Please let us know if you plan to work on an issue so that others are not duplicating work. + +The MonoGame.Extended project follows standard [GitHub flow](https://guides.github.com/introduction/flow/index.html). You should learn and be familiar with how to [use Git](https://help.github.com/articles/set-up-git/), how to [create a fork of MonoGame.Extended](https://help.github.com/articles/fork-a-repo/), and how to [submit a Pull Request](https://help.github.com/articles/using-pull-requests/). + +After you submit a PR the MonoGame.Extended [build server](http://build.craftworkgames.com/) will build your changes and verify all tests pass. Project maintainers and contributors will review your changes and provide constructive feedback to improve your submission. + +Once satisfied that your changes are good for MonoGame.Extended we will merge it. + + +## Quick Guidelines + +Here are a few simple rules and suggestions to remember when contributing to MonoGame.Extended. + +* :bangbang: **NEVER** commit code that you didn't personally write. +* :bangbang: **NEVER** use decompiler tools to steal code and submit them as your own work. +* :bangbang: **NEVER** decompile XNA assemblies and steal Microsoft's copyrighted code. +* **PLEASE** try keep your PRs focused on a single topic and of a reasonable size or we may ask you to break it up. +* **PLEASE** be sure to write simple and descriptive commit messages. +* **DO NOT** surprise us with new APIs or big new features. Open an issue to discuss your ideas first. +* **DO NOT** reorder type members as it makes it difficult to compare code changes in a PR. +* **DO** give priority to the existing style of the file you're changing. +* **DO** try to add to our [unit tests](Source/MonoGame.Extended.Tests) when adding new features or fixing bugs. +* **DO NOT** send PRs for code style changes or make code changes just for the sake of style. +* **PLEASE** keep a civil and respectful tone when discussing and reviewing contributions. +* **PLEASE** tell others about MonoGame.Extended and your contributions via social media. + + +## Decompiler Tools + +We prohibit tools like dotPeek, ILSpy, JustDecompiler, or .NET Reflector which convert compiled assemblies into readable code. + +It is **NEVER ACCEPTABLE** to decompile copyrighted assemblies and submit that code to the MonoGame.Extended project. + +* It **DOES NOT** matter how much you change the code. +* It **DOES NOT** matter what country you live in or what your local laws say. +* It **DOES NOT** matter that XNA is discontinued. +* It **DOES NOT** matter how small the bit of code you have stolen is. +* It **DOES NOT** matter what your opinion is of stealing code. + +If you did not write the code, you do not have ownership of the code, and you shouldn't submit it to MonoGame.Extended. + +If we find a contribution in violation of copyright it will be immediately removed. We will bar that contributor from the MonoGame.Extended project. + + +## Licensing + +The MonoGame.Extended project is under the [MIT License](https://opensource.org/licenses/MIT) unless a portion of code is explicitly stated elsewhere. See the [LICENSE](LICENSE) for more details. Third-party libraries used by MonoGame.Extended are under their own licenses, we always seek permission from the original author of those libraries.. Please refer to those libraries for details on the license they use. + +We accept contributions in "good faith" that it isn't bound to a conflicting license. By submitting a PR you agree to distribute your work under the MonoGame.Extended license and copyright. + + +## Need More Help? + +If you need help please ask questions on our [community forums](http://community.monogame.net/c/extended) or come [chat on Gitter](https://gitter.im/craftworkgames/MonoGame.Extended). + + +Thanks for reading this guide and helping make MonoGame.Extended great! + + :heart: The MonoGame.Extended Team diff --git a/Dependencies/MonoGame.Framework.dll b/Dependencies/MonoGame.Framework.dll deleted file mode 100644 index deb93c468..000000000 Binary files a/Dependencies/MonoGame.Framework.dll and /dev/null differ diff --git a/Logos/support-on-patreon.png b/Logos/support-on-patreon.png new file mode 100644 index 000000000..5f9f40b70 Binary files /dev/null and b/Logos/support-on-patreon.png differ diff --git a/README.md b/README.md index 39a173367..6e77b6676 100644 --- a/README.md +++ b/README.md @@ -7,21 +7,57 @@ It makes MonoGame more awesome. MonoGame.Extended is an open source extension library for [MonoGame](http://www.monogame.net/). A collection of classes and extensions to make it easier to make games with MonoGame. +## Patreon Supporters + +Thanks to all those that support the project on Patreon! Running an open source project can be done on a shoe string budget, but it's certainly not free. A little funding goes a long way. It keeps the build server up and running and let's me devote more of my time to the project. Even just a few supporters really helps. + +**What happens to MonoGame.Extended if we don't get the funding?** Never fear. The project won't die. The code will always be safely open sourced on github. + +[![image](https://cloud.githubusercontent.com/assets/3201643/17462536/f5608898-5cf3-11e6-8e81-47d6594a8d9c.png)](https://www.patreon.com/craftworkgames) + +### Special thanks to the top supporters + + - Ben + - Patrick ([PRT Studios](http://prt-studios.com/)) + - Benny + - Walter + - Marcel + - Nathanial ([optimuspi](http://www.optimuspi.com/)) + - Austin + + If you're not on the list and you should be please let me know! Managing Patreon is a job in itself. + + +## We're working towards the v0.6 release + +There's a lot going on in the `develop` branch right now. We're working towards the next official release (v0.6.xxx). If you want to keep up with the latest and greatest it's recommended that you: + + - [Install a pre-release NuGet package](https://github.com/craftworkgames/MonoGame.Extended/wiki/How-to-use-the-pre-release-NuGet-packages) or; + - [Build from source](https://github.com/craftworkgames/MonoGame.Extended/wiki/Building-MonoGame.Extended-from-source) + +## Version 0.5 is available on NuGet + +MonoGame.Extended v0.5 was published on 8th April 2016 as [a NuGet package](https://www.nuget.org/packages/MonoGame.Extended/). Please read the [install guide](https://github.com/craftworkgames/MonoGame.Extended/wiki/How-to-install-MonoGame.Extended) to setup the Pipeline tool. + + Install-Package MonoGame.Extended + +This release is compatible with MonoGame 3.5! + +**Note**: If you're still using MonoGame 3.4 you must upgrade to 3.5 for everything to work. + ## Forums -We now have forums! Our forum is part of the [MonoGame community](http://community.monogame.net/category/extended). Please ask any questions or post about problems or bugs that you have found there. Let us know if you're making a game with MonoGame.Extended! +Our forum is part of the [MonoGame community](http://community.monogame.net/category/extended). Please ask any questions or post about problems or bugs that you have found there. Let us know if you're making a game with MonoGame.Extended! ## Development status -MonoGame.Extended has a growing community of contributors adding to the project all the time. Our next release will be ready for the latest MonoGame 3.5. We also have [Nuget packages](https://www.nuget.org/packages/MonoGame.Extended/) of previous releases or of course you can [build from source] to get the latest and greatest. - -**Note:** If you're building from source please install the latest [MonoGame v3.5 **Development Build**](http://www.monogame.net/downloads/). If you don't, you'll get build errors due to incompatible content Pipelines between MonoGame 3.4 and 3.5. +MonoGame.Extended has a growing community of contributors adding to the project all the time. We also have [Nuget packages](https://www.nuget.org/packages/MonoGame.Extended/) of published releases and of course you can [build from source](https://github.com/craftworkgames/MonoGame.Extended/wiki/Building-MonoGame.Extended-from-source) to get the latest and greatest. -Please keep in mind that the project is still evolving. Some breaking API changes are liklely to occur as we progress towards version 1.0. +Please keep in mind that the project is still evolving. Some breaking API changes are likely to occur as we progress. ## Usage MonoGame.Extended is a portable class library that sits on top of MonoGame. It's designed to work on all supported platforms using a single portable DLL. At runtime, the portable library will call into the platform specific MonoGame DLL referenced in your project. If you do use it on another platform please [let us know](http://community.monogame.net/category/extended)! ## Documentation -We've got several feature demos in the repository and we're building up [the wiki](https://github.com/craftworkgames/MonoGame.Extended/wiki). You can also pop into [the forums](http://community.monogame.net/c/extended), check out [my blog](http://dylanwilson.net/), ask a question on [gamedev stack overflow](http://gamedev.stackexchange.com/questions/tagged/monogame-extended) or use our [live chat](https://gitter.im/craftworkgames/MonoGame.Extended). +We've got several feature demos in this repository and we're building up [the wiki](https://github.com/craftworkgames/MonoGame.Extended/wiki). You can also pop into [the forums](http://community.monogame.net/c/extended), check out [my blog](http://dylanwilson.net/), ask a question on [gamedev stack overflow](http://gamedev.stackexchange.com/questions/tagged/monogame-extended) or use our [live chat](https://gitter.im/craftworkgames/MonoGame.Extended). ## How to install @@ -34,25 +70,86 @@ The library is distributed as a NuGet package. Add a reference to your project u The package comes with 2 DLLs: - MonoGame.Extended.dll - - MonoGame.Extedded.Content.Pipeline.dll + - MonoGame.Extended.Content.Pipeline.dll The `MonoGame.Extended.Content.Pipeline.dll` needs to be referenced by the [Pipeline tool](http://www.monogame.net/documentation/?page=Pipeline). To reference the DLL in the Pipeline tool you'll need to edit your `Content.mgcb` file. -## Features - -- **Tile based maps** using [Tiled](http://www.mapeditor.org/) -- **Bitmap fonts** using [BMFont](http://www.angelcode.com/products/bmfont/) -- **[Sprites](http://dylanwilson.net/sprites-and-spritebatch-extensions-in-monogame-extended)** (with SpriteBatch extensions!) -- **Input listeners** for event driven input handling (Keyboard, Mouse, Touch, GamePad). -- **Texture Atlases** using the JSON format in [TexturePacker](https://www.codeandweb.com/texturepacker). -- **2D Camera** with pan, zoom, and rotation. -- **Viewport Adapters** for resolution independent rendering. -- **Sprite Animators** using texture atlases. -- **Timers** including a continuous clock and a countdown timer w/ event integration -- **FPS Counter** that is handy for debugging. -- **Primitive Shapes** and sprite batch extensions to draw them. -- **Sprite Sheet Animations** - created with the [Astrid Animator](http://dylanwilson.net/introducing-astrid-animator) prototype. -- **Simple Collision Detection** - experimental. +## Roadmap / Features + +#### Animations + - [ ] Tweening** + - [x] Sprite Sheets + - [ ] Game Component** + +#### Content + - [x] Texture Atlases + - [x] Bitmap Fonts + - [x] Tiled Maps + +#### Collision Detection + - [x] Bounding Shapes + - [x] Intersection and overlap testing + +#### Input Management + - [x] Event based input (input listeners) + - [ ] Gesture detection (taps, panning, flinging and pinch zooming) + - [ ] Button Mapping (W=Up, A=Left, Space=Jump, etc) + - [ ] Game components** + +#### Graphics and Scenes + - [x] Sprites + - [x] Scene Graphs + - [x] Camera + - [x] Simple shape rendering + - [ ] Screen Management + +#### GUI System + - [x] Controls + - [x] Label** + - [x] Button (Text or Image)** + - [ ] Toggle Button (Checkbox)** + - [x] Progress Bar + - [x] Text Box** + - [x] Image + - [ ] Slider + - [ ] Layout + - [ ] Canvas + - [ ] Stack Panel + - [ ] Wrap Panel + - [ ] Dock Panel + - [ ] Grid + - [ ] Dialog + - [ ] Window + - [x] Skinning + - [x] Events + - [ ] Drag and Drop + +#### Particle System + - [x] Emitters + - [x] Modifiers (age, drag, gravity, rotation, velocity, vortex) + - [x] Profiles (box, circle, line, point, ring, spray) + - [x] Sprite Batch Renderer + - [ ] Game Component** + +#### Math and Utilities + - [x] Timers + - [x] Virtual Screens (viewport adapters) + - [x] Bounding Shapes + - [x] Collections + - [x] FPS Counter + - [x] Random Numbers + +#### Platforms + - [x] Windows + - [x] Linux + - [x] Mac + - [x] Android^^ + - [ ] iOS^^ + +\** Work in progress + +^^ Not officially tested but should work + ## Contributing If you would like to contribute start with one of the following: @@ -75,3 +172,10 @@ If you would like to contribute start with one of the following: MonoGame.Extended is released under the [The MIT License (MIT)](https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE). +## Special Thanks + + - Matthew-Davey for letting us use the [Mercury Particle Engine](https://github.com/Matthew-Davey/mercury-particle-engine). + - John McDonald for [2D XNA Primitives](https://bitbucket.org/C3/2d-xna-primitives/wiki/Home) + - [LibGDX](https://libgdx.badlogicgames.com) for a whole lot of inspiration. + - @prime31 for [Nez](https://github.com/prime31/Nez), which ideas and code bounce back and forth. + - All of our contributors! diff --git a/Source/Demos/Demo.Android/Activity1.cs b/Source/Demos/Demo.Android/Activity1.cs new file mode 100644 index 000000000..29eb9f949 --- /dev/null +++ b/Source/Demos/Demo.Android/Activity1.cs @@ -0,0 +1,52 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; +using Android.Views; + +namespace Demo.Android +{ + [Activity( + Label = "Demo.Android", + MainLauncher = true, + Icon = "@drawable/icon", + Theme = "@style/Theme.Splash", + AlwaysRetainTaskState = true, + LaunchMode = LaunchMode.SingleInstance, + ScreenOrientation = ScreenOrientation.SensorLandscape, + ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden)] + public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity + { + protected override void OnCreate(Bundle bundle) + { + base.OnCreate(bundle); + + var game = new GameMain(); + var view = (View)game.Services.GetService(typeof(View)); + + HideSystemUi(); + + SetContentView(view); + game.Run(); + } + + private void HideSystemUi() + { + // https://developer.android.com/training/system-ui/immersive.html + + if (Build.VERSION.SdkInt >= (BuildVersionCodes)19) + { + var decorView = Window.DecorView; + var uiVisibility = (int)decorView.SystemUiVisibility; + var options = uiVisibility; + + options |= (int)SystemUiFlags.LowProfile; + options |= (int)SystemUiFlags.Fullscreen; + options |= (int)SystemUiFlags.HideNavigation; + options |= (int)SystemUiFlags.ImmersiveSticky; + + decorView.SystemUiVisibility = (StatusBarVisibility)options; + } + } + } +} + diff --git a/Source/Demos/Demo.Android/Assets/AboutAssets.txt b/Source/Demos/Demo.Android/Assets/AboutAssets.txt new file mode 100644 index 000000000..ee3988629 --- /dev/null +++ b/Source/Demos/Demo.Android/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with you package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Assets/adventure-gui-skin.json b/Source/Demos/Demo.Android/Assets/adventure-gui-skin.json new file mode 100644 index 000000000..e60ffde78 --- /dev/null +++ b/Source/Demos/Demo.Android/Assets/adventure-gui-skin.json @@ -0,0 +1,91 @@ +{ + "Name": "adventure", + "TextureAtlases": [ "adventure-gui-atlas" ], + "Fonts": [ "small-font" ], + "Cursor": { + "TextureRegion": "cursorSword_silver", + "Color": "#aaaaaa" + }, + "NinePatches": [ + { "TextureRegion": "panel_brown", "Padding": "10" }, + { "TextureRegion": "panelInset_beige", "Padding": "10" }, + { "TextureRegion": "grey_textBox", "Padding": "10" }, + { "TextureRegion": "progress-bar-container", "Padding": "10" }, + { "TextureRegion": "progress-bar-blue", "Padding": "10" } + ], + "Styles": [ + { + "Name": "close-button", + "Type": "GuiButton", + "BackgroundRegion": "buttonRound_close", + "HoverStyle": { + "Type": "GuiButton", + "Color": "LightGray" + } + }, + { + "Name": "white-button", + "Type": "GuiButton", + "BackgroundRegion": "buttonLong_grey", + "TextOffset": "0 -2", + "TextColor": "#f4a460ff", + "Color": "#8b4513ff", + "PressedStyle": { + "Type": "GuiButton", + "BackgroundRegion": "buttonLong_grey_pressed", + "TextOffset": "0 2" + }, + "HoverStyle": { + "Type": "GuiButton", + "Color": "#9E4C16ff", + "TextColor": "#ffffffff" + } + }, + { + "Name": "checkbox", + "Type": "GuiCheckBox", + "BackgroundRegion": "checkBox_beige_unchecked", + "CheckedStyle": { + "Type": "GuiCheckBox", + "BackgroundRegion": "checkBox_beige_checked" + } + }, + + { + "Name": "brown-panel", + "Type": "GuiPanel", + "BackgroundRegion": "panel_brown", + "Size": "400 300" + }, + { + "Name": "beige-inset-panel", + "Type": "GuiPanel", + "BackgroundRegion": "panelInset_beige", + "Size": "385 280" + }, + { + "Name": "label", + "Type": "GuiLabel", + "TextColor": "#444444" + }, + { + "Name": "monogame-title", + "Type": "GuiImage", + "BackgroundRegion": "monogame-title" + }, + { + "Name": "text-box", + "Type": "GuiTextBox", + "Padding": "8 0", + "BackgroundRegion": "grey_textBox", + "TextColor": "#444444" + }, + { + "Name": "progress-bar", + "Type": "GuiProgressBar", + "BackgroundRegion": "progress-bar-container", + "BarRegion": "progress-bar-blue", + "Size": "100 32" + } + ] +} \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Assets/title-screen.json b/Source/Demos/Demo.Android/Assets/title-screen.json new file mode 100644 index 000000000..8d2395381 --- /dev/null +++ b/Source/Demos/Demo.Android/Assets/title-screen.json @@ -0,0 +1,76 @@ +{ + "Skin": "adventure-gui-skin.json", + "Controls": [ + { + "Type": "GuiPanel", + "Name": "MainPanel", + "Style": "brown-panel", + "Position": "400 240", + "Size": "700 380", + "Controls": [ + { + "Type": "GuiPanel", + "Style": "beige-inset-panel", + "Position": "350 190", + "Size": "680 360" + }, + { + "Name": "CloseButton", + "Type": "GuiButton", + "Style": "close-button", + "Position": "690 10" + }, + { + "Type": "GuiImage", + "Style": "monogame-title", + "Position": "350 100" + }, + { + "Name": "PlayButton", + "Type": "GuiButton", + "Style": "white-button", + "Position": "350 190", + "Text": "Play" + }, + { + "Name": "QuitButton", + "Type": "GuiButton", + "Style": "white-button", + "Position": "350 240", + "Text": "Quit" + }, + { + "Name": "EmailLabel", + "Style": "label", + "Type": "GuiLabel", + "Position": "350 315", + "Text": "email" + }, + { + "Name": "EmailTextBox", + "Type": "GuiTextBox", + "Style": "text-box", + "Position": "350 345", + "Size": "300 42", + "Text": "Let's put some really long text in the textbox to test the clipping area" + }, + { + "Name": "CheckBox", + "Type": "GuiCheckBox", + "Style": "checkbox", + "Position": "350 285", + "Size": "250 35", + "Text": "sign me up to all the things", + "TextColor": "#444444" + }, + { + "Name": "ProgressBar", + "Type": "GuiProgressBar", + "Style": "progress-bar", + "Position": "100 300", + "Progress": 0.5 + } + ] + } + ] +} diff --git a/Source/Demos/Demo.Android/Content/Content.mgcb b/Source/Demos/Demo.Android/Content/Content.mgcb new file mode 100644 index 000000000..2561ef4d8 --- /dev/null +++ b/Source/Demos/Demo.Android/Content/Content.mgcb @@ -0,0 +1,50 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin +/intermediateDir:obj +/platform:Android +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:..\..\..\MonoGame.Extended.Content.Pipeline\bin\MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin adventure-gui.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:adventure-gui.png + +#begin adventure-gui-atlas.json +/importer:TexturePackerJsonImporter +/processor:TexturePackerProcessor +/build:adventure-gui-atlas.json + +#begin small-font.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:small-font.fnt + +#begin small-font_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:small-font_0.png + diff --git a/Source/Demos/Demo.Android/Content/adventure-gui-atlas.json b/Source/Demos/Demo.Android/Content/adventure-gui-atlas.json new file mode 100644 index 000000000..002a70cca --- /dev/null +++ b/Source/Demos/Demo.Android/Content/adventure-gui-atlas.json @@ -0,0 +1,174 @@ +{"frames": [ + +{ + "filename": "monogame-title.png", + "frame": {"x":2,"y":2,"w":504,"h":120}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":504,"h":120}, + "sourceSize": {"w":504,"h":120}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "panel_brown.png", + "frame": {"x":2,"y":124,"w":100,"h":100}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100}, + "sourceSize": {"w":100,"h":100}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "panelInset_beige.png", + "frame": {"x":104,"y":124,"w":93,"h":94}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":93,"h":94}, + "sourceSize": {"w":93,"h":94}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonLong_grey.png", + "frame": {"x":194,"y":226,"w":190,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":190,"h":49}, + "sourceSize": {"w":190,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonLong_grey_pressed.png", + "frame": {"x":2,"y":226,"w":190,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":190,"h":49}, + "sourceSize": {"w":190,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "grey_textBox.png", + "frame": {"x":246,"y":124,"w":191,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":191,"h":49}, + "sourceSize": {"w":191,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonSquare_blue.png", + "frame": {"x":439,"y":124,"w":45,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":45,"h":49}, + "sourceSize": {"w":45,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonSquare_blue_pressed.png", + "frame": {"x":199,"y":124,"w":45,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":45,"h":49}, + "sourceSize": {"w":45,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_close.png", + "frame": {"x":460,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_beige.png", + "frame": {"x":423,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_beige_checked.png", + "frame": {"x":386,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "cursorSword_silver.png", + "frame": {"x":2,"y":277,"w":34,"h":37}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":34,"h":37}, + "sourceSize": {"w":34,"h":37}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "checkBox_beige_checked.png", + "frame": {"x":75,"y":277,"w":35,"h":35}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":35}, + "sourceSize": {"w":35,"h":35}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "checkBox_beige_unchecked.png", + "frame": {"x":38,"y":277,"w":35,"h":35}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":35}, + "sourceSize": {"w":35,"h":35}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-blue.png", + "frame": {"x":188,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-green.png", + "frame": {"x":112,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-red.png", + "frame": {"x":226,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-container.png", + "frame": {"x":150,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "http://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "adventure-gui.png", + "format": "RGBA8888", + "size": {"w":512,"h":512}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:916ebf93558b06c639197c77d59b8bd1:47e52a3a5ea7d18877b92a0b5013fb0e:664eb9b3a42185355129a17c82b53558$" +} +} diff --git a/Source/Demos/Demo.Android/Content/adventure-gui.png b/Source/Demos/Demo.Android/Content/adventure-gui.png new file mode 100644 index 000000000..29291a7d0 Binary files /dev/null and b/Source/Demos/Demo.Android/Content/adventure-gui.png differ diff --git a/Source/Demos/Demo.Android/Content/small-font.fnt b/Source/Demos/Demo.Android/Content/small-font.fnt new file mode 100644 index 000000000..5dac6f094 --- /dev/null +++ b/Source/Demos/Demo.Android/Content/small-font.fnt @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.Android/Content/small-font_0.png b/Source/Demos/Demo.Android/Content/small-font_0.png new file mode 100644 index 000000000..088d4f64c Binary files /dev/null and b/Source/Demos/Demo.Android/Content/small-font_0.png differ diff --git a/Source/Demos/Demo.Android/Demo.Android.csproj b/Source/Demos/Demo.Android/Demo.Android.csproj new file mode 100644 index 000000000..1a1ff18ba --- /dev/null +++ b/Source/Demos/Demo.Android/Demo.Android.csproj @@ -0,0 +1,123 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {75787324-20FC-4AA7-8E4E-00AE508F4069} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + Properties + Demo.Android + Demo.Android + 512 + true + Resources\Resource.Designer.cs + Off + armeabi%3barmeabi-v7a%3bx86 + + + v7.1 + Properties\AndroidManifest.xml + + + ..\..\..\ + true + f7f092e7 + Android + True + + + true + full + false + bin\Android\Debug\ + DEBUG;TRACE;ANDROID + prompt + 4 + True + None + + + pdbonly + true + ..\..\bin\Android\Release\ + TRACE;ANDROID + prompt + 4 + False + SdkOnly + + + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Android\MonoGame.Framework.dll + + + + packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + {8e425575-378a-4f83-88c9-f8bebad227c9} + MonoGame.Extended.Gui + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Demo.Android.sln b/Source/Demos/Demo.Android/Demo.Android.sln new file mode 100644 index 000000000..6d0ab363d --- /dev/null +++ b/Source/Demos/Demo.Android/Demo.Android.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26206.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Android", "Demo.Android.csproj", "{75787324-20FC-4AA7-8E4E-00AE508F4069}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended", "..\..\MonoGame.Extended\MonoGame.Extended.csproj", "{41724C52-3D50-45BB-81EB-3C8A247EAFD1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Gui", "..\..\MonoGame.Extended.Gui\MonoGame.Extended.Gui.csproj", "{8E425575-378A-4F83-88C9-F8BEBAD227C9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Release|Any CPU.Build.0 = Release|Any CPU + {75787324-20FC-4AA7-8E4E-00AE508F4069}.Release|Any CPU.Deploy.0 = Release|Any CPU + {41724C52-3D50-45BB-81EB-3C8A247EAFD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {41724C52-3D50-45BB-81EB-3C8A247EAFD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41724C52-3D50-45BB-81EB-3C8A247EAFD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {41724C52-3D50-45BB-81EB-3C8A247EAFD1}.Release|Any CPU.Build.0 = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Source/Demos/Demo.Android/GameMain.cs b/Source/Demos/Demo.Android/GameMain.cs new file mode 100644 index 000000000..c55cb3927 --- /dev/null +++ b/Source/Demos/Demo.Android/GameMain.cs @@ -0,0 +1,102 @@ +using System; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Gui; +using MonoGame.Extended.Gui.Controls; +using MonoGame.Extended.Gui.Serialization; +using MonoGame.Extended.ViewportAdapters; +using Newtonsoft.Json; + +namespace Demo.Android +{ + public class GameMain : Game + { + private readonly GraphicsDeviceManager _graphicsDeviceManager; + private Camera2D _camera; + private GuiSystem _guiSystem; + private GuiProgressBar _progressBar; + private float _progressDelta = 0.2f; + + public GameMain() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this) + { + IsFullScreen = true, + SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight + }; + Content.RootDirectory = "Content"; + } + + protected override void LoadContent() + { + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + var titleScreen = LoadScreen(@"title-screen.json"); + var guiRenderer = new GuiSpriteBatchRenderer(GraphicsDevice, titleScreen.Skin.DefaultFont, _camera.GetViewMatrix); + _guiSystem = new GuiSystem(viewportAdapter, guiRenderer) { Screen = titleScreen }; + + var panel = titleScreen.FindControl("MainPanel"); + + var closeButton = titleScreen.FindControl("CloseButton"); + closeButton.Clicked += (sender, args) => { panel.IsVisible = false; }; + + var quitButton = titleScreen.FindControl("QuitButton"); + quitButton.Clicked += (sender, args) => Exit(); + + _progressBar = titleScreen.FindControl("ProgressBar"); + } + + private GuiScreen LoadScreen(string name) + { + var skinService = new GuiSkinService(); + var serializer = new GuiJsonSerializer(Content) + { + Converters = + { + new GuiSkinJsonConverter(Content, skinService), + new GuiControlJsonConverter(skinService) + } + }; + + using (var stream = TitleContainer.OpenStream(name)) + using (var streamReader = new StreamReader(stream)) + using (var jsonReader = new JsonTextReader(streamReader)) + { + var screen = serializer.Deserialize(jsonReader); + return screen; + } + } + + protected override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + _progressBar.Progress += deltaTime * _progressDelta; + + if (_progressBar.Progress >= 1.1f) + _progressDelta = -_progressDelta; + else if (_progressBar.Progress <= -0.1f) + _progressDelta = -_progressDelta; + + _guiSystem.Update(gameTime); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.CornflowerBlue); + + _guiSystem.Draw(gameTime); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Icon.ico b/Source/Demos/Demo.Android/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Android/Icon.ico differ diff --git a/Source/Demos/Demo.Android/Properties/AndroidManifest.xml b/Source/Demos/Demo.Android/Properties/AndroidManifest.xml new file mode 100644 index 000000000..72f8fb6d6 --- /dev/null +++ b/Source/Demos/Demo.Android/Properties/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Android/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..4333a5da3 --- /dev/null +++ b/Source/Demos/Demo.Android/Properties/AssemblyInfo.cs @@ -0,0 +1,43 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; +#if ANDROID +using Android.App; +#endif + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Platformer2D")] +[assembly: AssemblyProduct("Platformer2D")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("en-US")] +#if ANDROID +// Add some common permissions, these can be removed if not needed +[assembly: UsesPermission(Android.Manifest.Permission.Internet)] +[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] +#endif \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Resources/AboutResources.txt b/Source/Demos/Demo.Android/Resources/AboutResources.txt new file mode 100644 index 000000000..b0fc999bd --- /dev/null +++ b/Source/Demos/Demo.Android/Resources/AboutResources.txt @@ -0,0 +1,44 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (Main.xml), +an internationalization string table (Strings.xml) and some icons (drawable/Icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + Drawable/ + Icon.png + + Layout/ + Main.axml + + Values/ + Strings.xml + +In order to get the build system to recognize Android resources, the build action should be set +to "AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called +"Resource" that contains the tokens for each one of the resources included. For example, +for the above Resources layout, this is what the Resource class would expose: + +public class Resource { + public class Drawable { + public const int Icon = 0x123; + } + + public class Layout { + public const int Main = 0x456; + } + + public class String { + public const int FirstString = 0xabc; + public const int SecondString = 0xbcd; + } +} + +You would then use Resource.Drawable.Icon to reference the Drawable/Icon.png file, or +Resource.Layout.Main to reference the Layout/Main.axml file, or Resource.String.FirstString +to reference the first string in the dictionary file Values/Strings.xml. \ No newline at end of file diff --git a/Source/Demos/Demo.Android/Resources/Drawable/Icon.png b/Source/Demos/Demo.Android/Resources/Drawable/Icon.png new file mode 100644 index 000000000..ce70ca50b Binary files /dev/null and b/Source/Demos/Demo.Android/Resources/Drawable/Icon.png differ diff --git a/Source/Demos/Demo.Android/Resources/Drawable/Splash.png b/Source/Demos/Demo.Android/Resources/Drawable/Splash.png new file mode 100644 index 000000000..030abcdce Binary files /dev/null and b/Source/Demos/Demo.Android/Resources/Drawable/Splash.png differ diff --git a/Source/Demos/Demo.Android/Resources/Resource.Designer.cs b/Source/Demos/Demo.Android/Resources/Resource.Designer.cs new file mode 100644 index 000000000..daf2081b3 --- /dev/null +++ b/Source/Demos/Demo.Android/Resources/Resource.Designer.cs @@ -0,0 +1,99 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +[assembly: global::Android.Runtime.ResourceDesignerAttribute("Demo.Android.Resource", IsApplication=true)] + +namespace Demo.Android +{ + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + public partial class Resource + { + + static Resource() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + public static void UpdateIdValues() + { + } + + public partial class Attribute + { + + static Attribute() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Attribute() + { + } + } + + public partial class Drawable + { + + // aapt resource value: 0x7f020000 + public const int Icon = 2130837504; + + // aapt resource value: 0x7f020001 + public const int Splash = 2130837505; + + static Drawable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Drawable() + { + } + } + + public partial class String + { + + // aapt resource value: 0x7f030001 + public const int ApplicationName = 2130903041; + + // aapt resource value: 0x7f030000 + public const int Hello = 2130903040; + + static String() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private String() + { + } + } + + public partial class Style + { + + // aapt resource value: 0x7f040000 + public const int Theme_Splash = 2130968576; + + static Style() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Style() + { + } + } + } +} +#pragma warning restore 1591 diff --git a/Source/Demos/Demo.Android/Resources/Values/Strings.xml b/Source/Demos/Demo.Android/Resources/Values/Strings.xml new file mode 100644 index 000000000..a6b7feef1 --- /dev/null +++ b/Source/Demos/Demo.Android/Resources/Values/Strings.xml @@ -0,0 +1,5 @@ + + + Hello World, Click Me! + Platformer2D + diff --git a/Source/Demos/Demo.Android/Resources/Values/Styles.xml b/Source/Demos/Demo.Android/Resources/Values/Styles.xml new file mode 100644 index 000000000..510213401 --- /dev/null +++ b/Source/Demos/Demo.Android/Resources/Values/Styles.xml @@ -0,0 +1,7 @@ + + + + diff --git a/Source/Demos/Demo.Android/packages.config b/Source/Demos/Demo.Android/packages.config new file mode 100644 index 000000000..548897611 --- /dev/null +++ b/Source/Demos/Demo.Android/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/Content/Content.mgcb b/Source/Demos/Demo.Animations/Content/Content.mgcb new file mode 100644 index 000000000..67baf7f13 --- /dev/null +++ b/Source/Demos/Demo.Animations/Content/Content.mgcb @@ -0,0 +1,28 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + diff --git a/Source/Demos/Demo.Animations/Content/logo-square-128.png b/Source/Demos/Demo.Animations/Content/logo-square-128.png new file mode 100644 index 000000000..1dbe3e85c Binary files /dev/null and b/Source/Demos/Demo.Animations/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.Animations/Demo.Animations.csproj b/Source/Demos/Demo.Animations/Demo.Animations.csproj new file mode 100644 index 000000000..ac2acd488 --- /dev/null +++ b/Source/Demos/Demo.Animations/Demo.Animations.csproj @@ -0,0 +1,134 @@ + + + + + Debug + AnyCPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4} + WinExe + Properties + Demo.Animations + Demo.Animations + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + + + + + + + + PreserveNewest + + + + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {1cf61f4f-a2ee-49bf-95d0-379e870de90e} + MonoGame.Extended.Tweening + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/Game1.cs b/Source/Demos/Demo.Animations/Game1.cs new file mode 100644 index 000000000..e7a0b47c3 --- /dev/null +++ b/Source/Demos/Demo.Animations/Game1.cs @@ -0,0 +1,98 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Animations; +using MonoGame.Extended.Tweening; +using MonoGame.Extended.Sprites; +using MonoGame.Extended.ViewportAdapters; + +namespace Demo.Animations +{ + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + private SpriteBatch _spriteBatch; + private Sprite _sprite; + private Camera2D _camera; + + public Game1() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + } + + protected override void Initialize() + { + var animationComponent = new AnimationComponent(this); + var tweenComponent = new TweeningComponent(this, animationComponent); + Components.Add(animationComponent); + Components.Add(tweenComponent); + + base.Initialize(); + } + + protected override void LoadContent() + { + _spriteBatch = new SpriteBatch(GraphicsDevice); + + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + var logoTexture = Content.Load("logo-square-128"); + + _sprite = new Sprite(logoTexture) + { + Position = viewportAdapter.Center.ToVector2(), + Scale = Vector2.One * 0.5f, + Color = new Color(Color.White, 0.0f) + }; + + CreateTweenThing(); + + } + + private void CreateTweenThing() + { + _sprite.CreateTweenChain(CreateTweenThing) + .Rotate(MathHelper.Pi, 1.0f, EasingFunctions.BounceOut) + .Scale(new Vector2(1.1f), 1.0f, EasingFunctions.BounceOut); + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var keyboardState = Keyboard.GetState(); + var mouseState = Mouse.GetState(); + + if (mouseState.LeftButton == ButtonState.Pressed) + { + _sprite + .CreateTweenGroup() + .MoveTo(new Vector2(mouseState.X, mouseState.Y), 1.0f, EasingFunctions.BounceOut); + } + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.Black); + + _spriteBatch.Begin(blendState: BlendState.AlphaBlend, transformMatrix: _camera.GetViewMatrix()); + _spriteBatch.Draw(_sprite); + _spriteBatch.End(); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/Icon.bmp b/Source/Demos/Demo.Animations/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Animations/Icon.bmp differ diff --git a/Source/Demos/Demo.Animations/Icon.ico b/Source/Demos/Demo.Animations/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Animations/Icon.ico differ diff --git a/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config b/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Animations/OpenTK.dll.config b/Source/Demos/Demo.Animations/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.Animations/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/Program.cs b/Source/Demos/Demo.Animations/Program.cs new file mode 100644 index 000000000..6075d3db2 --- /dev/null +++ b/Source/Demos/Demo.Animations/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.Animations +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Animations/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..99fa049d1 --- /dev/null +++ b/Source/Demos/Demo.Animations/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.Animations")] +[assembly: AssemblyProduct("Demo.Animations")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/app.config b/Source/Demos/Demo.Animations/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.Animations/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Animations/app.manifest b/Source/Demos/Demo.Animations/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Animations/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Animations/packages.config b/Source/Demos/Demo.Animations/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.Animations/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/Content/Content.mgcb b/Source/Demos/Demo.Batching/Content/Content.mgcb new file mode 100644 index 000000000..8ac0f99ec --- /dev/null +++ b/Source/Demos/Demo.Batching/Content/Content.mgcb @@ -0,0 +1,56 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:DesktopGL +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + +#begin logo-square-128-copy.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128-copy.png + +#begin montserrat-32.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:montserrat-32.fnt + +#begin montserrat-32_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:montserrat-32_0.png \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/Content/Thumbs.db b/Source/Demos/Demo.Batching/Content/Thumbs.db new file mode 100644 index 000000000..c77b2d752 Binary files /dev/null and b/Source/Demos/Demo.Batching/Content/Thumbs.db differ diff --git a/Source/Demos/Demo.Batching/Content/logo-square-128-copy.png b/Source/Demos/Demo.Batching/Content/logo-square-128-copy.png new file mode 100644 index 000000000..ab47b29ae Binary files /dev/null and b/Source/Demos/Demo.Batching/Content/logo-square-128-copy.png differ diff --git a/Source/Demos/Demo.Batching/Content/logo-square-128.png b/Source/Demos/Demo.Batching/Content/logo-square-128.png new file mode 100644 index 000000000..ab47b29ae Binary files /dev/null and b/Source/Demos/Demo.Batching/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.Batching/Content/montserrat-32.fnt b/Source/Demos/Demo.Batching/Content/montserrat-32.fnt new file mode 100644 index 000000000..51af461ac --- /dev/null +++ b/Source/Demos/Demo.Batching/Content/montserrat-32.fnt @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.Batching/Content/montserrat-32_0.png b/Source/Demos/Demo.Batching/Content/montserrat-32_0.png new file mode 100644 index 000000000..7ef6ac07d Binary files /dev/null and b/Source/Demos/Demo.Batching/Content/montserrat-32_0.png differ diff --git a/Source/Demos/Demo.Batching/Demo.Batching.csproj b/Source/Demos/Demo.Batching/Demo.Batching.csproj new file mode 100644 index 000000000..69ba488f2 --- /dev/null +++ b/Source/Demos/Demo.Batching/Demo.Batching.csproj @@ -0,0 +1,131 @@ + + + + + Debug + x86 + {5A251894-0462-47B6-9A63-BE26AA8CABDD} + WinExe + Properties + Demo.Batching + Demo.Batching + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + Demo.Batching.Program + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + + + + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/Game1.cs b/Source/Demos/Demo.Batching/Game1.cs new file mode 100644 index 000000000..510260274 --- /dev/null +++ b/Source/Demos/Demo.Batching/Game1.cs @@ -0,0 +1,175 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Graphics; +using MonoGame.Extended.Graphics.Effects; + +namespace Demo.Batching +{ + public struct SpriteInfo + { + public Vector2 Position; + public float Rotation; + public Color Color; + public Texture2D Texture; + public Matrix2D TransformMatrix; + } + + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + + private Batcher2D _batcher; + private SpriteBatch _spriteBatch; + private BitmapFont _bitmapFont; + private Texture2D _spriteTexture1; + private Texture2D _spriteTexture2; + private Vector2 _spriteOrigin; + private Vector2 _spriteScale; + private DefaultEffect _effect; + + private readonly Random _random = new Random(); + private readonly FramesPerSecondCounter _fpsCounter = new FramesPerSecondCounter(); + private readonly SpriteInfo[] _sprites = new SpriteInfo[2048]; + private Matrix _worldMatrix; + private Matrix _viewMatrix; + private Matrix _projectionMatrix; + + public Game1() + { + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = false; + // disable fixed time step so max frames can be measured otherwise the update & draw frames would be capped to the default 60 fps timestep + IsFixedTimeStep = false; + + _graphicsDeviceManager = new GraphicsDeviceManager(this) + { + // also disable v-sync so max frames can be measured otherwise draw frames would be capped to the screen's refresh rate + SynchronizeWithVerticalRetrace = false, + PreferredBackBufferWidth = 800, + PreferredBackBufferHeight = 600 + }; + } + + protected override void LoadContent() + { + var graphicsDevice = GraphicsDevice; + + _effect = new DefaultEffect(graphicsDevice) + { + TextureEnabled = true, + VertexColorEnabled = true + }; + _batcher = new Batcher2D(graphicsDevice); + _spriteBatch = new SpriteBatch(graphicsDevice); + _bitmapFont = Content.Load("montserrat-32"); + + // load the texture for the sprites + _spriteTexture1 = Content.Load("logo-square-128"); + _spriteTexture2 = Content.Load("logo-square-128-copy"); + _spriteOrigin = new Vector2(_spriteTexture1.Width * 0.5f, _spriteTexture1.Height * 0.5f); + _spriteScale = new Vector2(0.5f); + + var viewport = GraphicsDevice.Viewport; + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < _sprites.Length; index++) + { + var sprite = _sprites[index]; + sprite.Position = new Vector2(_random.Next(viewport.X, viewport.Width), + _random.Next(viewport.Y, viewport.Height)); + sprite.Rotation = MathHelper.ToRadians(_random.Next(0, 360)); + sprite.Texture = index % 2 == 0 ? _spriteTexture1 : _spriteTexture2; + _sprites[index] = sprite; + } + } + + protected override void Update(GameTime gameTime) + { + var keyboard = Keyboard.GetState(); + var gamePadState = GamePad.GetState(PlayerIndex.One); + + if (gamePadState.Buttons.Back == ButtonState.Pressed || keyboard.IsKeyDown(Keys.Escape)) + Exit(); + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < _sprites.Length; index++) + { + var sprite = _sprites[index]; + + if (index % 2 == 0) + sprite.Rotation = (sprite.Rotation + MathHelper.ToRadians(0.5f)) % MathHelper.TwoPi; + else + sprite.Rotation = (sprite.Rotation - MathHelper.ToRadians(0.5f) + MathHelper.TwoPi) % MathHelper.TwoPi; + + sprite.Color = ColorHelper.FromHsl(sprite.Rotation / MathHelper.TwoPi, 0.5f, 0.3f); + + sprite.TransformMatrix = Matrix2D.CreateFrom(sprite.Position, sprite.Rotation, _spriteScale, _spriteOrigin); + + _sprites[index] = sprite; + } + + _fpsCounter.Update(gameTime); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + Window.Title = _fpsCounter.FramesPerSecond.ToString(); + + var graphicsDevice = GraphicsDevice; + + graphicsDevice.Clear(Color.CornflowerBlue); + + // update the matrices + _worldMatrix = Matrix.Identity; + _viewMatrix = _effect.View = Matrix.Identity; + _projectionMatrix = _effect.Projection = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0, -1); + + // comment and uncomment either of the two below lines to compare + + DrawSpritesWithBatcher2D(); + //DrawSpritesWithSpriteBatch(); + + base.Draw(gameTime); + + _fpsCounter.Draw(gameTime); + } + + private void DrawSpritesWithBatcher2D() + { + _batcher.Begin(_viewMatrix, _projectionMatrix, effect: _effect); + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < _sprites.Length; index++) + { + var sprite = _sprites[index]; + _batcher.DrawTexture(sprite.Texture, ref sprite.TransformMatrix, sprite.Color); + } + + _batcher.End(); + } + + private void DrawSpritesWithSpriteBatch() + { + _effect.Projection = _projectionMatrix; + _effect.View = _viewMatrix; + _spriteBatch.Begin(SpriteSortMode.Texture, effect: _effect); + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < _sprites.Length; index++) + { + var sprite = _sprites[index]; + _spriteBatch.Draw(sprite.Texture, sprite.Position, null, sprite.Color, sprite.Rotation, _spriteOrigin, _spriteScale, SpriteEffects.None, 0); + } + + _spriteBatch.End(); + } + } +} diff --git a/Source/Demos/Demo.Batching/Icon.bmp b/Source/Demos/Demo.Batching/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Batching/Icon.bmp differ diff --git a/Source/Demos/Demo.Batching/Icon.ico b/Source/Demos/Demo.Batching/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Batching/Icon.ico differ diff --git a/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config b/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Batching/Program.cs b/Source/Demos/Demo.Batching/Program.cs new file mode 100644 index 000000000..102753b59 --- /dev/null +++ b/Source/Demos/Demo.Batching/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.Batching +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} diff --git a/Source/Demos/Demo.Batching/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Batching/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..de2f2070b --- /dev/null +++ b/Source/Demos/Demo.Batching/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Demo.Batching")] +[assembly: AssemblyProduct("Demo.Batching")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c9256901-9794-4cf3-baf6-8ef76a50b3a3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/Demos/Demo.Batching/SpriteMaterial.cs b/Source/Demos/Demo.Batching/SpriteMaterial.cs new file mode 100644 index 000000000..74e4017d1 --- /dev/null +++ b/Source/Demos/Demo.Batching/SpriteMaterial.cs @@ -0,0 +1,21 @@ +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Graphics; + +namespace Demo.PrimitiveBatch +{ + public class SpriteMaterial : EffectMaterial + { + public Texture2D Texture { get; } + + public SpriteMaterial(SpriteEffect effect, Texture2D texture) + : base(effect) + { + Texture = texture; + } + + public override void Apply(out Effect effect) + { + Effect.Texture = Texture; + } + } +} diff --git a/Source/Demos/Demo.Batching/app.config b/Source/Demos/Demo.Batching/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.Batching/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/app.manifest b/Source/Demos/Demo.Batching/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Batching/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Batching/packages.config b/Source/Demos/Demo.Batching/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.Batching/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.BitmapFonts/Content/Content.mgcb b/Source/Demos/Demo.BitmapFonts/Content/Content.mgcb index 4b163a4d3..5cae41951 100644 --- a/Source/Demos/Demo.BitmapFonts/Content/Content.mgcb +++ b/Source/Demos/Demo.BitmapFonts/Content/Content.mgcb @@ -55,3 +55,20 @@ /processorParam:TextureFormat=Color /build:vignette.png +#begin impact-32.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:impact-32.fnt + +#begin impact-32_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:impact-32_0.png + diff --git a/Source/Demos/Demo.BitmapFonts/Content/impact-32.fnt b/Source/Demos/Demo.BitmapFonts/Content/impact-32.fnt new file mode 100644 index 000000000..f60898eab --- /dev/null +++ b/Source/Demos/Demo.BitmapFonts/Content/impact-32.fnt @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.BitmapFonts/Content/impact-32_0.png b/Source/Demos/Demo.BitmapFonts/Content/impact-32_0.png new file mode 100644 index 000000000..e24485a56 Binary files /dev/null and b/Source/Demos/Demo.BitmapFonts/Content/impact-32_0.png differ diff --git a/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj b/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj index 5563399c2..be709bde2 100644 --- a/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj +++ b/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj @@ -22,6 +22,7 @@ 4 false false + 6 true @@ -32,38 +33,75 @@ false - Icon.ico + + - + - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + @@ -71,13 +109,15 @@ - - PreserveNewest + + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + MonoGame.Extended.Graphics + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.BitmapFonts/Game1.cs b/Source/Demos/Demo.BitmapFonts/Game1.cs deleted file mode 100644 index 627594d52..000000000 --- a/Source/Demos/Demo.BitmapFonts/Game1.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using Microsoft.Xna.Framework.Input; -using MonoGame.Extended; -using MonoGame.Extended.BitmapFonts; -using MonoGame.Extended.ViewportAdapters; - -namespace Demo.BitmapFonts -{ - public class Game1 : Game - { - private Texture2D _backgroundTexture; - private BitmapFont _bitmapFont; - private Camera2D _camera; - // ReSharper disable once NotAccessedField.Local - private GraphicsDeviceManager _graphicsDeviceManager; - private Vector2 _labelPosition = Vector2.Zero; - private string _labelText = ""; - private SpriteBatch _spriteBatch; - private ViewportAdapter _viewportAdapter; - - public Game1() - { - _graphicsDeviceManager = new GraphicsDeviceManager(this); - Content.RootDirectory = "Content"; - IsMouseVisible = true; - Window.AllowUserResizing = true; - //Window.Position = Point.Zero; - } - - protected override void LoadContent() - { - _viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); - _camera = new Camera2D(_viewportAdapter); - _backgroundTexture = Content.Load("vignette"); - _bitmapFont = Content.Load("montserrat-32"); - - _spriteBatch = new SpriteBatch(GraphicsDevice); - } - - protected override void UnloadContent() - { - } - - protected override void Update(GameTime gameTime) - { - var keyboardState = Keyboard.GetState(); - var mouseState = Mouse.GetState(); - - //if (keyboardState.IsKeyDown(Keys.Escape)) - //{ - // Exit(); - //} - - _labelText = $"{mouseState.X}, {mouseState.Y}"; - var stringRectangle = _bitmapFont.GetStringRectangle(_labelText, Vector2.Zero); - _labelPosition = new Vector2(400 - stringRectangle.Width / 2, 440); - - base.Update(gameTime); - } - - protected override void Draw(GameTime gameTime) - { - GraphicsDevice.Clear(Color.Black); - - _spriteBatch.Begin(transformMatrix: _camera.GetViewMatrix()); - _spriteBatch.Draw(_backgroundTexture, _viewportAdapter.BoundingRectangle, Color.White); - _spriteBatch.DrawString(_bitmapFont, "MonoGame.Extended BitmapFont Sample", new Vector2(50, 10), Color.White); - _spriteBatch.DrawString(_bitmapFont, "Contrary to popular belief, Lorem Ipsum is not simply random text.\n\n" + "It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard " + "McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin " + "words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, " + "discovered the undoubtable source.", new Vector2(50, 50), new Color(Color.Black, 0.5f), 750); - _spriteBatch.DrawString(_bitmapFont, _labelText, _labelPosition, Color.Black); - _spriteBatch.End(); - - base.Draw(gameTime); - } - } -} \ No newline at end of file diff --git a/Source/Demos/Demo.BitmapFonts/Game2.cs b/Source/Demos/Demo.BitmapFonts/Game2.cs new file mode 100644 index 000000000..a5a8fd71f --- /dev/null +++ b/Source/Demos/Demo.BitmapFonts/Game2.cs @@ -0,0 +1,131 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.ViewportAdapters; + +namespace Demo.BitmapFonts +{ + public class Game2 : Game + { + // ReSharper disable once NotAccessedField.Local + private GraphicsDeviceManager _graphicsDeviceManager; + private BoxingViewportAdapter _viewportAdapter; + private Texture2D _backgroundTexture; + private BitmapFont _bitmapFontImpact; + + private SpriteBatch _spriteBatch; + private BitmapFont _bitmapFontMontserrat; + private Rectangle _clippingRectangle = new Rectangle(100, 100, 300, 300); + private MouseState _previousMouseState; + + public Game2() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + //Window.Position = Point.Zero; + } + + protected override void LoadContent() + { + _viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _backgroundTexture = Content.Load("vignette"); + _bitmapFontImpact = Content.Load("impact-32"); + _bitmapFontMontserrat = Content.Load("montserrat-32"); + + _spriteBatch = new SpriteBatch(GraphicsDevice); + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var keyboardState = Keyboard.GetState(); + var mouseState = Mouse.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + var dx = mouseState.X - _previousMouseState.X; + var dy = mouseState.Y - _previousMouseState.Y; + + if (mouseState.LeftButton == ButtonState.Pressed) + { + _clippingRectangle.X += dx; + _clippingRectangle.Y += dy; + } + + if (mouseState.RightButton == ButtonState.Pressed) + { + _clippingRectangle.Width += dx; + _clippingRectangle.Height += dy; + } + + _previousMouseState = mouseState; + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.Black); + + _spriteBatch.Begin( + samplerState: SamplerState.LinearClamp, + blendState: BlendState.AlphaBlend, + transformMatrix: _viewportAdapter.GetScaleMatrix()); + _spriteBatch.Draw(_backgroundTexture, _viewportAdapter.BoundingRectangle, Color.DarkBlue); + + const string helloWorld = "The quick brown fox jumps over the lazy dog\nThe lazy dog jumps back over the quick brown fox"; + + var position = new Point2(400, 140); + var offset = new Vector2(0, 50); + var scale = Vector2.One; + var color = Color.White; + var rotation = 0;//MathHelper.Pi/64f; + + // bitmap font + var bitmapFontSize = _bitmapFontImpact.MeasureString(helloWorld); + var bitmapFontOrigin = (Point2)(bitmapFontSize / 2f); + + _spriteBatch.DrawString( + bitmapFont: _bitmapFontImpact, + text: helloWorld, + position: position + offset, + color: color, + rotation: rotation, + origin: bitmapFontOrigin, + scale: scale, + effect: SpriteEffects.None, + layerDepth: 0); + + _spriteBatch.DrawRectangle(position - bitmapFontOrigin + offset, bitmapFontSize, Color.Red); + + var bitmapFontMontserratSize = _bitmapFontMontserrat.MeasureString(helloWorld); + var bitmapFontMontserratOrigin = bitmapFontMontserratSize / 2f; + + _spriteBatch.DrawString( + bitmapFont: _bitmapFontMontserrat, + text: helloWorld, + position: position + offset * 3, + color: color, + rotation: rotation, + origin: bitmapFontMontserratOrigin, + scale: scale, + effect: SpriteEffects.None, + layerDepth: 0, + clippingRectangle: _clippingRectangle); + + _spriteBatch.DrawRectangle(_clippingRectangle, Color.White); + _spriteBatch.DrawRectangle(position - bitmapFontMontserratOrigin + offset * 3, bitmapFontMontserratSize, Color.Green); + + _spriteBatch.End(); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.BitmapFonts/Icon.bmp b/Source/Demos/Demo.BitmapFonts/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.BitmapFonts/Icon.bmp differ diff --git a/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config b/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.BitmapFonts/Program.cs b/Source/Demos/Demo.BitmapFonts/Program.cs index 063c76e9e..18adfefd7 100644 --- a/Source/Demos/Demo.BitmapFonts/Program.cs +++ b/Source/Demos/Demo.BitmapFonts/Program.cs @@ -2,12 +2,12 @@ namespace Demo.BitmapFonts { - internal static class Program + public static class Program { [STAThread] - private static void Main(string[] args) + private static void Main() { - using (var game = new Game1()) + using (var game = new Game2()) { game.Run(); } diff --git a/Source/Demos/Demo.BitmapFonts/app.config b/Source/Demos/Demo.BitmapFonts/app.config index 51278a456..5c73fc531 100644 --- a/Source/Demos/Demo.BitmapFonts/app.config +++ b/Source/Demos/Demo.BitmapFonts/app.config @@ -1,3 +1,7 @@ - + + - + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.BitmapFonts/app.manifest b/Source/Demos/Demo.BitmapFonts/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.BitmapFonts/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.BitmapFonts/packages.config b/Source/Demos/Demo.BitmapFonts/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.BitmapFonts/packages.config +++ b/Source/Demos/Demo.BitmapFonts/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Camera/Demo.Camera.csproj b/Source/Demos/Demo.Camera/Demo.Camera.csproj index f0647517a..6409c1220 100644 --- a/Source/Demos/Demo.Camera/Demo.Camera.csproj +++ b/Source/Demos/Demo.Camera/Demo.Camera.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -41,26 +42,60 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + @@ -71,6 +106,7 @@ + diff --git a/Source/Demos/Demo.Camera/Game1.cs b/Source/Demos/Demo.Camera/Game1.cs index 5a7f39c8a..16aeeb5f6 100644 --- a/Source/Demos/Demo.Camera/Game1.cs +++ b/Source/Demos/Demo.Camera/Game1.cs @@ -158,7 +158,7 @@ protected override void Draw(GameTime gameTime) } // not all sprite batches need to be affected by the camera - var rectangle = _camera.GetBoundingRectangle(); + var rectangle = _camera.BoundingRectangle; var stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"WASD: Move [{_camera.Position.X:0}, {_camera.Position.Y:0}]"); stringBuilder.AppendLine($"EQ: Rotate [{MathHelper.ToDegrees(_camera.Rotation):0.00}]"); diff --git a/Source/Demos/Demo.Camera/Icon.bmp b/Source/Demos/Demo.Camera/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Camera/Icon.bmp differ diff --git a/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config b/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Camera/app.manifest b/Source/Demos/Demo.Camera/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Camera/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Camera/packages.config b/Source/Demos/Demo.Camera/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.Camera/packages.config +++ b/Source/Demos/Demo.Camera/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Content/Content.mgcb b/Source/Demos/Demo.EntityComponentSystem/Content/Content.mgcb new file mode 100644 index 000000000..12686f98e --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/Content/Content.mgcb @@ -0,0 +1,40 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + +#begin motw.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:motw.png + diff --git a/Source/Demos/Demo.EntityComponentSystem/Content/logo-square-128.png b/Source/Demos/Demo.EntityComponentSystem/Content/logo-square-128.png new file mode 100644 index 000000000..1dbe3e85c Binary files /dev/null and b/Source/Demos/Demo.EntityComponentSystem/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.EntityComponentSystem/Content/motw.png b/Source/Demos/Demo.EntityComponentSystem/Content/motw.png new file mode 100644 index 000000000..08c0e6a15 Binary files /dev/null and b/Source/Demos/Demo.EntityComponentSystem/Content/motw.png differ diff --git a/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj b/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj new file mode 100644 index 000000000..3c921bac6 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj @@ -0,0 +1,139 @@ + + + + + Debug + AnyCPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE} + WinExe + Properties + Demo.EntityComponentSystem + Demo.EntityComponentSystem + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + + + + + + + + PreserveNewest + + + + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {35fd1f05-af04-469a-b37a-f9b36c34401c} + MonoGame.Extended.Entities + + + {6c8b9e29-d09b-4901-80fd-45aaa35882c6} + MonoGame.Extended.Particles + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Game1.cs b/Source/Demos/Demo.EntityComponentSystem/Game1.cs new file mode 100644 index 000000000..9d3d51368 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/Game1.cs @@ -0,0 +1,124 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Animations; +using MonoGame.Extended.Animations.SpriteSheets; +using MonoGame.Extended.Entities; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Entities.Systems; +using MonoGame.Extended.Particles; +using MonoGame.Extended.Particles.Modifiers; +using MonoGame.Extended.Particles.Modifiers.Containers; +using MonoGame.Extended.Particles.Modifiers.Interpolators; +using MonoGame.Extended.Particles.Profiles; +using MonoGame.Extended.Sprites; +using MonoGame.Extended.TextureAtlases; +using MonoGame.Extended.ViewportAdapters; + +namespace Demo.EntityComponentSystem +{ + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + private Camera2D _camera; + + private MonoGame.Extended.Entities.EntityComponentSystem _entityComponentSystem; + private Entity _entity; + + public Game1() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + } + + protected override void LoadContent() + { + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + _entityComponentSystem = new MonoGame.Extended.Entities.EntityComponentSystem(); + _entityComponentSystem.RegisterSystem(new SpriteBatchSystem(GraphicsDevice, _camera)); + _entityComponentSystem.RegisterSystem(new AnimatedSpriteSystem()); + _entityComponentSystem.RegisterSystem(new ParticleEmitterSystem()); + + var logoTexture = Content.Load("logo-square-128"); + _entity = _entityComponentSystem.CreateEntity("logo", new Vector2(400, 240)); + _entity.AttachComponent(new TransformableComponent(new Sprite(logoTexture))); + + var motwTexture = Content.Load("motw"); + var motwAtlas = TextureAtlas.Create("motw-atlas", motwTexture, 52, 72); + var motwAnimationFactory = new SpriteSheetAnimationFactory(motwAtlas); + motwAnimationFactory.Add("idle", new SpriteSheetAnimationData(new[] { 0 })); + motwAnimationFactory.Add("walkSouth", new SpriteSheetAnimationData(new[] { 0, 1, 2, 1 }, isLooping: false)); + motwAnimationFactory.Add("walkWest", new SpriteSheetAnimationData(new[] { 12, 13, 14, 13 }, isLooping: false)); + motwAnimationFactory.Add("walkEast", new SpriteSheetAnimationData(new[] { 24, 25, 26, 25 }, isLooping: false)); + motwAnimationFactory.Add("walkNorth", new SpriteSheetAnimationData(new[] { 36, 37, 38, 37 }, isLooping: false)); + + var animatedEntity = _entityComponentSystem.CreateEntity("animated", new Vector2(50, 50)); + animatedEntity.AttachComponent(new TransformableComponent(new AnimatedSprite(motwAnimationFactory, "walkSouth"))); + + var particleEntity = _entityComponentSystem.CreateEntity("particles", new Vector2(500, 50)); + var particleEmitter = new ParticleEmitter(new TextureRegion2D(logoTexture), 500, TimeSpan.FromSeconds(0.5f), + Profile.Point()) + { + Parameters = new ParticleReleaseParameters + { + Speed = new Range(0f, 150f), + Quantity = 30, + Rotation = new Range(-1f, 1f), + Scale = new Range(3.0f, 4.0f) + }, + Modifiers = new IModifier[] + { + new AgeModifier + { + Interpolators = new IInterpolator[] + { + new ColorInterpolator + { + InitialColor = new HslColor(0.8f, 0.8f, 0.8f), + FinalColor = new HslColor(0.5f, 0.9f, 1.0f) + } + } + }, + new RotationModifier {RotationRate = -2.1f}, + new RectangleContainerModifier {Width = 800, Height = 480}, + new LinearGravityModifier {Direction = -Vector2.UnitY, Strength = 130f} + } + }; + particleEntity.AttachComponent(new TransformableComponent(particleEmitter)); + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + _entity.Rotation += deltaTime; + _entityComponentSystem.Update(gameTime); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.Black); + + _entityComponentSystem.Draw(gameTime); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Icon.bmp b/Source/Demos/Demo.EntityComponentSystem/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.EntityComponentSystem/Icon.bmp differ diff --git a/Source/Demos/Demo.EntityComponentSystem/Icon.ico b/Source/Demos/Demo.EntityComponentSystem/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.EntityComponentSystem/Icon.ico differ diff --git a/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config b/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.EntityComponentSystem/OpenTK.dll.config b/Source/Demos/Demo.EntityComponentSystem/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Program.cs b/Source/Demos/Demo.EntityComponentSystem/Program.cs new file mode 100644 index 000000000..9c8da56e5 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.EntityComponentSystem +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Properties/AssemblyInfo.cs b/Source/Demos/Demo.EntityComponentSystem/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..e79fb4897 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.EntityComponentSystem")] +[assembly: AssemblyProduct("Demo.EntityComponentSystem")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/app.config b/Source/Demos/Demo.EntityComponentSystem/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/app.manifest b/Source/Demos/Demo.EntityComponentSystem/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.EntityComponentSystem/packages.config b/Source/Demos/Demo.EntityComponentSystem/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Content/Content.mgcb b/Source/Demos/Demo.Gui/Content/Content.mgcb new file mode 100644 index 000000000..fb1a2272b --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/Content.mgcb @@ -0,0 +1,50 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin small-font.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:small-font.fnt + +#begin small-font_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:small-font_0.png + +#begin adventure-gui.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:adventure-gui.png + +#begin adventure-gui-atlas.json +/importer:TexturePackerJsonImporter +/processor:TexturePackerProcessor +/build:adventure-gui-atlas.json + diff --git a/Source/Demos/Demo.Gui/Content/adventure-gui-atlas.json b/Source/Demos/Demo.Gui/Content/adventure-gui-atlas.json new file mode 100644 index 000000000..002a70cca --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/adventure-gui-atlas.json @@ -0,0 +1,174 @@ +{"frames": [ + +{ + "filename": "monogame-title.png", + "frame": {"x":2,"y":2,"w":504,"h":120}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":504,"h":120}, + "sourceSize": {"w":504,"h":120}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "panel_brown.png", + "frame": {"x":2,"y":124,"w":100,"h":100}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100}, + "sourceSize": {"w":100,"h":100}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "panelInset_beige.png", + "frame": {"x":104,"y":124,"w":93,"h":94}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":93,"h":94}, + "sourceSize": {"w":93,"h":94}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonLong_grey.png", + "frame": {"x":194,"y":226,"w":190,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":190,"h":49}, + "sourceSize": {"w":190,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonLong_grey_pressed.png", + "frame": {"x":2,"y":226,"w":190,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":190,"h":49}, + "sourceSize": {"w":190,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "grey_textBox.png", + "frame": {"x":246,"y":124,"w":191,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":191,"h":49}, + "sourceSize": {"w":191,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonSquare_blue.png", + "frame": {"x":439,"y":124,"w":45,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":45,"h":49}, + "sourceSize": {"w":45,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonSquare_blue_pressed.png", + "frame": {"x":199,"y":124,"w":45,"h":49}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":45,"h":49}, + "sourceSize": {"w":45,"h":49}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_close.png", + "frame": {"x":460,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_beige.png", + "frame": {"x":423,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "buttonRound_beige_checked.png", + "frame": {"x":386,"y":226,"w":35,"h":38}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":38}, + "sourceSize": {"w":35,"h":38}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "cursorSword_silver.png", + "frame": {"x":2,"y":277,"w":34,"h":37}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":34,"h":37}, + "sourceSize": {"w":34,"h":37}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "checkBox_beige_checked.png", + "frame": {"x":75,"y":277,"w":35,"h":35}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":35}, + "sourceSize": {"w":35,"h":35}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "checkBox_beige_unchecked.png", + "frame": {"x":38,"y":277,"w":35,"h":35}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":35,"h":35}, + "sourceSize": {"w":35,"h":35}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-blue.png", + "frame": {"x":188,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-green.png", + "frame": {"x":112,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-red.png", + "frame": {"x":226,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "progress-bar-container.png", + "frame": {"x":150,"y":277,"w":36,"h":18}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":36,"h":18}, + "sourceSize": {"w":36,"h":18}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "http://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "adventure-gui.png", + "format": "RGBA8888", + "size": {"w":512,"h":512}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:916ebf93558b06c639197c77d59b8bd1:47e52a3a5ea7d18877b92a0b5013fb0e:664eb9b3a42185355129a17c82b53558$" +} +} diff --git a/Source/Demos/Demo.Gui/Content/adventure-gui-skin.json b/Source/Demos/Demo.Gui/Content/adventure-gui-skin.json new file mode 100644 index 000000000..e60ffde78 --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/adventure-gui-skin.json @@ -0,0 +1,91 @@ +{ + "Name": "adventure", + "TextureAtlases": [ "adventure-gui-atlas" ], + "Fonts": [ "small-font" ], + "Cursor": { + "TextureRegion": "cursorSword_silver", + "Color": "#aaaaaa" + }, + "NinePatches": [ + { "TextureRegion": "panel_brown", "Padding": "10" }, + { "TextureRegion": "panelInset_beige", "Padding": "10" }, + { "TextureRegion": "grey_textBox", "Padding": "10" }, + { "TextureRegion": "progress-bar-container", "Padding": "10" }, + { "TextureRegion": "progress-bar-blue", "Padding": "10" } + ], + "Styles": [ + { + "Name": "close-button", + "Type": "GuiButton", + "BackgroundRegion": "buttonRound_close", + "HoverStyle": { + "Type": "GuiButton", + "Color": "LightGray" + } + }, + { + "Name": "white-button", + "Type": "GuiButton", + "BackgroundRegion": "buttonLong_grey", + "TextOffset": "0 -2", + "TextColor": "#f4a460ff", + "Color": "#8b4513ff", + "PressedStyle": { + "Type": "GuiButton", + "BackgroundRegion": "buttonLong_grey_pressed", + "TextOffset": "0 2" + }, + "HoverStyle": { + "Type": "GuiButton", + "Color": "#9E4C16ff", + "TextColor": "#ffffffff" + } + }, + { + "Name": "checkbox", + "Type": "GuiCheckBox", + "BackgroundRegion": "checkBox_beige_unchecked", + "CheckedStyle": { + "Type": "GuiCheckBox", + "BackgroundRegion": "checkBox_beige_checked" + } + }, + + { + "Name": "brown-panel", + "Type": "GuiPanel", + "BackgroundRegion": "panel_brown", + "Size": "400 300" + }, + { + "Name": "beige-inset-panel", + "Type": "GuiPanel", + "BackgroundRegion": "panelInset_beige", + "Size": "385 280" + }, + { + "Name": "label", + "Type": "GuiLabel", + "TextColor": "#444444" + }, + { + "Name": "monogame-title", + "Type": "GuiImage", + "BackgroundRegion": "monogame-title" + }, + { + "Name": "text-box", + "Type": "GuiTextBox", + "Padding": "8 0", + "BackgroundRegion": "grey_textBox", + "TextColor": "#444444" + }, + { + "Name": "progress-bar", + "Type": "GuiProgressBar", + "BackgroundRegion": "progress-bar-container", + "BarRegion": "progress-bar-blue", + "Size": "100 32" + } + ] +} \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Content/adventure-gui.png b/Source/Demos/Demo.Gui/Content/adventure-gui.png new file mode 100644 index 000000000..29291a7d0 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/adventure-gui.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/adventure-gui.tps b/Source/Demos/Demo.Gui/Content/raw/adventure/adventure-gui.tps new file mode 100644 index 000000000..efa7c9d21 --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/raw/adventure/adventure-gui.tps @@ -0,0 +1,216 @@ + + + + fileFormatVersion + 3 + texturePackerVersion + 3.9.4 + fileName + D:/Github/MonoGame.Extended/Source/Demos/Demo.Gui/Content/raw/adventure/adventure-gui.tps + autoSDSettings + + + scale + 1 + extension + + spriteFilter + + acceptFractionalValues + + maxTextureSize + + width + -1 + height + -1 + + + + allowRotation + + premultiplyAlpha + + shapeDebug + + dpi + 72 + dataFormat + json-array + textureFileName + ../../adventure-gui.png + flipPVR + + pvrCompressionQuality + PVR_QUALITY_NORMAL + atfCompressData + + mipMapMinSize + 32768 + etc1CompressionQuality + ETC1_QUALITY_LOW_PERCEPTUAL + dxtCompressionMode + DXT_PERCEPTUAL + jxrColorFormat + JXR_YUV444 + jxrTrimFlexBits + 0 + jxrCompressionLevel + 0 + ditherType + NearestNeighbour + backgroundColor + 0 + libGdx + + filtering + + x + Linear + y + Linear + + + shapePadding + 2 + jpgQuality + 80 + pngOptimizationLevel + 0 + webpQualityLevel + 101 + textureSubPath + + textureFormat + png + borderPadding + 2 + maxTextureSize + + width + 256 + height + 256 + + fixedTextureSize + + width + 512 + height + 512 + + reduceBorderArtifacts + + algorithmSettings + + algorithm + Basic + freeSizeMode + Best + sizeConstraints + AnySize + forceSquared + + forceWordAligned + + maxRects + + heuristic + Best + + basic + + sortBy + Height + order + Descending + + + andEngine + + minFilter + Linear + packageName + Texture + wrap + + s + Clamp + t + Clamp + + magFilter + MagLinear + + dataFileNames + + data + + name + ../../adventure-gui-atlas.json + + + multiPack + + forceIdenticalLayout + + outputFormat + RGBA8888 + contentProtection + + key + + + autoAliasEnabled + + trimSpriteNames + + prependSmartFolderName + + cleanTransparentPixels + + globalSpriteSettings + + scale + 1 + scaleMode + Smooth + innerPadding + 0 + extrude + 0 + trimThreshold + 1 + trimMode + None + heuristicMask + + pivotPoint + Center + + fileList + + ./ + + ignoreFileList + + replaceList + + ignoredWarnings + + commonDivisorX + 1 + commonDivisorY + 1 + packNormalMaps + + autodetectNormalMaps + + normalMapFilter + + normalMapSuffix + + normalMapSheetFileName + + + diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey.png new file mode 100644 index 000000000..b8c3fe09d Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey_pressed.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey_pressed.png new file mode 100644 index 000000000..59b14d12a Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonLong_grey_pressed.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige.png new file mode 100644 index 000000000..69cbb7ba2 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige_checked.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige_checked.png new file mode 100644 index 000000000..637341462 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_beige_checked.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_close.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_close.png new file mode 100644 index 000000000..197226a23 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonRound_close.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue.png new file mode 100644 index 000000000..c165e51f7 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue_pressed.png b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue_pressed.png new file mode 100644 index 000000000..cf2ba7ec2 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/buttonSquare_blue_pressed.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_checked.png b/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_checked.png new file mode 100644 index 000000000..320d70f27 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_checked.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_unchecked.png b/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_unchecked.png new file mode 100644 index 000000000..665e6e66d Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/checkBox_beige_unchecked.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/cursorSword_silver.png b/Source/Demos/Demo.Gui/Content/raw/adventure/cursorSword_silver.png new file mode 100644 index 000000000..1b37fe8e5 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/cursorSword_silver.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/grey_textBox.png b/Source/Demos/Demo.Gui/Content/raw/adventure/grey_textBox.png new file mode 100644 index 000000000..c423ab524 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/grey_textBox.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/monogame-title.png b/Source/Demos/Demo.Gui/Content/raw/adventure/monogame-title.png new file mode 100644 index 000000000..85e921434 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/monogame-title.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/panelInset_beige.png b/Source/Demos/Demo.Gui/Content/raw/adventure/panelInset_beige.png new file mode 100644 index 000000000..f92416fa2 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/panelInset_beige.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/panel_brown.png b/Source/Demos/Demo.Gui/Content/raw/adventure/panel_brown.png new file mode 100644 index 000000000..97c381ba6 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/panel_brown.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-blue.png b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-blue.png new file mode 100644 index 000000000..16246a515 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-blue.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-container.png b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-container.png new file mode 100644 index 000000000..b820dd5a4 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-container.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-green.png b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-green.png new file mode 100644 index 000000000..a1aed7963 Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-green.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-red.png b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-red.png new file mode 100644 index 000000000..079d3e89f Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/raw/adventure/progress-bar-red.png differ diff --git a/Source/Demos/Demo.Gui/Content/raw/small-font.bmfc b/Source/Demos/Demo.Gui/Content/raw/small-font.bmfc new file mode 100644 index 000000000..62811b5cf --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/raw/small-font.bmfc @@ -0,0 +1,55 @@ +# AngelCode Bitmap Font Generator configuration file +fileVersion=1 + +# font settings +fontName=Segoe UI Black +fontFile= +charSet=0 +fontSize=20 +aa=1 +scaleH=100 +useSmoothing=1 +isBold=1 +isItalic=0 +useUnicode=1 +disableBoxChars=1 +outputInvalidCharGlyph=0 +dontIncludeKerningPairs=0 +useHinting=1 +renderFromOutline=0 +useClearType=1 + +# character alignment +paddingDown=0 +paddingUp=0 +paddingRight=0 +paddingLeft=0 +spacingHoriz=1 +spacingVert=1 +useFixedHeight=0 +forceZero=0 + +# output file +outWidth=128 +outHeight=128 +outBitDepth=32 +fontDescFormat=1 +fourChnlPacked=0 +textureFormat=png +textureCompression=0 +alphaChnl=0 +redChnl=4 +greenChnl=4 +blueChnl=4 +invA=0 +invR=0 +invG=0 +invB=0 + +# outline +outlineThickness=0 + +# selected chars +chars=32-126 + +# imported icon images diff --git a/Source/Demos/Demo.Gui/Content/small-font.fnt b/Source/Demos/Demo.Gui/Content/small-font.fnt new file mode 100644 index 000000000..5dac6f094 --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/small-font.fnt @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.Gui/Content/small-font_0.png b/Source/Demos/Demo.Gui/Content/small-font_0.png new file mode 100644 index 000000000..088d4f64c Binary files /dev/null and b/Source/Demos/Demo.Gui/Content/small-font_0.png differ diff --git a/Source/Demos/Demo.Gui/Content/title-screen.json b/Source/Demos/Demo.Gui/Content/title-screen.json new file mode 100644 index 000000000..25149e6b2 --- /dev/null +++ b/Source/Demos/Demo.Gui/Content/title-screen.json @@ -0,0 +1,76 @@ +{ + "Skin": "Content/adventure-gui-skin.json", + "Controls": [ + { + "Type": "GuiPanel", + "Name": "MainPanel", + "Style": "brown-panel", + "Position": "400 240", + "Size": "700 380", + "Controls": [ + { + "Type": "GuiPanel", + "Style": "beige-inset-panel", + "Position": "350 190", + "Size": "680 360" + }, + { + "Name": "CloseButton", + "Type": "GuiButton", + "Style": "close-button", + "Position": "690 10" + }, + { + "Type": "GuiImage", + "Style": "monogame-title", + "Position": "350 100" + }, + { + "Name": "PlayButton", + "Type": "GuiButton", + "Style": "white-button", + "Position": "350 190", + "Text": "Play" + }, + { + "Name": "QuitButton", + "Type": "GuiButton", + "Style": "white-button", + "Position": "350 240", + "Text": "Quit" + }, + { + "Name": "EmailLabel", + "Style": "label", + "Type": "GuiLabel", + "Position": "350 315", + "Text": "email" + }, + { + "Name": "EmailTextBox", + "Type": "GuiTextBox", + "Style": "text-box", + "Position": "350 345", + "Size": "300 42", + "Text": "Let's put some really long text in the textbox to test the clipping area" + }, + { + "Name": "CheckBox", + "Type": "GuiCheckBox", + "Style": "checkbox", + "Position": "350 285", + "Size": "250 35", + "Text": "sign me up to all the things", + "TextColor": "#444444" + }, + { + "Name": "ProgressBar", + "Type": "GuiProgressBar", + "Style": "progress-bar", + "Position": "100 300", + "Progress": 0.5 + } + ] + } + ] +} diff --git a/Source/Demos/Demo.Gui/Demo.Gui.csproj b/Source/Demos/Demo.Gui/Demo.Gui.csproj new file mode 100644 index 000000000..51aca5af4 --- /dev/null +++ b/Source/Demos/Demo.Gui/Demo.Gui.csproj @@ -0,0 +1,160 @@ + + + + + Debug + AnyCPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C} + WinExe + Properties + Demo.Gui + Demo.Gui + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + PreserveNewest + + + + + + PreserveNewest + + + + + + + + + + PreserveNewest + + + + + {8e425575-378a-4f83-88c9-f8bebad227c9} + MonoGame.Extended.Gui + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Game1.cs b/Source/Demos/Demo.Gui/Game1.cs new file mode 100644 index 000000000..818ddb55f --- /dev/null +++ b/Source/Demos/Demo.Gui/Game1.cs @@ -0,0 +1,106 @@ +using System; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Gui; +using MonoGame.Extended.Gui.Controls; +using MonoGame.Extended.Gui.Serialization; +using MonoGame.Extended.ViewportAdapters; +using Newtonsoft.Json; + +namespace Demo.Gui +{ + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + private Camera2D _camera; + private GuiSystem _guiSystem; + private GuiProgressBar _progressBar; + private float _progressDelta = 0.2f; + + public Game1() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = false; + Window.AllowUserResizing = true; + } + + protected override void LoadContent() + { + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + var titleScreen = LoadScreen(@"Content/title-screen.json"); + var guiRenderer = new GuiSpriteBatchRenderer(GraphicsDevice, titleScreen.Skin.DefaultFont, _camera.GetViewMatrix); + _guiSystem = new GuiSystem(viewportAdapter, guiRenderer) { Screen = titleScreen }; + + var panel = titleScreen.FindControl("MainPanel"); + + var closeButton = titleScreen.FindControl("CloseButton"); + closeButton.Clicked += (sender, args) => { panel.IsVisible = false; }; + + var quitButton = titleScreen.FindControl("QuitButton"); + quitButton.Clicked += (sender, args) => Exit(); + + _progressBar = titleScreen.FindControl("ProgressBar"); + + } + + private GuiScreen LoadScreen(string name) + { + var skinService = new GuiSkinService(); + var serializer = new GuiJsonSerializer(Content) + { + Converters = + { + new GuiSkinJsonConverter(Content, skinService), + new GuiControlJsonConverter(skinService) + } + }; + + using (var stream = TitleContainer.OpenStream(name)) + using (var streamReader = new StreamReader(stream)) + using (var jsonReader = new JsonTextReader(streamReader)) + { + var screen = serializer.Deserialize(jsonReader); + return screen; + } + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + _progressBar.Progress += deltaTime * _progressDelta; + + if (_progressBar.Progress >= 1.1f) + _progressDelta = -_progressDelta; + else if (_progressBar.Progress <= -0.1f) + _progressDelta = -_progressDelta; + + _guiSystem.Update(gameTime); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + base.Draw(gameTime); + + GraphicsDevice.Clear(Color.CornflowerBlue); + + _guiSystem.Draw(gameTime); + } + } +} diff --git a/Source/Demos/Demo.Gui/Icon.bmp b/Source/Demos/Demo.Gui/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Gui/Icon.bmp differ diff --git a/Source/Demos/Demo.Gui/Icon.ico b/Source/Demos/Demo.Gui/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Gui/Icon.ico differ diff --git a/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config b/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Gui/OpenTK.dll.config b/Source/Demos/Demo.Gui/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.Gui/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Program.cs b/Source/Demos/Demo.Gui/Program.cs new file mode 100644 index 000000000..2cece84ff --- /dev/null +++ b/Source/Demos/Demo.Gui/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.Gui +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Gui/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..c970acdc8 --- /dev/null +++ b/Source/Demos/Demo.Gui/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.Gui")] +[assembly: AssemblyProduct("Demo.Gui")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/app.config b/Source/Demos/Demo.Gui/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.Gui/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/app.manifest b/Source/Demos/Demo.Gui/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Gui/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Gui/packages.config b/Source/Demos/Demo.Gui/packages.config new file mode 100644 index 000000000..e6cd2b7c0 --- /dev/null +++ b/Source/Demos/Demo.Gui/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj b/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj index c388e89de..6e0418e50 100644 --- a/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj +++ b/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -41,30 +42,65 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + @@ -76,6 +112,10 @@ + + {49c87598-994c-49b5-bbb3-7ffc342635d3} + MonoGame.Extended.Input + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.InputListeners/Game1.cs b/Source/Demos/Demo.InputListeners/Game1.cs index 59d841f4e..7d7547458 100644 --- a/Source/Demos/Demo.InputListeners/Game1.cs +++ b/Source/Demos/Demo.InputListeners/Game1.cs @@ -4,7 +4,7 @@ using Microsoft.Xna.Framework.Input; using MonoGame.Extended; using MonoGame.Extended.BitmapFonts; -using MonoGame.Extended.InputListeners; +using MonoGame.Extended.Input.InputListeners; using MonoGame.Extended.ViewportAdapters; namespace Demo.InputListeners @@ -17,7 +17,6 @@ public class Game1 : Game private SpriteBatch _spriteBatch; private Texture2D _backgroundTexture; private BitmapFont _bitmapFont; - private InputListenerManager _inputManager; private string _typedString = string.Empty; private bool _isCursorVisible = true; private const float _cursorBlinkDelay = 0.5f; @@ -35,9 +34,10 @@ public Game1() protected override void Initialize() { - _inputManager = new InputListenerManager(); - var mouseListener = _inputManager.AddListener(new MouseListenerSettings()); - var keyboardListener = _inputManager.AddListener(new KeyboardListenerSettings()); + var mouseListener = new MouseListener(new MouseListenerSettings()); + var keyboardListener = new KeyboardListener(new KeyboardListenerSettings()); + + Components.Add(new InputListenerComponent(this, mouseListener, keyboardListener)); keyboardListener.KeyPressed += (sender, args) => { @@ -112,8 +112,6 @@ protected override void Update(GameTime gameTime) _cursorBlinkDelta = _cursorBlinkDelay; } - _inputManager.Update(gameTime); - base.Update(gameTime); } @@ -129,10 +127,10 @@ protected override void Draw(GameTime gameTime) } var textInputY = 14 * _bitmapFont.LineHeight - 2; - var position = new Vector2(4, textInputY); + var position = new Point(4, textInputY); var stringRectangle = _bitmapFont.GetStringRectangle(_typedString, position); - _spriteBatch.DrawString(_bitmapFont, _typedString, position, Color.White); + _spriteBatch.DrawString(_bitmapFont, _typedString, position.ToVector2(), Color.White); if (_isCursorVisible) _spriteBatch.DrawString(_bitmapFont, "_", new Vector2(stringRectangle.Width, textInputY), Color.White); diff --git a/Source/Demos/Demo.InputListeners/Icon.bmp b/Source/Demos/Demo.InputListeners/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.InputListeners/Icon.bmp differ diff --git a/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config b/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.InputListeners/app.manifest b/Source/Demos/Demo.InputListeners/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.InputListeners/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.InputListeners/packages.config b/Source/Demos/Demo.InputListeners/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.InputListeners/packages.config +++ b/Source/Demos/Demo.InputListeners/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Content/Content.mgcb b/Source/Demos/Demo.NuclexGui/Content/Content.mgcb new file mode 100644 index 000000000..6292aca7b --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Content/Content.mgcb @@ -0,0 +1,52 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + +#begin DefaultFont.spritefont +/importer:FontDescriptionImporter +/processor:FontDescriptionProcessor +/processorParam:TextureFormat=Compressed +/build:DefaultFont.spritefont + +#begin SuaveSheet.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:SuaveSheet.png + +#begin TitleFont.spritefont +/importer:FontDescriptionImporter +/processor:FontDescriptionProcessor +/processorParam:TextureFormat=Compressed +/build:TitleFont.spritefont + diff --git a/Source/Demos/Demo.NuclexGui/Content/DefaultFont.spritefont b/Source/Demos/Demo.NuclexGui/Content/DefaultFont.spritefont new file mode 100644 index 000000000..df6b506af --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Content/DefaultFont.spritefont @@ -0,0 +1,60 @@ + + + + + + + Corbel + + + 12 + + + 0 + + + true + + + + + + ? + + + + + + ~ + + + + diff --git a/Source/Demos/Demo.NuclexGui/Content/SuaveSheet.png b/Source/Demos/Demo.NuclexGui/Content/SuaveSheet.png new file mode 100644 index 000000000..efe8b6c75 Binary files /dev/null and b/Source/Demos/Demo.NuclexGui/Content/SuaveSheet.png differ diff --git a/Source/Demos/Demo.NuclexGui/Content/TitleFont.spritefont b/Source/Demos/Demo.NuclexGui/Content/TitleFont.spritefont new file mode 100644 index 000000000..540677fa5 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Content/TitleFont.spritefont @@ -0,0 +1,60 @@ + + + + + + + Corbel + + + 14 + + + 0 + + + true + + + + + + ? + + + + + + ~ + + + + diff --git a/Source/Demos/Demo.NuclexGui/Content/logo-square-128.png b/Source/Demos/Demo.NuclexGui/Content/logo-square-128.png new file mode 100644 index 000000000..1dbe3e85c Binary files /dev/null and b/Source/Demos/Demo.NuclexGui/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj b/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj new file mode 100644 index 000000000..a8eaddbb5 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj @@ -0,0 +1,137 @@ + + + + + Debug + AnyCPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC} + WinExe + Properties + Demo.NuclexGui + Demo.NuclexGui + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + + + + + + + + + + PreserveNewest + + + + + {49c87598-994c-49b5-bbb3-7ffc342635d3} + MonoGame.Extended.Input + + + {d8bc4f21-e71d-46ce-b6d3-259f1e0dfaba} + MonoGame.Extended.NuclexGui + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Game1.cs b/Source/Demos/Demo.NuclexGui/Game1.cs new file mode 100644 index 000000000..2742fa858 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Game1.cs @@ -0,0 +1,222 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.Sprites; +using MonoGame.Extended.ViewportAdapters; +using MonoGame.Extended.NuclexGui; +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace Demo.NuclexGui +{ + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + private SpriteBatch _spriteBatch; + private Sprite _sprite; + private Camera2D _camera; + + private readonly InputListenerComponent _inputManager; + private readonly GuiManager _gui; + private int _rotateDirection = 1; + private Color _backgroundColor; + + public Game1() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + _backgroundColor = Color.Black; + + // First, we create an input manager. + _inputManager = new InputListenerComponent(this); + + // Then, we create GUI. + var guiInputService = new GuiInputService(_inputManager); + _gui = new GuiManager(Services, guiInputService); + } + + protected override void Initialize() + { + base.Initialize(); + + // Create a GUI screen and attach it as a default to GuiManager. + // That screen will also act as a root parent for every other control that we create. + _gui.Screen = new GuiScreen(800, 480); + _gui.Screen.Desktop.Bounds = new UniRectangle(new UniScalar(0f, 0), new UniScalar(0f, 0), new UniScalar(1f, 0), new UniScalar(1f, 0)); + + // Perform second-stage initialization + _gui.Initialize(); + + // Create few controls. + var button = new GuiButtonControl + { + Name = "button", + Bounds = new UniRectangle(new UniScalar(0.0f, 20), new UniScalar(0.0f, 20), new UniScalar(0f, 120), new UniScalar(0f, 50)), + Text = "Rotate logo" + }; + var button2 = new GuiButtonControl + { + Name = "button2", + Bounds = new UniRectangle(new UniScalar(20), new UniScalar(80), new UniScalar(120), new UniScalar(50)), + Text = "Open Window" + }; + + // Attach relevant events + button.Pressed += Button_Pressed; + button2.Pressed += Button2_Pressed; + + // And finally, attach controls to the parent control. In this case, desktop screen. + _gui.Screen.Desktop.Children.Add(button); + _gui.Screen.Desktop.Children.Add(button2); + } + + private void Button2_Pressed(object sender, System.EventArgs e) + { + var window = new GuiWindowControl + { + Name = "window", + Bounds = new UniRectangle(new UniVector(new UniScalar(0.5f, -100), new UniScalar(0.5f, -60)), new UniVector(new UniScalar(200), new UniScalar(120))), + Title = "Color picker", + EnableDragging = true + }; + + var choice1 = new GuiChoiceControl + { + Name = "choiceBlack", + Bounds = new UniRectangle(new UniScalar(0.0f, 10), new UniScalar(0.0f, 30), new UniScalar(10), new UniScalar(10)), + Text = "Black", + Selected = true + }; + var choice2 = new GuiChoiceControl + { + Name = "choiceGray", + Bounds = new UniRectangle(new UniScalar(0.0f, 10), new UniScalar(0.0f, 45), new UniScalar(10), new UniScalar(10)), + Text = "Gray", + Selected = false + }; + var choice3 = new GuiChoiceControl + { + Name = "choiceWhite", + Bounds = new UniRectangle(new UniScalar(0.0f, 10), new UniScalar(0.0f, 60), new UniScalar(10), new UniScalar(10)), + Text = "White", + Selected = false + }; + var button1 = new GuiButtonControl + { + Name = "confirm", + Bounds = new UniRectangle(new UniScalar(0.0f, 10), new UniScalar(1.0f, -40), new UniScalar(0f, 80), new UniScalar(0f, 30)), + Text = "Confirm" + }; + var button2 = new GuiButtonControl + { + Name = "cancel", + Bounds = new UniRectangle(new UniScalar(1.0f, -90), new UniScalar(1.0f, -40), new UniScalar(0f, 80), new UniScalar(0f, 30)), + Text = "Cancel" + }; + + button1.Pressed += DialogueConfirm_Pressed; + button2.Pressed += DialogueCancel_Pressed; + + window.Children.Add(choice1); + window.Children.Add(choice2); + window.Children.Add(choice3); + window.Children.Add(button1); + window.Children.Add(button2); + + _gui.Screen.Desktop.Children.Add(window); + } + + private void DialogueCancel_Pressed(object sender, System.EventArgs e) + { + _gui.Screen.Desktop.Children.Remove(((GuiButtonControl)sender).Parent); + } + + private void DialogueConfirm_Pressed(object sender, System.EventArgs e) + { + foreach (var control in ((GuiButtonControl)sender).Parent.Children) + { + if (control.GetType() == typeof(GuiChoiceControl)) + { + var radiobutton = (GuiChoiceControl)control; + + if (radiobutton.Selected) + switch (radiobutton.Name) + { + case "choiceGray": + _backgroundColor = Color.Gray; + break; + + case "choiceWhite": + _backgroundColor = Color.White; + break; + + default: + _backgroundColor = Color.Black; + break; + } + } + } + + _gui.Screen.Desktop.Children.Remove(((GuiButtonControl)sender).Parent); + } + + private void Button_Pressed(object sender, System.EventArgs e) + { + _rotateDirection *= -1; + } + + protected override void LoadContent() + { + _spriteBatch = new SpriteBatch(GraphicsDevice); + + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + var logoTexture = Content.Load("logo-square-128"); + _sprite = new Sprite(logoTexture) + { + Position = viewportAdapter.Center.ToVector2() + }; + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + // Update both InputManager (which updates states of each device) and GUI + _inputManager.Update(gameTime); + _gui.Update(gameTime); + + _sprite.Rotation += deltaTime * _rotateDirection; + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(_backgroundColor); + + _spriteBatch.Begin(blendState: BlendState.AlphaBlend, transformMatrix: _camera.GetViewMatrix()); + + _spriteBatch.Draw(_sprite); + _spriteBatch.End(); + + // Draw GUI on top of everything + _gui.Draw(gameTime); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Icon.bmp b/Source/Demos/Demo.NuclexGui/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.NuclexGui/Icon.bmp differ diff --git a/Source/Demos/Demo.NuclexGui/Icon.ico b/Source/Demos/Demo.NuclexGui/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.NuclexGui/Icon.ico differ diff --git a/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config b/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.NuclexGui/OpenTK.dll.config b/Source/Demos/Demo.NuclexGui/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Program.cs b/Source/Demos/Demo.NuclexGui/Program.cs new file mode 100644 index 000000000..a10075c38 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.NuclexGui +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Properties/AssemblyInfo.cs b/Source/Demos/Demo.NuclexGui/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..aaf807fde --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.NuclexGui")] +[assembly: AssemblyProduct("Demo.NuclexGui")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/app.config b/Source/Demos/Demo.NuclexGui/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/app.manifest b/Source/Demos/Demo.NuclexGui/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.NuclexGui/packages.config b/Source/Demos/Demo.NuclexGui/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Particles/Content/Content.mgcb b/Source/Demos/Demo.Particles/Content/Content.mgcb index 67baf7f13..16110b8ef 100644 --- a/Source/Demos/Demo.Particles/Content/Content.mgcb +++ b/Source/Demos/Demo.Particles/Content/Content.mgcb @@ -3,7 +3,7 @@ /outputDir:bin/$(Platform) /intermediateDir:obj/$(Platform) -/platform:Windows +/platform:DesktopGL /config: /profile:Reach /compress:False diff --git a/Source/Demos/Demo.Particles/Demo.Particles.csproj b/Source/Demos/Demo.Particles/Demo.Particles.csproj index 5ac51eb00..e28b4f24b 100644 --- a/Source/Demos/Demo.Particles/Demo.Particles.csproj +++ b/Source/Demos/Demo.Particles/Demo.Particles.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -41,27 +42,62 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + @@ -73,6 +109,10 @@ + + {6c8b9e29-d09b-4901-80fd-45aaa35882c6} + MonoGame.Extended.Particles + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.Particles/Game1.cs b/Source/Demos/Demo.Particles/Game1.cs index 0db624222..d098e9dec 100644 --- a/Source/Demos/Demo.Particles/Game1.cs +++ b/Source/Demos/Demo.Particles/Game1.cs @@ -6,6 +6,7 @@ using MonoGame.Extended.Particles; using MonoGame.Extended.Particles.Modifiers; using MonoGame.Extended.Particles.Modifiers.Containers; +using MonoGame.Extended.Particles.Modifiers.Interpolators; using MonoGame.Extended.Particles.Profiles; using MonoGame.Extended.Sprites; using MonoGame.Extended.TextureAtlases; @@ -28,6 +29,7 @@ public Game1() Content.RootDirectory = "Content"; IsMouseVisible = true; Window.AllowUserResizing = true; + Window.Position = Point.Zero; } protected override void LoadContent() @@ -67,7 +69,7 @@ protected override void Update(GameTime gameTime) _particleEffect.Update(deltaTime); - if(mouseState.LeftButton == ButtonState.Pressed) + if (mouseState.LeftButton == ButtonState.Pressed) _particleEffect.Trigger(new Vector2(p.X, p.Y)); _particleEffect.Trigger(new Vector2(400, 240)); @@ -78,7 +80,7 @@ protected override void Update(GameTime gameTime) protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.Black); - + _spriteBatch.Begin(blendState: BlendState.AlphaBlend, transformMatrix: _camera.GetViewMatrix()); _spriteBatch.Draw(_particleEffect); _spriteBatch.Draw(_sprite); @@ -93,22 +95,27 @@ private void ParticleInit(TextureRegion2D textureRegion) { Emitters = new[] { - new ParticleEmitter(500, TimeSpan.FromSeconds(2.5), Profile.Ring(150f, Profile.CircleRadiation.In)) + new ParticleEmitter(textureRegion, 500, TimeSpan.FromSeconds(2.5), Profile.Ring(150f, Profile.CircleRadiation.In)) { - TextureRegion = textureRegion, Parameters = new ParticleReleaseParameters { - Speed = new RangeF(50, 0f), + Speed = new Range(0f, 50f), Quantity = 3, - Rotation = new RangeF(-1f, 1f), - Scale = new RangeF(3.0f, 4.0f) + Rotation = new Range(-1f, 1f), + Scale = new Range(3.0f, 4.0f) }, Modifiers = new IModifier[] { - new ColorInterpolator2 { InitialColor = new HslColor(0.33f, 0.5f, 0.5f), FinalColor = new HslColor(0.5f, 0.9f, 1.0f) }, + new AgeModifier + { + Interpolators = new IInterpolator[] + { + new ColorInterpolator { InitialColor = new HslColor(0.33f, 0.5f, 0.5f), FinalColor = new HslColor(0.5f, 0.9f, 1.0f) } + } + }, new RotationModifier { RotationRate = -2.1f }, new RectangleContainerModifier { Width = 800, Height = 480 }, - new LinearGravityModifier { Direction = Axis.Up, Strength = 30f } + new LinearGravityModifier { Direction = -Vector2.UnitY, Strength = 30f } } } } diff --git a/Source/Demos/Demo.Particles/Icon.bmp b/Source/Demos/Demo.Particles/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Particles/Icon.bmp differ diff --git a/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config b/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Particles/app.manifest b/Source/Demos/Demo.Particles/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Particles/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Particles/packages.config b/Source/Demos/Demo.Particles/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.Particles/packages.config +++ b/Source/Demos/Demo.Particles/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Content/Content.mgcb b/Source/Demos/Demo.Platformer/Content/Content.mgcb new file mode 100644 index 000000000..cc8aa00d7 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Content/Content.mgcb @@ -0,0 +1,70 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll +/reference:../../../MonoGame.Extended.Content.Pipeline.Tiled/bin/MonoGame.Extended.Content.Pipeline.Tiled.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + +#begin level-1.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level-1.tmx + +#begin tiny-characters.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:tiny-characters.png + +#begin tiny-tiles.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:tiny-tiles.png + +#begin tiny-grey-cloud.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:tiny-grey-cloud.png + diff --git a/Source/Demos/Demo.Platformer/Content/level-1.tmx b/Source/Demos/Demo.Platformer/Content/level-1.tmx new file mode 100644 index 000000000..6e5ef0e3b --- /dev/null +++ b/Source/Demos/Demo.Platformer/Content/level-1.tmx @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + gQEAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAuAAAALwAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC0AAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAACBAQAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACsAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAArAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAAgQEAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAIEBAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAC4AAAAvAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAIEBAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAA + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlAAAAYgAAAGMAAABkAAAAAAAAAAAAAAAAAAAAAAAAAGUAAABjAAAAYwAAAGMAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAFgAAABaAAAAcQAAAAAAAAAAAAAAAAAAAAAAAABhAAAAWAAAAFgAAABYAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAGMAAABiAAAAYwAAAGMAAABiAAAAYwAAAGcAAABaAAAAWAAAAHEAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAFgAAABYAAAAWQAAAGYAAABjAAAAYwAAAGIAAABjAAAAYwAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABaAAAAWAAAAFgAAABxAAAAAAAAAAAAAAAAAAAAAAAAAGEAAABYAAAAWAAAAFoAAABYAAAAWAAAAFgAAABYAAAAWAAAAFoAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFkAAABYAAAAZgAAAGMAAABjAAAAYgAAAGMAAABnAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABaAAAAWAAAAFoAAABZAAAAWAAAAFgAAABYAAAAWQAAAFgAAABYAAAAWQAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFoAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABaAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWgAAAFgAAABYAAAAWAAAAFgAAABZAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAA + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + + + + + + + + + + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAMgAAADIAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + diff --git a/Source/Demos/Demo.Platformer/Content/logo-square-128.png b/Source/Demos/Demo.Platformer/Content/logo-square-128.png new file mode 100644 index 000000000..1dbe3e85c Binary files /dev/null and b/Source/Demos/Demo.Platformer/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.Platformer/Content/tiny-characters.png b/Source/Demos/Demo.Platformer/Content/tiny-characters.png new file mode 100644 index 000000000..f53210572 Binary files /dev/null and b/Source/Demos/Demo.Platformer/Content/tiny-characters.png differ diff --git a/Source/Demos/Demo.Platformer/Content/tiny-grey-cloud.png b/Source/Demos/Demo.Platformer/Content/tiny-grey-cloud.png new file mode 100644 index 000000000..25a0db929 Binary files /dev/null and b/Source/Demos/Demo.Platformer/Content/tiny-grey-cloud.png differ diff --git a/Source/Demos/Demo.Platformer/Content/tiny-tiles.png b/Source/Demos/Demo.Platformer/Content/tiny-tiles.png new file mode 100644 index 000000000..5d09ebf25 Binary files /dev/null and b/Source/Demos/Demo.Platformer/Content/tiny-tiles.png differ diff --git a/Source/Demos/Demo.Platformer/Demo.Platformer.csproj b/Source/Demos/Demo.Platformer/Demo.Platformer.csproj new file mode 100644 index 000000000..4d3b08f27 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Demo.Platformer.csproj @@ -0,0 +1,164 @@ + + + + + Debug + AnyCPU + {A7A5E924-A49D-4052-ACA2-894161007B00} + WinExe + Properties + Demo.Platformer + Demo.Platformer + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + + + + + + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + + + + + + + + + PreserveNewest + + + + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {35fd1f05-af04-469a-b37a-f9b36c34401c} + MonoGame.Extended.Entities + + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + + + {6c8b9e29-d09b-4901-80fd-45aaa35882c6} + MonoGame.Extended.Particles + + + {07b2ade2-73e3-41c4-aea1-d5566a5ab902} + MonoGame.Extended.Tiled + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionBody.cs b/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionBody.cs new file mode 100644 index 000000000..a68c5d64b --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionBody.cs @@ -0,0 +1,23 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended; +using MonoGame.Extended.Entities.Components; + +namespace Demo.Platformer.Entities.Components +{ + public class BasicCollisionBody : EntityComponent + { + public Vector2 Velocity { get; set; } + public Size2 Size { get; set; } + public Vector2 Origin { get; set; } + public RectangleF BoundingRectangle => new RectangleF(Entity.Position - Size * Origin, Size); + public bool IsStatic { get; set; } + public object Tag { get; set; } + + public BasicCollisionBody(Size2 size, Vector2 origin) + { + Size = size; + Origin = origin; + IsStatic = false; + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionHandler.cs b/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionHandler.cs new file mode 100644 index 000000000..c97f5b366 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/BasicCollisionHandler.cs @@ -0,0 +1,33 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Components; + +namespace Demo.Platformer.Entities.Components +{ + public class BasicCollisionHandler : EntityComponent + { + public virtual void OnCollision(BasicCollisionBody bodyA, BasicCollisionBody bodyB, Vector2 depth) + { + var characterState = bodyA.Entity.GetComponent(); + var absDepthX = Math.Abs(depth.X); + var absDepthY = Math.Abs(depth.Y); + + if (absDepthY < absDepthX) + { + bodyA.Entity.Position += new Vector2(0, depth.Y); // move the player out of the ground or roof + var isOnGround = bodyA.Velocity.Y > 0; + + if (isOnGround) + { + bodyA.Velocity = new Vector2(bodyA.Velocity.X, 0); // set y velocity to zero only if this is a ground collision + characterState.IsJumping = false; + } + } + else + { + bodyA.Entity.Position += new Vector2(depth.X, 0); // move the player out of the wall + bodyA.Velocity = new Vector2(bodyA.Velocity.X, bodyA.Velocity.Y < 0 ? 0 : bodyA.Velocity.Y); // drop the player down if they hit a wall + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/CharacterState.cs b/Source/Demos/Demo.Platformer/Entities/Components/CharacterState.cs new file mode 100644 index 000000000..08b562cc9 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/CharacterState.cs @@ -0,0 +1,17 @@ +using MonoGame.Extended.Entities.Components; + +namespace Demo.Platformer.Entities.Components +{ + public class CharacterState : EntityComponent + { + public CharacterState() + { + HealthPoints = 3; + IsJumping = false; + } + + public int HealthPoints { get; set; } + public bool IsJumping { get; set; } + public bool IsAlive => HealthPoints > 0; + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/EnemyAi.cs b/Source/Demos/Demo.Platformer/Entities/Components/EnemyAi.cs new file mode 100644 index 000000000..a2da18eb1 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/EnemyAi.cs @@ -0,0 +1,20 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended; +using MonoGame.Extended.Entities.Components; + +namespace Demo.Platformer.Entities.Components +{ + public class EnemyAi : EntityComponent, IMovable + { + public EnemyAi() + { + Direction = new Vector2(30, 0); + WalkTime = 4.0f; + WalkTimeRemaining = WalkTime; + } + + public Vector2 Direction { get; set; } + public float WalkTime { get; set; } + public float WalkTimeRemaining { get; set; } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/EnemyCollisionHandler.cs b/Source/Demos/Demo.Platformer/Entities/Components/EnemyCollisionHandler.cs new file mode 100644 index 000000000..96e7bc71a --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/EnemyCollisionHandler.cs @@ -0,0 +1,30 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities; + +namespace Demo.Platformer.Entities.Components +{ + public class EnemyCollisionHandler : BasicCollisionHandler + { + public override void OnCollision(BasicCollisionBody bodyA, BasicCollisionBody bodyB, Vector2 depth) + { + var player = GetEntityByTag(bodyA.Entity, bodyB.Entity, Entities.Player); + var enemy = GetEntityByTag(bodyA.Entity, bodyB.Entity, "BadGuy"); + + if (player != null && enemy != null) + { + enemy.GetComponent().HealthPoints = 0; + player.GetComponent().HealthPoints = 0; + } + + base.OnCollision(bodyA, bodyB, depth); + } + + private static Entity GetEntityByTag(Entity entityA, Entity entityB, string tagName) + { + if ((string) entityA.Tag == tagName) + return entityA; + + return (string) entityB.Tag == tagName ? entityB : null; + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Components/PlayerCollisionHandler.cs b/Source/Demos/Demo.Platformer/Entities/Components/PlayerCollisionHandler.cs new file mode 100644 index 000000000..ddc1829ea --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Components/PlayerCollisionHandler.cs @@ -0,0 +1,22 @@ +using System; +using System.Diagnostics; +using Microsoft.Xna.Framework; + +namespace Demo.Platformer.Entities.Components +{ + public class PlayerCollisionHandler : BasicCollisionHandler + { + public override void OnCollision(BasicCollisionBody bodyA, BasicCollisionBody bodyB, Vector2 depth) + { + var characterState = bodyA.Entity.GetComponent(); + + if ((string) bodyB.Tag == "Deadly") + { + characterState.HealthPoints = 0; + return; + } + + base.OnCollision(bodyA, bodyB, depth); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/EntityFactory.cs b/Source/Demos/Demo.Platformer/Entities/EntityFactory.cs new file mode 100644 index 000000000..f36986da7 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/EntityFactory.cs @@ -0,0 +1,121 @@ +using System; +using Demo.Platformer.Entities.Components; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended; +using MonoGame.Extended.Animations; +using MonoGame.Extended.Animations.SpriteSheets; +using MonoGame.Extended.Entities; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Particles; +using MonoGame.Extended.Particles.Modifiers; +using MonoGame.Extended.Particles.Profiles; +using MonoGame.Extended.Sprites; +using MonoGame.Extended.TextureAtlases; + +namespace Demo.Platformer.Entities +{ + public static class Entities + { + public const string Player = "Player"; + } + + public class EntityFactory + { + private readonly EntityComponentSystem _entityComponentSystem; + private TextureAtlas _characterTextureAtlas; + + public EntityFactory(EntityComponentSystem entityComponentSystem, ContentManager contentManager) + { + _entityComponentSystem = entityComponentSystem; + + LoadContent(contentManager); + } + + private void LoadContent(ContentManager content) + { + var texture = content.Load("tiny-characters"); + _characterTextureAtlas = TextureAtlas.Create("tiny-characters-atlas", texture, 32, 32, 112); + } + + public Entity CreatePlayer(Vector2 position) + { + var entity = _entityComponentSystem.CreateEntity(Entities.Player, position); + var textureRegion = _characterTextureAtlas[0]; + var animationFactory = new SpriteSheetAnimationFactory(_characterTextureAtlas); + + animationFactory.Add("idle", new SpriteSheetAnimationData(new[] { 12, 13 }, 1.0f)); + animationFactory.Add("walk", new SpriteSheetAnimationData(new[] { 0, 1, 2, 3 })); + animationFactory.Add("jump", new SpriteSheetAnimationData(new[] { 8, 9 }, isLooping: false)); + + entity.AttachComponent(new TransformableComponent(new AnimatedSprite(animationFactory))); + entity.AttachComponent(new BasicCollisionBody(textureRegion.Size, Vector2.One * 0.5f)); + entity.AttachComponent(new PlayerCollisionHandler()); + entity.AttachComponent(new CharacterState()); + entity.Tag = Entities.Player; + + return entity; + } + + public Entity CreateSolid(Vector2 position, Size2 size) + { + var entity = _entityComponentSystem.CreateEntity(position); + entity.AttachComponent(new BasicCollisionBody(size, Vector2.Zero) { IsStatic = true }); + return entity; + } + + public Entity CreateDeadly(Vector2 position, Size2 size) + { + var entity = _entityComponentSystem.CreateEntity(position); + entity.AttachComponent(new BasicCollisionBody(size, Vector2.Zero) { IsStatic = true, Tag = "Deadly" }); + return entity; + } + + public Entity CreateBloodExplosion(Vector2 position, float totalSeconds = 1.0f) + { + var random = new FastRandom(); + var textureRegion = _characterTextureAtlas[0]; + var entity = _entityComponentSystem.CreateEntity(position); + var profile = Profile.Spray(new Vector2(0, -1), MathHelper.Pi); + var term = TimeSpan.FromSeconds(totalSeconds); + var particleEmitter = new ParticleEmitter(textureRegion, 32, term, profile) + { + Parameters = new ParticleReleaseParameters + { + Speed = new Range(140, 200), + Quantity = new Range(32, 64), + Rotation = new Range(-MathHelper.TwoPi, MathHelper.TwoPi) + }, + Modifiers = new IModifier[] + { + new LinearGravityModifier { Direction = Vector2.UnitY, Strength = 350 }, + new OpacityFastFadeModifier(), + new RotationModifier { RotationRate = random.NextSingle(-MathHelper.TwoPi, MathHelper.TwoPi) } + } + }; + entity.AttachComponent(new TransformableComponent(particleEmitter)); + entity.Destroy(delaySeconds: totalSeconds); + return entity; + } + + public Entity CreateBadGuy(Vector2 position, Size2 size) + { + var entity = _entityComponentSystem.CreateEntity(position); + var textureRegion = _characterTextureAtlas[90]; + var animationFactory = new SpriteSheetAnimationFactory(_characterTextureAtlas); + + animationFactory.Add("idle", new SpriteSheetAnimationData(new[] { 100 }, 1.0f)); + animationFactory.Add("walk", new SpriteSheetAnimationData(new[] { 96, 97, 98, 99 }, isPingPong: true)); + + entity.AttachComponent(new TransformableComponent(new AnimatedSprite(animationFactory, "walk"))); + entity.AttachComponent(new BasicCollisionBody(textureRegion.Size, Vector2.One * 0.5f) {Tag = "Deadly"}); + entity.AttachComponent(new EnemyCollisionHandler()); + entity.AttachComponent(new CharacterState()); + entity.AttachComponent(new EnemyAi()); + entity.Tag = "BadGuy"; + + return entity; + } + } +} diff --git a/Source/Demos/Demo.Platformer/Entities/Systems/BasicCollisionSystem.cs b/Source/Demos/Demo.Platformer/Entities/Systems/BasicCollisionSystem.cs new file mode 100644 index 000000000..99921edf6 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Systems/BasicCollisionSystem.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Demo.Platformer.Entities.Components; +using Microsoft.Xna.Framework; +using MonoGame.Extended; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Entities.Systems; + +namespace Demo.Platformer.Entities.Systems +{ + public class BasicCollisionSystem : ComponentSystem + { + private readonly Vector2 _gravity; + private readonly List _staticBodies = new List(); + private readonly List _movingBodies = new List(); + + public BasicCollisionSystem(Vector2 gravity) + { + _gravity = gravity; + } + + protected override void OnComponentAttached(EntityComponent component) + { + var body = component as BasicCollisionBody; + + if (body != null) + { + if (body.IsStatic) + _staticBodies.Add(body); + else + _movingBodies.Add(body); + } + + base.OnComponentAttached(component); + } + + protected override void OnComponentDetached(EntityComponent component) + { + var body = component as BasicCollisionBody; + + if (body != null) + { + if (body.IsStatic) + _staticBodies.Remove(body); + else + _movingBodies.Remove(body); + } + + base.OnComponentDetached(component); + } + + public override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + + foreach (var bodyA in _movingBodies) + { + bodyA.Velocity += _gravity * deltaTime; + bodyA.Entity.Position += bodyA.Velocity * deltaTime; + + foreach (var bodyB in _staticBodies.Concat(_movingBodies)) + { + if (bodyA == bodyB) + continue; + + var depth = IntersectionDepth(bodyA.BoundingRectangle, bodyB.BoundingRectangle); + + if (depth != Vector2.Zero) + { + var collisionHandlers = bodyA.Entity.GetComponents(); + + foreach (var collisionHandler in collisionHandlers) + collisionHandler.OnCollision(bodyA, bodyB, depth); + } + } + } + + + } + + public Vector2 IntersectionDepth(RectangleF first, RectangleF second) + { + // Calculate half sizes. + var thisHalfWidth = first.Width / 2.0f; + var thisHalfHeight = first.Height / 2.0f; + var otherHalfWidth = second.Width / 2.0f; + var otherHalfHeight = second.Height / 2.0f; + + // Calculate centers. + var centerA = new Vector2(first.Left + thisHalfWidth, first.Top + thisHalfHeight); + var centerB = new Vector2(second.Left + otherHalfWidth, second.Top + otherHalfHeight); + + // Calculate current and minimum-non-intersecting distances between centers. + var distanceX = centerA.X - centerB.X; + var distanceY = centerA.Y - centerB.Y; + var minDistanceX = thisHalfWidth + otherHalfWidth; + var minDistanceY = thisHalfHeight + otherHalfHeight; + + // If we are not intersecting at all, return (0, 0). + if ((Math.Abs(distanceX) >= minDistanceX) || (Math.Abs(distanceY) >= minDistanceY)) + return Vector2.Zero; + + // Calculate and return intersection depths. + var depthX = distanceX > 0 ? minDistanceX - distanceX : -minDistanceX - distanceX; + var depthY = distanceY > 0 ? minDistanceY - distanceY : -minDistanceY - distanceY; + return new Vector2(depthX, depthY); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Systems/CharacterStateSystem.cs b/Source/Demos/Demo.Platformer/Entities/Systems/CharacterStateSystem.cs new file mode 100644 index 000000000..60cbd25d9 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Systems/CharacterStateSystem.cs @@ -0,0 +1,35 @@ +using System.Linq; +using Demo.Platformer.Entities.Components; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Systems; + +namespace Demo.Platformer.Entities.Systems +{ + public class CharacterStateSystem : ComponentSystem + { + private readonly EntityFactory _entityFactory; + private readonly Vector2 _spawnPoint; + + public CharacterStateSystem(EntityFactory entityFactory, Vector2 spawnPoint) + { + _entityFactory = entityFactory; + _spawnPoint = spawnPoint; + } + + public override void Update(GameTime gameTime) + { + foreach (var component in GetComponents().ToArray()) + { + if (!component.IsAlive) + { + _entityFactory.CreateBloodExplosion(component.Entity.Position); + component.Entity.Destroy(); + + if(component.Entity.Name == Entities.Player) + _entityFactory.CreatePlayer(_spawnPoint); + } + + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Systems/EnemyMovementSystem.cs b/Source/Demos/Demo.Platformer/Entities/Systems/EnemyMovementSystem.cs new file mode 100644 index 000000000..997bca4ab --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Systems/EnemyMovementSystem.cs @@ -0,0 +1,33 @@ +using Demo.Platformer.Entities.Components; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Entities.Systems; +using MonoGame.Extended.Sprites; + +namespace Demo.Platformer.Entities.Systems +{ + public class EnemyMovementSystem : ComponentSystem + { + public override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + + foreach (var component in GetComponents()) + { + component.Position += component.Direction * deltaTime; + component.WalkTimeRemaining -= deltaTime; + + if (component.WalkTimeRemaining <= 0) + { + var transformableComponent = component.Entity.GetComponent>(); + var sprite = transformableComponent.Target; + sprite.Effect = sprite.Effect == SpriteEffects.None ? SpriteEffects.FlipHorizontally : SpriteEffects.None; + component.Direction = -component.Direction; + component.WalkTimeRemaining = component.WalkTime; + } + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Entities/Systems/PlayerMovementSystem.cs b/Source/Demos/Demo.Platformer/Entities/Systems/PlayerMovementSystem.cs new file mode 100644 index 000000000..5b14bd007 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Entities/Systems/PlayerMovementSystem.cs @@ -0,0 +1,92 @@ +using System; +using Demo.Platformer.Entities.Components; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Animations; +using MonoGame.Extended.Entities; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Entities.Systems; +using MonoGame.Extended.Sprites; + +namespace Demo.Platformer.Entities.Systems +{ + public class PlayerMovementSystem : ComponentSystem + { + private const float _walkSpeed = 220f; + private const float _jumpSpeed = 425f; + private KeyboardState _previousKeyboardState; + private float _jumpDelay = 1.0f; + private Entity _playerEntity; + + protected override void OnEntityCreated(Entity entity) + { + if (entity.Name == Entities.Player) + _playerEntity = entity; + + base.OnEntityCreated(entity); + } + + protected override void OnEntityDestroyed(Entity entity) + { + if (entity.Name == Entities.Player) + _playerEntity = null; + + base.OnEntityDestroyed(entity); + } + + public override void Update(GameTime gameTime) + { + if(_playerEntity == null) + return; + + var deltaTime = gameTime.GetElapsedSeconds(); + var keyboardState = Keyboard.GetState(); + var body = _playerEntity.GetComponent(); + var playerState = _playerEntity.GetComponent(); + var sprite = _playerEntity.GetComponent>().Target as AnimatedSprite; + var velocity = new Vector2(0, body.Velocity.Y); + + if (keyboardState.IsKeyDown(Keys.Left) || keyboardState.IsKeyDown(Keys.A)) + { + sprite.Effect = SpriteEffects.FlipHorizontally; + sprite.Play("walk"); + velocity += new Vector2(-_walkSpeed, 0); + } + + if (keyboardState.IsKeyDown(Keys.Right) || keyboardState.IsKeyDown(Keys.D)) + { + sprite.Effect = SpriteEffects.None; + sprite.Play("walk"); + velocity += new Vector2(_walkSpeed, 0); + } + + if (playerState.IsJumping) + _jumpDelay -= deltaTime * 2.8f; + else + _jumpDelay = 1.0f; + + if (keyboardState.IsKeyDown(Keys.W) || keyboardState.IsKeyDown(Keys.Up)) + { + if(!playerState.IsJumping) + sprite.Play("jump"); + + velocity = new Vector2(velocity.X, -_jumpSpeed * _jumpDelay); + playerState.IsJumping = true; + } + else if (_previousKeyboardState.IsKeyDown(Keys.W) || _previousKeyboardState.IsKeyDown(Keys.Up)) + { + // when the jump button is released we kill most of the upward velocity + velocity = new Vector2(velocity.X, velocity.Y * 0.2f); + } + + if (!playerState.IsJumping && Math.Abs(body.Velocity.X) < float.Epsilon) + sprite.Play("idle"); + + body.Velocity = velocity; + + _previousKeyboardState = keyboardState; + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/GameMain.cs b/Source/Demos/Demo.Platformer/GameMain.cs new file mode 100644 index 000000000..7d37941e5 --- /dev/null +++ b/Source/Demos/Demo.Platformer/GameMain.cs @@ -0,0 +1,47 @@ +using Demo.Platformer.Screens; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Screens; + +namespace Demo.Platformer +{ + public class GameMain : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + + public GameMain() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + } + + protected override void Initialize() + { + var screens = new [] { new GameScreen(Services, GraphicsDevice, Window) }; + + Components.Add(new ScreenComponent(this, screens)); + + base.Initialize(); + } + + protected override void Update(GameTime gameTime) + { + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + //GraphicsDevice.Clear(Color.Black); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Icon.bmp b/Source/Demos/Demo.Platformer/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Platformer/Icon.bmp differ diff --git a/Source/Demos/Demo.Platformer/Icon.ico b/Source/Demos/Demo.Platformer/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Platformer/Icon.ico differ diff --git a/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config b/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Platformer/OpenTK.dll.config b/Source/Demos/Demo.Platformer/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.Platformer/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Program.cs b/Source/Demos/Demo.Platformer/Program.cs new file mode 100644 index 000000000..ef1cdaf12 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.Platformer +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new GameMain()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Platformer/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..ffe17dace --- /dev/null +++ b/Source/Demos/Demo.Platformer/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.Platformer")] +[assembly: AssemblyProduct("Demo.Platformer")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Screens/GameScreen.cs b/Source/Demos/Demo.Platformer/Screens/GameScreen.cs new file mode 100644 index 000000000..899b822ea --- /dev/null +++ b/Source/Demos/Demo.Platformer/Screens/GameScreen.cs @@ -0,0 +1,110 @@ +using System; +using System.Linq; +using Demo.Platformer.Entities; +using Demo.Platformer.Entities.Systems; +using Demo.Platformer.Services; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended; +using MonoGame.Extended.Entities; +using MonoGame.Extended.Entities.Systems; +using MonoGame.Extended.Screens; +using MonoGame.Extended.Tiled; +using MonoGame.Extended.Graphics; +using MonoGame.Extended.ViewportAdapters; + +namespace Demo.Platformer.Screens +{ + public class GameScreen : Screen + { + public GameScreen(IServiceProvider services, GraphicsDevice graphicsDevice, GameWindow window) + { + Services = services; + GraphicsDevice = graphicsDevice; + Window = window; + } + + private Camera2D _camera; + private TiledMap _map; + private TiledMapRenderer _mapRenderer; + private EntityComponentSystem _entityComponentSystem; + private EntityFactory _entityFactory; + + public IServiceProvider Services { get; } + public ContentManager Content { get; private set; } + public GraphicsDevice GraphicsDevice { get; } + public GameWindow Window { get; } + + public override void Initialize() + { + base.Initialize(); + + Content = new ContentManager(Services, "Content"); + } + + public override void LoadContent() + { + base.LoadContent(); + + var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _camera = new Camera2D(viewportAdapter); + + _map = Content.Load("level-1"); + _mapRenderer = new TiledMapRenderer(GraphicsDevice); + + _entityComponentSystem = new EntityComponentSystem(); + _entityFactory = new EntityFactory(_entityComponentSystem, Content); + + var service = new TiledObjectToEntityService(_entityFactory); + var spawnPoint = _map.GetLayer("entities").Objects.Single(i => i.Type == "Spawn").Position; + + _entityComponentSystem.RegisterSystem(new PlayerMovementSystem()); + _entityComponentSystem.RegisterSystem(new EnemyMovementSystem()); + _entityComponentSystem.RegisterSystem(new CharacterStateSystem(_entityFactory, spawnPoint)); + _entityComponentSystem.RegisterSystem(new BasicCollisionSystem(gravity: new Vector2(0, 1150))); + _entityComponentSystem.RegisterSystem(new ParticleEmitterSystem()); + _entityComponentSystem.RegisterSystem(new AnimatedSpriteSystem()); + _entityComponentSystem.RegisterSystem(new SpriteBatchSystem(GraphicsDevice, _camera) { SamplerState = SamplerState.PointClamp }); + + service.CreateEntities(_map.GetLayer("entities").Objects); + } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + _entityComponentSystem.Update(gameTime); + } + + public override void Draw(GameTime gameTime) + { + base.Draw(gameTime); + + GraphicsDevice.Clear(Color.Black); + + var viewMatrix = _camera.GetViewMatrix(); + var projectionMatrix = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, + GraphicsDevice.Viewport.Height, 0, 0f, -1f); + + // painter's algorithm; just draw things in the expected order + + var backgroundLayer = _map.GetLayer("background"); + _mapRenderer.Draw(backgroundLayer, ref viewMatrix, ref projectionMatrix); + + var solidsLayer = _map.GetLayer("solids"); + _mapRenderer.Draw(solidsLayer); + + var decorationsLayer = _map.GetLayer("decorations"); + _mapRenderer.Draw(decorationsLayer, ref viewMatrix, ref projectionMatrix); + + _entityComponentSystem.Draw(gameTime); + + var decorations2Layer = _map.GetLayer("decorations2"); + _mapRenderer.Draw(decorations2Layer, ref viewMatrix, ref projectionMatrix); + + var deadliesLayer = _map.GetLayer("deadlies"); + _mapRenderer.Draw(deadliesLayer, ref viewMatrix, ref projectionMatrix); + } + } +} diff --git a/Source/Demos/Demo.Platformer/Services/TiledObjectToEntityService.cs b/Source/Demos/Demo.Platformer/Services/TiledObjectToEntityService.cs new file mode 100644 index 000000000..8176704e8 --- /dev/null +++ b/Source/Demos/Demo.Platformer/Services/TiledObjectToEntityService.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using Demo.Platformer.Entities; +using MonoGame.Extended.Entities; +using MonoGame.Extended.Tiled; + +namespace Demo.Platformer.Services +{ + public class TiledObjectToEntityService + { + private readonly EntityFactory _entityFactory; + + public TiledObjectToEntityService(EntityFactory entityFactory) + { + _entityFactory = entityFactory; + _createEntityFunctions = new Dictionary> + { + {"Spawn", tiledObject => _entityFactory.CreatePlayer(tiledObject.Position)}, + {"Solid", tiledObject => _entityFactory.CreateSolid(tiledObject.Position, tiledObject.Size) }, + {"Deadly", tiledObject => _entityFactory.CreateDeadly(tiledObject.Position, tiledObject.Size) }, + {"BadGuy", tiledObject => _entityFactory.CreateBadGuy(tiledObject.Position, tiledObject.Size) } + }; + } + + private readonly Dictionary> _createEntityFunctions; + + public void CreateEntities(TiledMapObject[] tiledObjects) + { + foreach (var tiledObject in tiledObjects) + _createEntityFunctions[tiledObject.Type](tiledObject); + } + } +} diff --git a/Source/Demos/Demo.Platformer/app.config b/Source/Demos/Demo.Platformer/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.Platformer/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/app.manifest b/Source/Demos/Demo.Platformer/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Platformer/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Platformer/packages.config b/Source/Demos/Demo.Platformer/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.Platformer/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj b/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj index 691012622..658c01670 100644 --- a/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj +++ b/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -41,31 +42,66 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + @@ -77,6 +113,10 @@ + + {fe61c3d7-d96d-4aa4-9ef1-17e457bb2c7c} + MonoGame.Extended.SceneGraphs + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.SceneGraphs/Game1.cs b/Source/Demos/Demo.SceneGraphs/Game1.cs index a6f80f301..7a6748b1e 100644 --- a/Source/Demos/Demo.SceneGraphs/Game1.cs +++ b/Source/Demos/Demo.SceneGraphs/Game1.cs @@ -144,7 +144,7 @@ protected override void Draw(GameTime gameTime) if (_hoveredNode != null) { - var boundingRectangle = _hoveredNode.GetBoundingRectangle(); + var boundingRectangle = _hoveredNode.BoundingRectangle; _spriteBatch.DrawRectangle(boundingRectangle, Color.Black); } diff --git a/Source/Demos/Demo.SceneGraphs/Icon.bmp b/Source/Demos/Demo.SceneGraphs/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.SceneGraphs/Icon.bmp differ diff --git a/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config b/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.SceneGraphs/app.manifest b/Source/Demos/Demo.SceneGraphs/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.SceneGraphs/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.SceneGraphs/packages.config b/Source/Demos/Demo.SceneGraphs/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.SceneGraphs/packages.config +++ b/Source/Demos/Demo.SceneGraphs/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Content/Content.mgcb b/Source/Demos/Demo.Screens/Content/Content.mgcb new file mode 100644 index 000000000..3c2961180 --- /dev/null +++ b/Source/Demos/Demo.Screens/Content/Content.mgcb @@ -0,0 +1,45 @@ + +#----------------------------- Global Properties ----------------------------# + +/outputDir:bin/$(Platform) +/intermediateDir:obj/$(Platform) +/platform:Windows +/config: +/profile:Reach +/compress:False + +#-------------------------------- References --------------------------------# + +/reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll + +#---------------------------------- Content ---------------------------------# + +#begin logo-square-128.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:logo-square-128.png + +#begin montserrat-32.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:montserrat-32.fnt + +#begin montserrat-32_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:montserrat-32_0.png + diff --git a/Source/Demos/Demo.Screens/Content/logo-square-128.png b/Source/Demos/Demo.Screens/Content/logo-square-128.png new file mode 100644 index 000000000..1dbe3e85c Binary files /dev/null and b/Source/Demos/Demo.Screens/Content/logo-square-128.png differ diff --git a/Source/Demos/Demo.Screens/Content/montserrat-32.fnt b/Source/Demos/Demo.Screens/Content/montserrat-32.fnt new file mode 100644 index 000000000..51af461ac --- /dev/null +++ b/Source/Demos/Demo.Screens/Content/montserrat-32.fnt @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.Screens/Content/montserrat-32_0.png b/Source/Demos/Demo.Screens/Content/montserrat-32_0.png new file mode 100644 index 000000000..7ef6ac07d Binary files /dev/null and b/Source/Demos/Demo.Screens/Content/montserrat-32_0.png differ diff --git a/Source/Demos/Demo.Screens/Demo.Screens.csproj b/Source/Demos/Demo.Screens/Demo.Screens.csproj new file mode 100644 index 000000000..339285565 --- /dev/null +++ b/Source/Demos/Demo.Screens/Demo.Screens.csproj @@ -0,0 +1,137 @@ + + + + + Debug + AnyCPU + {50C281D9-1D55-4E5C-836B-94110EC09605} + WinExe + Properties + Demo.Screens + Demo.Screens + DesktopGL + v4.5 + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + false + 6 + + + true + bin\Release + prompt + 4 + false + false + + + Icon.ico + + + + + + + + + + + + + + + + + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + + + + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + + + + + + + + + + PreserveNewest + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Game1.cs b/Source/Demos/Demo.Screens/Game1.cs new file mode 100644 index 000000000..518d03709 --- /dev/null +++ b/Source/Demos/Demo.Screens/Game1.cs @@ -0,0 +1,60 @@ +using Demo.Screens.Screens; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Screens; +using MonoGame.Extended.ViewportAdapters; + +namespace Demo.Screens +{ + public class Game1 : Game + { + // ReSharper disable once NotAccessedField.Local + private readonly GraphicsDeviceManager _graphicsDeviceManager; + + public Game1() + { + _graphicsDeviceManager = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + IsMouseVisible = true; + Window.AllowUserResizing = true; + + ScreenComponent screenComponent; + Components.Add(screenComponent = new ScreenComponent(this)); + + screenComponent.Register(new MainMenuScreen(Services, this)); + screenComponent.Register(new LoadGameScreen(Services)); + screenComponent.Register(new OptionsScreen(Services)); + screenComponent.Register(new AudioOptionsScreen(Services)); + screenComponent.Register(new VideoOptionsScreen(Services)); + screenComponent.Register(new KeyboardOptionsScreen(Services)); + screenComponent.Register(new MouseOptionsScreen(Services)); + } + + protected override void LoadContent() + { + //var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + } + + protected override void UnloadContent() + { + } + + protected override void Update(GameTime gameTime) + { + var keyboardState = Keyboard.GetState(); + + if (keyboardState.IsKeyDown(Keys.Escape)) + Exit(); + + base.Update(gameTime); + } + + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.Black); + + base.Draw(gameTime); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Icon.bmp b/Source/Demos/Demo.Screens/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Screens/Icon.bmp differ diff --git a/Source/Demos/Demo.Screens/Icon.ico b/Source/Demos/Demo.Screens/Icon.ico new file mode 100644 index 000000000..7d9dec187 Binary files /dev/null and b/Source/Demos/Demo.Screens/Icon.ico differ diff --git a/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config b/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Screens/OpenTK.dll.config b/Source/Demos/Demo.Screens/OpenTK.dll.config new file mode 100644 index 000000000..9342d6887 --- /dev/null +++ b/Source/Demos/Demo.Screens/OpenTK.dll.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Program.cs b/Source/Demos/Demo.Screens/Program.cs new file mode 100644 index 000000000..235c532c4 --- /dev/null +++ b/Source/Demos/Demo.Screens/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace Demo.Screens +{ + internal static class Program + { + [STAThread] + private static void Main(string[] args) + { + using (var game = new Game1()) + { + game.Run(); + } + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Properties/AssemblyInfo.cs b/Source/Demos/Demo.Screens/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..89f0d8cc5 --- /dev/null +++ b/Source/Demos/Demo.Screens/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Demo.Screens")] +[assembly: AssemblyProduct("Demo.Screens")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("9b7203c6-a9a6-40e9-a798-893df7f10bf1")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("3.4.0.456")] +[assembly: AssemblyFileVersion("3.4.0.456")] \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/AudioOptionsScreen.cs b/Source/Demos/Demo.Screens/Screens/AudioOptionsScreen.cs new file mode 100644 index 000000000..b19255f28 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/AudioOptionsScreen.cs @@ -0,0 +1,19 @@ +using System; + +namespace Demo.Screens.Screens +{ + public class AudioOptionsScreen : MenuScreen + { + public AudioOptionsScreen(IServiceProvider serviceProvider) + : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/KeyboardOptionsScreen.cs b/Source/Demos/Demo.Screens/Screens/KeyboardOptionsScreen.cs new file mode 100644 index 000000000..b3cb71d31 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/KeyboardOptionsScreen.cs @@ -0,0 +1,20 @@ +using System; +using MonoGame.Extended.Screens; + +namespace Demo.Screens.Screens +{ + public class KeyboardOptionsScreen : MenuScreen + { + public KeyboardOptionsScreen(IServiceProvider serviceProvider) + : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/LoadGameScreen.cs b/Source/Demos/Demo.Screens/Screens/LoadGameScreen.cs new file mode 100644 index 000000000..4e4afb7ea --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/LoadGameScreen.cs @@ -0,0 +1,18 @@ +using System; + +namespace Demo.Screens.Screens +{ + public class LoadGameScreen : MenuScreen + { + public LoadGameScreen(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/MainMenuScreen.cs b/Source/Demos/Demo.Screens/Screens/MainMenuScreen.cs new file mode 100644 index 000000000..42816ae85 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/MainMenuScreen.cs @@ -0,0 +1,26 @@ +using System; +using Microsoft.Xna.Framework; + +namespace Demo.Screens.Screens +{ + public class MainMenuScreen : MenuScreen + { + private readonly Game _game; + + public MainMenuScreen(IServiceProvider serviceProvider, Game game) + : base(serviceProvider) + { + _game = game; + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("New Game", () => { }); + AddMenuItem("Load Game", Show); + AddMenuItem("Options", Show); + AddMenuItem("Exit", _game.Exit); + } + } +} diff --git a/Source/Demos/Demo.Screens/Screens/MenuItem.cs b/Source/Demos/Demo.Screens/Screens/MenuItem.cs new file mode 100644 index 000000000..c28a78bbb --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/MenuItem.cs @@ -0,0 +1,31 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended; +using MonoGame.Extended.BitmapFonts; + +namespace Demo.Screens.Screens +{ + public class MenuItem + { + public MenuItem(BitmapFont font, string text) + { + Text = text; + Font = font; + Color = Color.White; + } + + public BitmapFont Font { get; } + public string Text { get; set; } + public Vector2 Position { get; set; } + public Color Color { get; set; } + public RectangleF BoundingRectangle => new RectangleF(Position, Font.MeasureString(Text)); + public Action Action { get; set; } + + public void Draw(SpriteBatch spriteBatch) + { + spriteBatch.DrawString(Font, Text, Position, Color); + } + + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/MenuScreen.cs b/Source/Demos/Demo.Screens/Screens/MenuScreen.cs new file mode 100644 index 000000000..2ca8fd621 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/MenuScreen.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Screens; + +namespace Demo.Screens.Screens +{ + public abstract class MenuScreen : Screen + { + private readonly IServiceProvider _serviceProvider; + private SpriteBatch _spriteBatch; + + protected MenuScreen(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + MenuItems = new List(); + } + + public List MenuItems { get; } + protected BitmapFont Font { get; private set; } + protected ContentManager Content { get; private set; } + + protected void AddMenuItem(string text, Action action) + { + var menuItem = new MenuItem(Font, text) + { + Position = new Vector2(300, 200 + 32 * MenuItems.Count), + Action = action + }; + + MenuItems.Add(menuItem); + } + + public override void Initialize() + { + base.Initialize(); + + Content = new ContentManager(_serviceProvider, "Content"); + } + + public override void Dispose() + { + base.Dispose(); + + _spriteBatch.Dispose(); + } + + public override void LoadContent() + { + base.LoadContent(); + + var graphicsDeviceService = (IGraphicsDeviceService)_serviceProvider.GetService(typeof(IGraphicsDeviceService)); + + _spriteBatch = new SpriteBatch(graphicsDeviceService.GraphicsDevice); + Font = Content.Load("montserrat-32"); + } + + public override void UnloadContent() + { + Content.Unload(); + Content.Dispose(); + + base.UnloadContent(); + } + + private MouseState _previousState; + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + var mouseState = Mouse.GetState(); + var isPressed = mouseState.LeftButton == ButtonState.Released && _previousState.LeftButton == ButtonState.Pressed; + + foreach (var menuItem in MenuItems) + { + var isHovered = menuItem.BoundingRectangle.Contains(new Point2(mouseState.X, mouseState.Y)); + + menuItem.Color = isHovered ? Color.Yellow : Color.White; + + if (isHovered && isPressed) + { + menuItem.Action?.Invoke(); + break; + } + } + + _previousState = mouseState; + } + + public override void Draw(GameTime gameTime) + { + base.Draw(gameTime); + + _spriteBatch.Begin(); + + foreach (var menuItem in MenuItems) + menuItem.Draw(_spriteBatch); + + _spriteBatch.End(); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/MouseOptionsScreen.cs b/Source/Demos/Demo.Screens/Screens/MouseOptionsScreen.cs new file mode 100644 index 000000000..c25e5c951 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/MouseOptionsScreen.cs @@ -0,0 +1,18 @@ +using System; + +namespace Demo.Screens.Screens +{ + public class MouseOptionsScreen : MenuScreen + { + public MouseOptionsScreen(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/OptionsScreen.cs b/Source/Demos/Demo.Screens/Screens/OptionsScreen.cs new file mode 100644 index 000000000..284911337 --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/OptionsScreen.cs @@ -0,0 +1,23 @@ +using System; + +namespace Demo.Screens.Screens +{ + public class OptionsScreen : MenuScreen + { + public OptionsScreen(IServiceProvider serviceProvider) + : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Audio Options", Show); + AddMenuItem("Video Options", Show); + AddMenuItem("Keyboard Options", Show); + AddMenuItem("Mouse Options", Show); + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Screens/VideoOptionsScreen.cs b/Source/Demos/Demo.Screens/Screens/VideoOptionsScreen.cs new file mode 100644 index 000000000..7689e2a9b --- /dev/null +++ b/Source/Demos/Demo.Screens/Screens/VideoOptionsScreen.cs @@ -0,0 +1,18 @@ +using System; + +namespace Demo.Screens.Screens +{ + public class VideoOptionsScreen : MenuScreen + { + public VideoOptionsScreen(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + public override void LoadContent() + { + base.LoadContent(); + + AddMenuItem("Back", Show); + } + } +} \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/app.config b/Source/Demos/Demo.Screens/app.config new file mode 100644 index 000000000..5c73fc531 --- /dev/null +++ b/Source/Demos/Demo.Screens/app.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/app.manifest b/Source/Demos/Demo.Screens/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Screens/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Screens/packages.config b/Source/Demos/Demo.Screens/packages.config new file mode 100644 index 000000000..9b38dcf77 --- /dev/null +++ b/Source/Demos/Demo.Screens/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/Demos/Demo.SpaceGame/Content/Content.mgcb b/Source/Demos/Demo.SpaceGame/Content/Content.mgcb index 4de10869f..17921d204 100644 --- a/Source/Demos/Demo.SpaceGame/Content/Content.mgcb +++ b/Source/Demos/Demo.SpaceGame/Content/Content.mgcb @@ -11,6 +11,7 @@ #-------------------------------- References --------------------------------# /reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll +/reference:../../../MonoGame.Extended.Content.Pipeline.Animations/bin/MonoGame.Extended.Content.Pipeline.Animations.dll #---------------------------------- Content ---------------------------------# @@ -22,6 +23,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:playerShip1_blue.png @@ -33,6 +35,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_big1.png @@ -44,6 +47,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:laserBlue03.png @@ -55,6 +59,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_big2.png @@ -66,6 +71,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_big3.png @@ -77,6 +83,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_big4.png @@ -88,6 +95,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_med1.png @@ -99,6 +107,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_med3.png @@ -110,6 +119,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_small1.png @@ -121,6 +131,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_small2.png @@ -132,6 +143,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_tiny1.png @@ -143,6 +155,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:meteorBrown_tiny2.png @@ -154,6 +167,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:black.png @@ -170,6 +184,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:regular-explosion.png @@ -178,22 +193,6 @@ /processor:TexturePackerProcessor /build:regular-explosion-sheet.json -#begin Fonts/courier-new-32.fnt -/importer:BitmapFontImporter -/processor:BitmapFontProcessor -/build:Fonts/courier-new-32.fnt - -#begin Fonts/courier-new-32_0.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:TextureFormat=Color -/build:Fonts/courier-new-32_0.png - #begin Gui/button-clicked.png /importer:TextureImporter /processor:TextureProcessor @@ -202,6 +201,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/button-clicked.png @@ -213,6 +213,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/button-hover.png @@ -224,6 +225,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/button-locked.png @@ -235,6 +237,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/button-normal.png @@ -246,6 +249,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/9patch-1.png @@ -257,6 +261,24 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Gui/9patch-2.png +#begin Fonts/montserrat-32.fnt +/importer:BitmapFontImporter +/processor:BitmapFontProcessor +/build:Fonts/montserrat-32.fnt + +#begin Fonts/montserrat-32_0.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Fonts/montserrat-32_0.png + diff --git a/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32.fnt b/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32.fnt deleted file mode 100644 index 422e36ccb..000000000 --- a/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32.fnt +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32_0.png b/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32_0.png deleted file mode 100644 index 04fb76683..000000000 Binary files a/Source/Demos/Demo.SpaceGame/Content/Fonts/courier-new-32_0.png and /dev/null differ diff --git a/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32.fnt b/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32.fnt new file mode 100644 index 000000000..51af461ac --- /dev/null +++ b/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32.fnt @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32_0.png b/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32_0.png new file mode 100644 index 000000000..7ef6ac07d Binary files /dev/null and b/Source/Demos/Demo.SpaceGame/Content/Fonts/montserrat-32_0.png differ diff --git a/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj b/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj index 0d1799077..c1e15eff3 100644 --- a/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj +++ b/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -49,27 +50,64 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + - + @@ -90,7 +128,6 @@ - @@ -99,7 +136,6 @@ - @@ -107,6 +143,10 @@ + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.SpaceGame/Entities/Explosion.cs b/Source/Demos/Demo.SpaceGame/Entities/Explosion.cs index 0b42e2596..d350e1455 100644 --- a/Source/Demos/Demo.SpaceGame/Entities/Explosion.cs +++ b/Source/Demos/Demo.SpaceGame/Entities/Explosion.cs @@ -1,35 +1,33 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using MonoGame.Extended.Animations; +using MonoGame.Extended.Animations.SpriteSheets; using MonoGame.Extended.Sprites; namespace Demo.SpaceGame.Entities { public class Explosion : Entity { - private readonly SpriteSheetAnimator _animator; + private readonly AnimatedSprite _sprite; - public Explosion(SpriteSheetAnimationGroup animations, Vector2 position, float radius) + public Explosion(SpriteSheetAnimationFactory animations, Vector2 position, float radius) { - _animator = new SpriteSheetAnimator(animations) + _sprite = new AnimatedSprite(animations) { - Sprite = { - Position = position, - Scale = Vector2.One * radius * 0.2f - }, - IsLooping = false + Position = position, + Scale = Vector2.One * radius * 0.2f }; - _animator.PlayAnimation("explode", Destroy); + _sprite.Play("explode", Destroy); } public override void Update(GameTime gameTime) { - _animator.Update(gameTime); + _sprite.Update(gameTime); } public override void Draw(SpriteBatch spriteBatch) { - spriteBatch.Draw(_animator); + spriteBatch.Draw(_sprite); } } } \ No newline at end of file diff --git a/Source/Demos/Demo.SpaceGame/Entities/Meteor.cs b/Source/Demos/Demo.SpaceGame/Entities/Meteor.cs index d9bc1f371..05b850967 100644 --- a/Source/Demos/Demo.SpaceGame/Entities/Meteor.cs +++ b/Source/Demos/Demo.SpaceGame/Entities/Meteor.cs @@ -1,6 +1,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Shapes; +using MonoGame.Extended; using MonoGame.Extended.Sprites; using MonoGame.Extended.TextureAtlases; diff --git a/Source/Demos/Demo.SpaceGame/Entities/MeteorFactory.cs b/Source/Demos/Demo.SpaceGame/Entities/MeteorFactory.cs index 878df780c..4f43cb233 100644 --- a/Source/Demos/Demo.SpaceGame/Entities/MeteorFactory.cs +++ b/Source/Demos/Demo.SpaceGame/Entities/MeteorFactory.cs @@ -4,7 +4,6 @@ using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using MonoGame.Extended; -using MonoGame.Extended.Shapes; using MonoGame.Extended.TextureAtlases; namespace Demo.SpaceGame.Entities @@ -73,7 +72,7 @@ public void SplitMeteor(Meteor meteor) } } - public void SpawnNewMeteor(Vector2 playerPosition) + public void SpawnNewMeteor(Point2 playerPosition) { var rotationSpeed = _random.Next(-10, 10) * 0.1f; var spawnCircle = new CircleF(playerPosition, 630); diff --git a/Source/Demos/Demo.SpaceGame/Entities/Spaceship.cs b/Source/Demos/Demo.SpaceGame/Entities/Spaceship.cs index 7d1b8b384..2b30fcf03 100644 --- a/Source/Demos/Demo.SpaceGame/Entities/Spaceship.cs +++ b/Source/Demos/Demo.SpaceGame/Entities/Spaceship.cs @@ -2,7 +2,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using MonoGame.Extended; -using MonoGame.Extended.Shapes; using MonoGame.Extended.Sprites; using MonoGame.Extended.TextureAtlases; diff --git a/Source/Demos/Demo.SpaceGame/Game1.cs b/Source/Demos/Demo.SpaceGame/Game1.cs index 84d87fe14..afbe3acd0 100644 --- a/Source/Demos/Demo.SpaceGame/Game1.cs +++ b/Source/Demos/Demo.SpaceGame/Game1.cs @@ -4,9 +4,8 @@ using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; -using MonoGame.Extended.Animations; +using MonoGame.Extended.Animations.SpriteSheets; using MonoGame.Extended.BitmapFonts; -using MonoGame.Extended.Shapes; using MonoGame.Extended.TextureAtlases; using MonoGame.Extended.ViewportAdapters; @@ -20,7 +19,7 @@ public class Game1 : Game private Texture2D _backgroundTexture; private BulletFactory _bulletFactory; private Camera2D _camera; - private SpriteSheetAnimationGroup _explosionAnimations; + private SpriteSheetAnimationFactory _explosionAnimations; private BitmapFont _font; private MeteorFactory _meteorFactory; private Spaceship _player; @@ -57,10 +56,10 @@ public Game1() protected override void LoadContent() { _viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); - _font = Content.Load("Fonts/courier-new-32"); + _font = Content.Load("Fonts/montserrat-32"); _camera = new Camera2D(_viewportAdapter); - _explosionAnimations = Content.Load("explosion-animations"); + _explosionAnimations = Content.Load("explosion-animations"); _spriteBatch = new SpriteBatch(GraphicsDevice); @@ -75,12 +74,10 @@ protected override void LoadContent() _meteorFactory = new MeteorFactory(_entityManager, Content); for (var i = 0; i < 13; i++) - { _meteorFactory.SpawnNewMeteor(_player.Position); - } } - private void SpawnPlayer(BulletFactory bulletFactory) + private void SpawnPlayer(IBulletFactory bulletFactory) { var spaceshipTexture = Content.Load("playerShip1_blue"); var spaceshipRegion = new TextureRegion2D(spaceshipTexture); @@ -98,43 +95,29 @@ protected override void Update(GameTime gameTime) var mouseState = Mouse.GetState(); if (keyboardState.IsKeyDown(Keys.Escape)) - { Exit(); - } if (_player != null && !_player.IsDestroyed) { const float acceleration = 5f; if (keyboardState.IsKeyDown(Keys.W) || keyboardState.IsKeyDown(Keys.Up)) - { _player.Accelerate(acceleration); - } if (keyboardState.IsKeyDown(Keys.S) || keyboardState.IsKeyDown(Keys.Down)) - { _player.Accelerate(-acceleration); - } if (keyboardState.IsKeyDown(Keys.A) || keyboardState.IsKeyDown(Keys.Left)) - { - _player.Rotation -= deltaTime * 3f; - } + _player.Rotation -= deltaTime*3f; if (keyboardState.IsKeyDown(Keys.D) || keyboardState.IsKeyDown(Keys.Right)) - { - _player.Rotation += deltaTime * 3f; - } + _player.Rotation += deltaTime*3f; if (keyboardState.IsKeyDown(Keys.Space) || mouseState.LeftButton == ButtonState.Pressed) - { _player.Fire(); - } if (_previousMouseState.X != mouseState.X || _previousMouseState.Y != mouseState.Y) - { _player.LookAt(_camera.ScreenToWorld(new Vector2(mouseState.X, mouseState.Y))); - } _camera.LookAt(_player.Position + _player.Velocity * 0.2f); _camera.Zoom = 1.0f - _player.Velocity.Length() / 500f; @@ -175,9 +158,7 @@ private void CheckCollisions() Explode(laser.Position, meteor.Size); if (meteor.Size >= 2) - { _meteorFactory.SplitMeteor(meteor); - } } if (_player != null && _shieldHealth > 0 && meteor.BoundingCircle.Intersects(new CircleF(_player.Position, _shieldRadius))) @@ -204,13 +185,13 @@ protected override void Draw(GameTime gameTime) var sourceRectangle = new Rectangle(0, 0, _viewportAdapter.VirtualWidth, _viewportAdapter.VirtualHeight); sourceRectangle.Offset(_camera.Position * new Vector2(0.1f)); - _spriteBatch.Begin(samplerState: SamplerState.LinearWrap, transformMatrix: _viewportAdapter.GetScaleMatrix()); + _spriteBatch.Begin(samplerState: SamplerState.PointWrap, transformMatrix: _viewportAdapter.GetScaleMatrix()); _spriteBatch.Draw(_backgroundTexture, Vector2.Zero, sourceRectangle, Color.White); _spriteBatch.DrawString(_font, $"{_score}", Vector2.One, Color.White); _spriteBatch.End(); // entities - _spriteBatch.Begin(samplerState: SamplerState.LinearClamp, blendState: BlendState.AlphaBlend, transformMatrix: _camera.GetViewMatrix()); + _spriteBatch.Begin(samplerState: SamplerState.PointClamp, blendState: BlendState.AlphaBlend, transformMatrix: _camera.GetViewMatrix()); _entityManager.Draw(_spriteBatch); _spriteBatch.End(); diff --git a/Source/Demos/Demo.SpaceGame/Icon.bmp b/Source/Demos/Demo.SpaceGame/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.SpaceGame/Icon.bmp differ diff --git a/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config b/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.SpaceGame/app.manifest b/Source/Demos/Demo.SpaceGame/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.SpaceGame/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.SpaceGame/packages.config b/Source/Demos/Demo.SpaceGame/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.SpaceGame/packages.config +++ b/Source/Demos/Demo.SpaceGame/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_1.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_1.png deleted file mode 100644 index e46997235..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_1.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_2.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_2.png deleted file mode 100644 index 24fc1c295..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_2.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_3.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_3.png deleted file mode 100644 index 24e7a22d9..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_3.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_4.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_4.png deleted file mode 100644 index 7c1509172..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_4.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Couds.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Couds.png deleted file mode 100644 index 044ec3cbf..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Couds.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Sky.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Sky.png deleted file mode 100644 index fe30ec9d6..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Backgrounds/Hills_Sky.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Content.mgcb b/Source/Demos/Demo.SpriteSheetAnimations/Content/Content.mgcb index 8813934ae..161023540 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Content.mgcb +++ b/Source/Demos/Demo.SpriteSheetAnimations/Content/Content.mgcb @@ -11,6 +11,8 @@ #-------------------------------- References --------------------------------# /reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll +/reference:../../../MonoGame.Extended.Content.Pipeline.Animations/bin/MonoGame.Extended.Content.Pipeline.Animations.dll +/reference:../../../MonoGame.Extended.Content.Pipeline.Tiled/bin/MonoGame.Extended.Content.Pipeline.Tiled.dll #---------------------------------- Content ---------------------------------# @@ -27,6 +29,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Fonts/courier-new-32_0.png @@ -38,6 +41,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Backgrounds/hills.png @@ -54,71 +58,15 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Tilesets/free-tileset.png -#begin Tilesets/isometric.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/isometric.tmx - -#begin Tilesets/isometric_tileset.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:TextureFormat=Color -/build:Tilesets/isometric_tileset.png - #begin Tilesets/level01.tmx /importer:TiledMapImporter /processor:TiledMapProcessor /build:Tilesets/level01.tmx -#begin Tilesets/test-tileset-atlas.json -/importer:TexturePackerJsonImporter -/processor:TexturePackerProcessor -/build:Tilesets/test-tileset-atlas.json - -#begin Tilesets/test-tileset-left-down.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/test-tileset-left-down.tmx - -#begin Tilesets/test-tileset-left-up.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/test-tileset-left-up.tmx - -#begin Tilesets/test-tileset-map1.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/test-tileset-map1.tmx - -#begin Tilesets/test-tileset-right-down.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/test-tileset-right-down.tmx - -#begin Tilesets/test-tileset-right-up.tmx -/importer:TiledMapImporter -/processor:TiledMapProcessor -/build:Tilesets/test-tileset-right-up.tmx - -#begin Tilesets/test-tileset.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:TextureFormat=Color -/build:Tilesets/test-tileset.png - #begin Sprites/fireball.png /importer:TextureImporter /processor:TextureProcessor @@ -127,31 +75,10 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Sprites/fireball.png -#begin Sprites/shadedDark42.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:TextureFormat=Color -/build:Sprites/shadedDark42.png - -#begin Sprites/stump.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:TextureFormat=Color -/build:Sprites/stump.png - #begin Sprites/zombie-atlas.json /importer:TexturePackerJsonImporter /processor:TexturePackerProcessor @@ -165,6 +92,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:Sprites/zombie.png @@ -173,3 +101,15 @@ /processor:AstridAnimatorProcessor /build:Sprites/zombie-animations.aa +#begin Sprites/motw.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Sprites/motw.png + diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Project1.mgcf b/Source/Demos/Demo.SpriteSheetAnimations/Content/Project1.mgcf new file mode 100644 index 000000000..54cfbaf67 --- /dev/null +++ b/Source/Demos/Demo.SpriteSheetAnimations/Content/Project1.mgcf @@ -0,0 +1,3 @@ +{ + "PublishPath": "D:\\Github\\Private\\AstridAnimator\\AstridAnimator\\bin\\Debug" +} \ No newline at end of file diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/fireball.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/fireball.png index c5945100f..a99f9fbf7 100644 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/fireball.png and b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/fireball.png differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/motw.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/motw.png new file mode 100644 index 000000000..08c0e6a15 Binary files /dev/null and b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/motw.png differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/shadedDark42.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/shadedDark42.png deleted file mode 100644 index 90e8b6df4..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/shadedDark42.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/stump.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/stump.png deleted file mode 100644 index 7b1d76780..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/stump.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/zombie-animations.aa b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/zombie-animations.aa index 763a3bd46..2be70836e 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/zombie-animations.aa +++ b/Source/Demos/Demo.SpriteSheetAnimations/Content/Sprites/zombie-animations.aa @@ -63,7 +63,7 @@ }, { "Name": "idle", - "FramesPerSecond": 8, + "FramesPerSecond": 8, "Frames": [ "idle_01", "idle_02", diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/isometric.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/isometric.tmx deleted file mode 100644 index 452b24404..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/isometric.tmx +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,1,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,1,1,2,1,1,2,1,0,0,0,0,0,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,2,2,2,2,1,1,0,0,2,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,1,0,0,0,0,0,0,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,2,2,2,2,2,2,1,0,0,0,0,0,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,1,2,2,2,2,2,1,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,1,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,0,0,1,1,1,2,2,2,0,0,0,0,0,2,0,0,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,1,0,0,2,1,2,2,2,2,2,0,0,0,0,0,0,0,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,0,2,2,1,1,0,2,2,0,0,0,0,0,0,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,1,2,2,2,1,1,0,2,0,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,2,2,2,2,2,1,2,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,2,2,2,1,2,1,2,2,2,1,1,2,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,1,2,2,1,1,1,2,2,2,1,1,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,1,0,1,0,1,2,2,2,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,0,1,1,2,2,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,1,1,1,2,1,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -0,0,0,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,0,0,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,0,1,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/level01.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/level01.tmx index b908bad97..bfc3de64d 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/level01.tmx +++ b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/level01.tmx @@ -1,440 +1,440 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-atlas.json b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-atlas.json deleted file mode 100644 index 57e46f5f8..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-atlas.json +++ /dev/null @@ -1,93 +0,0 @@ -{"frames": [ - -{ - "filename": "1.png", - "frame": {"x":2,"y":2,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "2.png", - "frame": {"x":36,"y":2,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "3.png", - "frame": {"x":70,"y":2,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "4.png", - "frame": {"x":2,"y":36,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "5.png", - "frame": {"x":36,"y":36,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "6.png", - "frame": {"x":70,"y":36,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "7.png", - "frame": {"x":2,"y":70,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "8.png", - "frame": {"x":36,"y":70,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}, -{ - "filename": "9.png", - "frame": {"x":70,"y":70,"w":32,"h":32}, - "rotated": false, - "trimmed": false, - "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, - "sourceSize": {"w":32,"h":32}, - "pivot": {"x":0.5,"y":0.5} -}], -"meta": { - "app": "http://www.codeandweb.com/texturepacker", - "version": "1.0", - "image": "test-tileset.png", - "format": "RGBA8888", - "size": {"w":104,"h":104}, - "scale": "1", - "smartupdate": "$TexturePacker:SmartUpdate:f5f4c00eb32fae603057f0d9dc5c7b73:ca39697f48630ecdea6d81a8fdc48cf6:c79a4cc8e4ba9657462e67dafcaf93d2$" -} -} diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-down.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-down.tmx deleted file mode 100644 index 620cf08e2..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-down.tmx +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-up.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-up.tmx deleted file mode 100644 index 58099f2a0..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-left-up.tmx +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-map1.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-map1.tmx deleted file mode 100644 index 0f1a74116..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-map1.tmx +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-down.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-down.tmx deleted file mode 100644 index b1a7f197a..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-down.tmx +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-up.tmx b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-up.tmx deleted file mode 100644 index 21f2f52b9..000000000 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset-right-up.tmx +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset.png b/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset.png deleted file mode 100644 index 2aa1b715b..000000000 Binary files a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/test-tileset.png and /dev/null differ diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/read-me.md b/Source/Demos/Demo.SpriteSheetAnimations/Content/read-me.md index 7e4e31f6d..3ee020a35 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Content/read-me.md +++ b/Source/Demos/Demo.SpriteSheetAnimations/Content/read-me.md @@ -14,4 +14,10 @@ ## [Fireball Effect](http://opengameart.org/content/high-res-fire-ball) - fireball.png \ No newline at end of file + fireball.png + +## [Masters of the Wind](finalbossblues.com/timefantasy/author/despain/page/4/)** + + motw.png + +** Please read the license details on the website. \ No newline at end of file diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj b/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj index 48de31f83..467b6ad8c 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj +++ b/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj @@ -12,6 +12,21 @@ DesktopGL v4.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true true @@ -23,6 +38,7 @@ 4 false false + 6 true @@ -42,54 +58,73 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + - - - - - - - - - - - - - - - - - + @@ -101,11 +136,34 @@ + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {02562c6f-5bfb-467e-8a95-68b6ce2d635a} + MonoGame.Extended.Collisions + + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + + + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + MonoGame.Extended.Tiled + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.SpriteSheetAnimations/packages.config b/Source/Demos/Demo.SpriteSheetAnimations/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/packages.config +++ b/Source/Demos/Demo.SpriteSheetAnimations/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Sprites/Content/Content.mgcb b/Source/Demos/Demo.Sprites/Content/Content.mgcb index 68f2d62e2..966855f39 100644 --- a/Source/Demos/Demo.Sprites/Content/Content.mgcb +++ b/Source/Demos/Demo.Sprites/Content/Content.mgcb @@ -22,6 +22,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:logo-square-128.png @@ -33,6 +34,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:axe.png @@ -44,6 +46,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:bg_sharbi.png @@ -55,6 +58,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:particle.png @@ -66,6 +70,19 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:spike_ball.png +#begin clipping-test.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:clipping-test.png + diff --git a/Source/Demos/Demo.Sprites/Content/clipping-test.png b/Source/Demos/Demo.Sprites/Content/clipping-test.png new file mode 100644 index 000000000..052b34a03 Binary files /dev/null and b/Source/Demos/Demo.Sprites/Content/clipping-test.png differ diff --git a/Source/Demos/Demo.Sprites/Demo.Sprites.csproj b/Source/Demos/Demo.Sprites/Demo.Sprites.csproj index d5943dfd6..b1e67e6c7 100644 --- a/Source/Demos/Demo.Sprites/Demo.Sprites.csproj +++ b/Source/Demos/Demo.Sprites/Demo.Sprites.csproj @@ -23,6 +23,7 @@ 4 false false + 6 true @@ -41,31 +42,67 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + diff --git a/Source/Demos/Demo.Sprites/Game1.cs b/Source/Demos/Demo.Sprites/Game1.cs index 100fd329f..d50767e5e 100644 --- a/Source/Demos/Demo.Sprites/Game1.cs +++ b/Source/Demos/Demo.Sprites/Game1.cs @@ -2,7 +2,11 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; +using MonoGame.Extended; +using MonoGame.Extended.Shapes; using MonoGame.Extended.Sprites; +using MonoGame.Extended.TextureAtlases; + namespace Demo.Sprites { @@ -18,6 +22,8 @@ public class Game1 : Game private Sprite _spikeyBallSprite; private SpriteBatch _spriteBatch; + private TextureRegion2D _clippingTextureRegion; + public Game1() { _graphicsDeviceManager = new GraphicsDeviceManager(this); @@ -33,6 +39,9 @@ protected override void LoadContent() _backgroundTexture = Content.Load("bg_sharbi"); + var testRegion = new TextureRegion2D(Content.Load("clipping-test")); + _clippingTextureRegion = new NinePatchRegion2D(testRegion, 16); + var axeTexture = Content.Load("axe"); _axeSprite = new Sprite(axeTexture) { @@ -63,6 +72,8 @@ protected override void UnloadContent() { } + private MouseState _previousMouseState; + protected override void Update(GameTime gameTime) { var deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; @@ -71,9 +82,7 @@ protected override void Update(GameTime gameTime) var mouseState = Mouse.GetState(); if (keyboardState.IsKeyDown(Keys.Escape)) - { Exit(); - } _axeSprite.Rotation = MathHelper.ToRadians(180) + MathHelper.PiOver2 * 0.8f * (float)Math.Sin(gameTime.TotalGameTime.TotalSeconds); @@ -84,17 +93,42 @@ protected override void Update(GameTime gameTime) _particleSprite0.Color = Color.White * _particleOpacity; _particleSprite1.Color = Color.White * (1.0f - _particleOpacity); + var dx = mouseState.X - _previousMouseState.X; + var dy = mouseState.Y - _previousMouseState.Y; + + if (mouseState.LeftButton == ButtonState.Pressed) + { + _clippingRectangle.X += dx; + _clippingRectangle.Y += dy; + } + + if (mouseState.RightButton == ButtonState.Pressed) + { + _clippingRectangle.Width += dx; + _clippingRectangle.Height += dy; + } + + _previousMouseState = mouseState; + base.Update(gameTime); } + private Rectangle _clippingRectangle = new Rectangle(50 + 32, 250 - 32, 64, 128 + 64); + protected override void Draw(GameTime gameTime) { - _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend); + _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp); _spriteBatch.Draw(_backgroundTexture, new Rectangle(0, 0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height), Color.White); _spriteBatch.Draw(_axeSprite); _spriteBatch.Draw(_spikeyBallSprite); _spriteBatch.Draw(_particleSprite0); _spriteBatch.Draw(_particleSprite1); + + // clipping test + _spriteBatch.Draw(_clippingTextureRegion, new Rectangle(50, 50, 128, 128), Color.White, clippingRectangle: null); + _spriteBatch.Draw(_clippingTextureRegion, new Rectangle(50, 250, 512, 512), Color.White, clippingRectangle: _clippingRectangle); + _spriteBatch.DrawRectangle(_clippingRectangle.ToRectangleF(), Color.White); + _spriteBatch.End(); base.Draw(gameTime); diff --git a/Source/Demos/Demo.Sprites/Icon.bmp b/Source/Demos/Demo.Sprites/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.Sprites/Icon.bmp differ diff --git a/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config b/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Sprites/app.manifest b/Source/Demos/Demo.Sprites/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.Sprites/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.Sprites/packages.config b/Source/Demos/Demo.Sprites/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.Sprites/packages.config +++ b/Source/Demos/Demo.Sprites/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.TiledMaps/Content/Content.mgcb b/Source/Demos/Demo.TiledMaps/Content/Content.mgcb index 59011fa4c..9acf39587 100644 --- a/Source/Demos/Demo.TiledMaps/Content/Content.mgcb +++ b/Source/Demos/Demo.TiledMaps/Content/Content.mgcb @@ -11,6 +11,7 @@ #-------------------------------- References --------------------------------# /reference:../../../MonoGame.Extended.Content.Pipeline/bin/MonoGame.Extended.Content.Pipeline.dll +/reference:../../../MonoGame.Extended.Content.Pipeline.Tiled/bin/MonoGame.Extended.Content.Pipeline.Tiled.dll #---------------------------------- Content ---------------------------------# @@ -22,6 +23,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:monogame-extended-logo.png @@ -38,6 +40,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:free-tileset.png @@ -59,6 +62,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:montserrat-32_0.png @@ -70,6 +74,7 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:hills.png @@ -81,11 +86,85 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color /build:rpg_maker_vx_rtp_tileset_by_telles0808.png -#begin untitled.tmx +#begin level02.tmx /importer:TiledMapImporter /processor:TiledMapProcessor -/build:untitled.tmx +/build:level02.tmx + +#begin isometric-tiles.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:isometric-tiles.png + +#begin level03.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level03.tmx + +#begin level04.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level04.tmx + +#begin level05.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level05.tmx + +#begin L05TS1.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:L05TS1.png + +#begin alphacolortile.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,0,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:alphacolortile.png + +#begin non-uniform-tileset.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:non-uniform-tileset.png + +#begin level06.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level06.tmx + +#begin level07.tmx +/importer:TiledMapImporter +/processor:TiledMapProcessor +/build:level07.tmx diff --git a/Source/Demos/Demo.TiledMaps/Content/L05TS1.png b/Source/Demos/Demo.TiledMaps/Content/L05TS1.png new file mode 100644 index 000000000..5a4e90248 Binary files /dev/null and b/Source/Demos/Demo.TiledMaps/Content/L05TS1.png differ diff --git a/Source/Demos/Demo.TiledMaps/Content/Thumbs.db b/Source/Demos/Demo.TiledMaps/Content/Thumbs.db new file mode 100644 index 000000000..5e649ae65 Binary files /dev/null and b/Source/Demos/Demo.TiledMaps/Content/Thumbs.db differ diff --git a/Source/Demos/Demo.TiledMaps/Content/alphacolortile.png b/Source/Demos/Demo.TiledMaps/Content/alphacolortile.png new file mode 100644 index 000000000..9b4f21eb8 Binary files /dev/null and b/Source/Demos/Demo.TiledMaps/Content/alphacolortile.png differ diff --git a/Source/Demos/Demo.TiledMaps/Content/free-tileset.png b/Source/Demos/Demo.TiledMaps/Content/free-tileset.png index 4f10bbfed..0de152776 100644 Binary files a/Source/Demos/Demo.TiledMaps/Content/free-tileset.png and b/Source/Demos/Demo.TiledMaps/Content/free-tileset.png differ diff --git a/Source/Demos/Demo.TiledMaps/Content/isometric-tiles.png b/Source/Demos/Demo.TiledMaps/Content/isometric-tiles.png new file mode 100644 index 000000000..4b3b70e4b Binary files /dev/null and b/Source/Demos/Demo.TiledMaps/Content/isometric-tiles.png differ diff --git a/Source/Demos/Demo.TiledMaps/Content/level01.tmx b/Source/Demos/Demo.TiledMaps/Content/level01.tmx index 4b0605c5f..923e99d7f 100644 --- a/Source/Demos/Demo.TiledMaps/Content/level01.tmx +++ b/Source/Demos/Demo.TiledMaps/Content/level01.tmx @@ -1,10 +1,15 @@ - + - + + + + + + @@ -22,426 +27,38 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + H4sIAAAAAAAAA2NgGAWjYBSMgoEBgljwYAJCWPBgAgPtPgAzvv49QAYAAA== - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + H4sIAAAAAAAAA2NgoC5gAWJWJMxGgVmMVHERKqCm+1io4iJMM0fdBwGg+Gcmw0xauw/kLiYg5iBgPkwdsZgcv2KzE+QuYvyPHlaEMMwsYv3FgUMMX/ww4lFLrPtI9RcxZpIbZsPdfQBmr3hmQAYAAA== + + + + + H4sIAAAAAAAAA2NgGAWDDfACMR8Q82MRw4f5GcgDyGbz4xEj11xy9Y+CUTAKBjcAAB+IdqlABgAA + + + + + H4sIAAAAAAAAA2NgGLlAGIuYBJQWRROXpNAuKSxmSkPNlaXQbHKBzADZSwiAwgkUD9IE1MkhsUUYEHGHDsSp4Sg6A3S/44orUagcKB3J4VCDDtDTGy8DwwJ+BoYDfEAMZB8AshOIdyntAdBdC3ghNAM/hE4YWBehAqCbFiDzeQeZ+2gJAHOitUlABgAA - + - + @@ -452,5 +69,15 @@ + + + + + + + + H4sIAAAAAAAAA2NgGAWjYBSMglEwCkgHADV9EcVABgAA + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level02.tmx b/Source/Demos/Demo.TiledMaps/Content/level02.tmx new file mode 100644 index 000000000..06d989b53 --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level02.tmx @@ -0,0 +1,529 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level03.tmx b/Source/Demos/Demo.TiledMaps/Content/level03.tmx new file mode 100644 index 000000000..b81b6e56f --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level03.tmx @@ -0,0 +1,62 @@ + + + + + + + +71,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327 + + + + +1157,0,0,0,0,1125,0,0,1125,0, +0,0,1125,0,0,1157,0,0,1157,0, +0,0,1157,0,0,0,0,0,0,0, +0,0,0,0,0,0,1127,1125,0,0, +1127,0,0,0,1125,0,0,1157,0,1125, +483,483,483,483,1157,0,0,0,0,1157, +483,0,0,0,1127,0,1127,0,0,0, +0,1127,483,0,0,0,0,0,0,0, +483,483,1127,483,483,483,0,0,1127,0, +483,483,483,483,483,0,0,0,1157,0 + + + + +0,0,0,0,0,0,0,0,0,0, +1091,0,0,0,0,0,0,0,0,0, +0,0,1477,1478,0,0,1091,0,0,1091, +0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,1477,1478,0, +1091,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0, +0,0,0,1091,0,0,0,1091,0,0, +1091,0,0,0,0,0,0,0,0,0, +1478,0,0,0,1477,1478,0,0,0,0 + + + + +0,0,0,0,1414,0,0,0,0,0, +1414,0,0,1414,1446,0,0,0,0,0, +1446,0,0,1446,0,0,1414,0,0,0, +0,0,1414,0,0,0,1446,0,0,0, +0,1414,1446,0,0,0,0,0,0,1414, +0,1446,0,0,0,0,0,0,0,1446, +0,0,1414,0,0,0,0,0,0,0, +0,0,1446,0,0,1414,0,0,1414,0, +0,1414,0,0,0,1446,0,0,1446,0, +0,1446,0,0,0,0,0,0,0,0 + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level04.tmx b/Source/Demos/Demo.TiledMaps/Content/level04.tmx new file mode 100644 index 000000000..85d6f2d3b --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level04.tmx @@ -0,0 +1,82 @@ + + + + + + + + + + + +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +71,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,67,67,67,327,327,327,67,67,67,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,67,327,67,327,327,327,67,327,67,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67, +327,327,327,327,327,327,327,67,327,67,327,327,327,67,327,67,327,327,327,327,327,327,327,327,327,327,327,327,327,327, +327,327,327,327,327,327,327,67,67,67,327,327,327,67,67,67,327,327,327,327,327,327,327,327,327,327,327,327,327,327 + + + + +1975,1976,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1977,1978, +2007,2008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2009,2010, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2017,0,0,0,0,0, +0,0,0,0,0,1881,0,0,0,0,0,1883,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,1913,0,0,0,0,0,1915,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1882,0,0,0,0,0,1884,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1911,1912,0,0,0,0,0,0,1914,0,0,0,0,0,1916,0,0,0,0,0,0,0,0,0,0,0,0,0,1979,1980, +1943,1944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2011,2012 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,578,578,578,0,578,578,578,0,0,578,578,578,0,578,0,0,578,0,578,578,578,0,578,578,578,0,0,0, +0,0,0,578,0,0,578,0,578,0,0,578,0,578,0,578,578,0,578,0,578,0,0,0,578,0,578,0,0,0, +0,0,0,578,0,0,578,578,578,0,0,578,578,578,0,578,0,578,578,0,578,578,578,0,578,578,578,0,0,0, +0,0,0,578,0,0,578,0,578,0,0,578,0,578,0,578,0,578,578,0,0,0,578,0,578,0,0,0,0,0, +0,0,0,578,0,0,578,0,0,578,0,578,0,578,0,578,0,0,578,0,578,578,578,0,578,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,578,578,578,0,578,578,578,0,0,578,578,578,0,578,0,0,578,0,578,578,578,0,0,0,0,0,0,0, +0,0,578,0,578,0,578,0,578,0,0,578,0,0,0,578,578,0,578,0,0,578,0,0,0,0,0,0,0,0, +0,0,578,578,578,0,578,578,578,0,0,578,578,578,0,578,0,578,578,0,0,578,0,0,0,0,0,0,0,0, +0,0,578,0,578,0,578,0,578,0,0,578,0,0,0,578,0,578,578,0,0,578,0,0,0,0,0,0,0,0, +0,0,578,0,578,0,578,0,0,578,0,578,578,578,0,578,0,0,578,0,0,578,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level05.tmx b/Source/Demos/Demo.TiledMaps/Content/level05.tmx new file mode 100644 index 000000000..80a7f5c71 --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level05.tmx @@ -0,0 +1,20 @@ + + + + + + + +0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,1,0,0,0,0, +0,0,0,0,2,0,2,0,0,0, +0,0,0,1,0,1,0,3,0,0, +0,0,3,0,3,0,3,0,0,0, +0,2,0,1,0,2,0,0,0,0, +3,0,3,0,2,0,0,0,0,0, +0,2,0,1,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0 + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level06.tmx b/Source/Demos/Demo.TiledMaps/Content/level06.tmx new file mode 100644 index 000000000..fe1d5bf88 --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level06.tmx @@ -0,0 +1,54 @@ + + + + + + + +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, +19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36, +37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, +73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108, +109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, +127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144, +145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, +163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180, +181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198, +199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216, +217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234, +235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252, +253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270, +271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288, +289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306, +307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324, +1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, +19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36, +37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, +73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108, +109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, +127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144, +145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162, +163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180, +181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198, +199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216, +217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234, +235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252, +253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270, +271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288, +289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306, +307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324 + + + + + + + + + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/level07.tmx b/Source/Demos/Demo.TiledMaps/Content/level07.tmx new file mode 100644 index 000000000..edf8a69cb --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/Content/level07.tmx @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzt3Utu20gUBVBZMqAP0IsK6WkvKqQ3ZtELCxlVtZ+eS3EPSHQnOIMD/ooEksn1q5+6027XzcZy7NL1WPSzIZzHZ0N4rz57mT1ddrv97Hre7d5nfz8BAFvoSwaP4TiE85rR8XoIGT4Esd3r7O18y/LDRZ4DwJZirR3zPGb1mM67kN9dOg4pz5f6XJ4DwLa6B/k8Ns6HRt6PKdPrs9rfvmT5NGf58+W//7cCwJ9qOn3t2rjO8jvvob/d+DkAbGs4fzamY34WDQ/OF4fzrTZf+tyfl6NMB4BNTCVzr+eP86nMYbuWLK5z1Gs21/a1L722j23rs/gdfe4AsI3uctMn3b84Zo/e7Uue63MHgG0cTjf7U/s82/+izb7x/LmMo0/G0AFgM4/mtce9Y/Iatbh+La53y/Pkh7Ju7an0uetvB4Bt5D1hah7HPd9+tQ9ca9+ZPjyvef5zzdrsVY0OAKvrQ46Pp/s15bE+70/3beP+MV0j6+u3lnXo38oYuhodALaRa+q8L8zYuJezP+pP9/X86/E2hl73cpfnALC+LmV1zPW8R1yuzVsZXt+J/fR1rzj7ygDANmJ/eszheL/Vv94aL4/99PF57HPPef7X/+D/AAB+d0OqpWtmx99WyW1a8h7u0dLnPhxvNbr+dgBYX621u9P9mHgeM49j63ltWsz+2N8ev7XU6G/62wFgE33K5NY6tZj1+XfV4tz3XMPHvwXqujX1OQCsL2Z0XFPeqrvzfPY8Ny7+TRDH0zt5DgCb+iq/+5TPw+lzLR/HyvOc9/p9/e0AsJ3Yv97aDy6e5/74LmV7zPs89v5a8lx9DgDry/u3dim3Yx98zOsxPYt5HtvkNejqcwBYX5zLFtel5THw2Cbeb61py2Pqo/ocADYVx8/zXLesazzLa9lijd+lPDcfDgC2EWvqPDcuXuc9ZnJt3ppTF8fja3+731gDgPXFWro1v+3R+vLWOrf8rfi92t/uN1kAYH25Dz3PbYt95l2jTZ4Pl+v2+o2a5wdz4gBgdXEfmDwnLtbkrRyP2Z3nv+Ux95rnkzlxALC66fh5XlveP2Y5vs/tpvl4PX0cq+UbrXnyMdPr+PnPPF/63dXoALCat5TJsf+8Kzm+PH9f8njO4HE2BMvctreY9cf2HnF1f7hrqdH1uQPAeoZSK78d72vvf2rw+f73kuOHksXVocxXH8rznO3X+K3jx3y4vTF0AFjV9XyfyfU4hutDyOHD5T7PD+Fe/U78Vrw+lHeu6nMAWFU352tf+sGrKRxr/k4h02O72mZ/+Xgvvlvv1dxf2r3M1508B4BVfTvfcr3qv5DbPXr3UZsX89sBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Lf0A/TFFts= + + + + + eJzt3UsKwjAUBdBM/YA0u/KzMZ3oVlyGTnRJRnDgINFCaUPKOZDJ4xI6e/BIkxCGOXchXLqBmwAAVT1SL39++vl1U/dbAAAAAACgNrNyAAAAqOvYhXDKnFHP1ftmSzkAYBy31Hfvmd6bq/fNlnIAwDgWMYRl7Ff/l12ltY7lHAAwjm3qu7tM783V3+fmfmX3aR1ieU8AAABgWv6BAwAAAAAAAKBV3j8FgPZ9v38KALTHeXQAAAAAAJjWkNm8uT4AAAAAAAAAc+c+GgBon/toAAAAAAAAAAAAAAAAAAAAKPH+CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMwwu87SLa + + + + + eJzt3bEJACAMBEAnyEbuv5ZYCxY24eVugnQPz0PGAAAAAJLM6r4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASORXOgAAAAAAAAAAAAAAr2zSAQAAAAAAAAAA4G5v7eztACCbPAcAAAAAgJPuHADyyXMAAAAAAOihoweAXHIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4yq/sCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBMC62gA4U= + + + + + + diff --git a/Source/Demos/Demo.TiledMaps/Content/non-uniform-tileset.png b/Source/Demos/Demo.TiledMaps/Content/non-uniform-tileset.png new file mode 100644 index 000000000..981ff74d0 Binary files /dev/null and b/Source/Demos/Demo.TiledMaps/Content/non-uniform-tileset.png differ diff --git a/Source/Demos/Demo.TiledMaps/Content/untitled.tmx b/Source/Demos/Demo.TiledMaps/Content/untitled.tmx deleted file mode 100644 index 36c291bba..000000000 --- a/Source/Demos/Demo.TiledMaps/Content/untitled.tmx +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QggAAEIIAACDCAAAQggAAEIIAABCCAAAgwgAAEIIAACDCAAAgwgAAEMIAACCCAAAgwgAAEMIAABCCAAAgwgAAIMIAACCCAAAQggAAEIIAABDCAAAQggAAEQIAAABCgAAAgoAAMIJAADECQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABDCAAAQwgAAIMIAABDCAAAgwgAAIIIAABDCAAAgwgAAEIIAABDCAAAQwgAAIMIAABCCAAAgggAAIIIAABCCAAAgggAAIIIAACCCAAAQwgAAEMIAACDCAAAhAgAAMEJAADCCQAAAwoAAMQJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEMIAABCCAAAgwgAAEMIAACDCAAAgggAAEIIAACCCAAAgggAAIMIAACCCAAAgggAAIMIAABCCAAAgggAAEMIAABCCAAAQwgAAEIIAABDCAAAgggAAIMIAACECAAAwQkAAAIKAAADCgAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAQggAAEIIAACCCAAAQwgAAEIIAABDCAAAgwgAAEIIAABDCAAAgwgAAEIIAACCCAAAgwgAAIIIAABCCAAAgggAAIMIAABCCAAAQwgAAEIIAACCCAAAQggAAEQIAAABCgAAAwoAAMMJAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAADDCAAAwwgAAMMIAADDCAAAwwgAAMMIAADDCAAAwwgAAMMIAADCCAAAwwgAAMMIAADDCAAAwggAAMIIAADCCAAAwggAAMIIAADDCAAAwwgAAMMIAADDCAAAxAgAAMEJAADCCQAAwgkAAMQJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAIIJAACCCQAAggkAAIIJAACCCQAAgwkAAIIJAACDCQAAggkAAIIJAACCCQAAggkAAIMJAACDCQAAgwkAAIMJAACCCQAAgwkAAIMJAACCCQAAgwkAAIMJAACDCQAAAwkAAMMJAAACCgAABAkAAAIJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAwwkAAMMJAADCCQAAwwkAAMMJAADDCQAAAwoAAMIJAAACCgAAAgoAAMIJAADDCQAAAgoAAMMJAADCCQAAAwoAAMMJAADDCQAAAwoAAAIKAAACCgAAwgkAAAMKAADDCQAAAwoAAMIJAAACCgAABAoAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCgAAQgoAAEMKAABDCgAAQwoAAEMKAABCCgAAQwoAAEIKAABDCgAAQgoAAEMKAABCCgAAQwoAAEIKAABCCgAAQgoAAEIKAABCCgAAQwoAAEMKAABCCgAAQwoAAEIKAABDCgAAQwkAAAIKAADECQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAAMIAAADCAAAAggAAAMIAAADCAAAAggAAAMIAAADCAAAAwgAAAMIAAADCAAAAwgAAAIIAAADCAAAAggAAAMIAAADCAAAAwgAAAMIAAACCAAAAggAAAMIAAACCAAAAwgAAAQIAADBCQAAwwkAAMQJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAgggAAEMIAABCCAAAQwgAAIMIAABCCAAAgggAAIMIAABDCAAAgwgAAEIIAACCCAAAQwgAAIMIAACCCAAAgggAAEMIAABCCAAAgwgAAEIIAACCCAAAQwgAAEIIAACCCAAAhAgAAAEKAADCCQAABAoAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCAAAgggAAIIIAACCCAAAgggAAEMIAACCCAAAQggAAEIIAACDCAAAgwgAAIIIAABCCAAAQggAAEMIAABCCAAAQwgAAIMIAABCCAAAQwgAAEMIAABDCAAAQwgAAEIIAACECAAAAQoAAMMJAAAECQAAhAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEMIAACCCAAAgggAAIMIAACCCAAAgwgAAEIIAACDCAAAQwgAAIMIAABDCAAAQwgAAIIIAACCCAAAQggAAEMIAACCCAAAQggAAIIIAABCCAAAQggAAEMIAACDCAAAgggAAEQIAABBCgAAQwkAAMIJAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAQwgAAEMIAABDCAAAQwgAAEMIAABCCAAAgggAAEIIAACDCAAAQwgAAEIIAACCCAAAQggAAIIIAACDCAAAgggAAIMIAACDCAAAgwgAAIMIAABDCAAAgwgAAIMIAACCCAAAhAcAAAQIAAABCgAAAgoAAAQKAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCAAAQggAAIIIAABCCAAAQwgAAEMIAABDCAAAgwgAAEIIAABDCAAAgwgAAIIIAACCCAAAQggAAEMIAACDCAAAgwgAAEMIAACDCAAAgwgAAIMIAABCCAAAQggAAIMIAACDCAAARAgAAAEKAADCCQAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEMIAACDCAAAQwgAAEIIAABCCAAAgwgAAEMIAACDCAAAQwgAAIIIAABCCAAAQwgAAIIIAABCCAAAQggAAEMIAABDCAAAQwgAAEMIAACDCAAAQggAAIMIAABCCAAAQwgAAEMIAABECAAAQQoAAEMJAADECQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAgggAAEIIAACDCAAAgwgAAEMIAACCCAAAQwgAAIIIAACDCAAAgggAAEIIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAQggAAEMIAABCCAAAgggAAIIIAACCCAAAgggAAIQHAACCBwAAAQoAAAQKAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCAAAQggAAEIIAACDCAAAgggAAIMIAABDCAAAQggAAIIIAABCCAAAQwgAAEMIAABCCAAAgwgAAEIIAACCCAAAQwgAAEMIAACCCAAAgwgAAIMIAABCCAAAQggAAIIIAACDCAAAQwgAAEQIAADBCQAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEMIAABDCAAAQwgAAIIIAACCCAAAQggAAEIIAACDCAAAgwgAAEIIAACDCAAAgggAAEIIAACCCAAAgwgAAEIIAACDCAAAQwgAAEMIAABCCAAAgwgAAIMIAACDCAAAgggAAEIIAABDCAAAhAgAAAEKAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAgggAAEIIAACCCAAAQwgAAEIIAABDCAAAQwgAAEMIAACCCAAAgwgAAIMIAACCCAAAgwgAAIMIAACDCAAAgggAAEIIAABDCAAAgwgAAEMIAACCCAAAgggAAEMIAACDCAAAQggAAEIIAACECAAAAQoAAAQKAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCAAAQwgAAEMIAABDCAAAgggAAIMIAACDCAAAgggAAEMIAACCCAAAQwgAAIMIAACCCAAAQwgAAIIIAACCCAAAQggAAIIIAACCCAAAgggAAIMIAACDCAAAQwgAAIMIAABCCAAAQwgAAEQIAADBCQAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAIIIAABCCAAAQggAAEIIAABCCAAAgwgAAIMIAACCCAAAgwgAAIMIAACCCAAAgggAAIIIAABCCAAAQggAAEIIAABDCAAAgggAAIIIAACDCAAAgggAAEMIAABCCAAAgggAAEIIAABDCAAAhAgAAMEJAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAQggAAEIIAABDCAAAQggAAEIIAACCCAAAgggAAEIIAABDCAAAQggAAEMIAACDCAAAgggAAEMIAACDCAAAQwgAAEIIAABDCAAAgggAAIMIAACCCAAAgggAAEMIAACDCAAAgwgAAIMIAABECAAAAQoAAMQJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABDCAAAQwgAAEIIAACCCAAAQggAAIMIAACCCAAAQwgAAIMIAABCCAAAQwgAAEIIAACCCAAAQwgAAIMIAABCCAAAgggAAIMIAACCCAAAQggAAIMIAABCCAAAQwgAAIMIAABDCAAAgwgAAIQIAADBCQAABAoAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEIIAABDCAAAQwgAAIMIAACDCAAAgwgAAIIIAACCCAAAgggAAIIIAACCCAAAQggAAIMIAACCCAAAgggAAIIIAABCCAAAQwgAAEMIAABCCAAAQggAAEIIAACCCAAAQggAAEMIAACDCAAAhAgAAAEKAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAQggAAIMIAABCCAAAQggAAEMIAABDCAAAQwgAAEIIAABDCAAAQwgAAIIIAABDCAAAgggAAIMIAABCCAAAgggAAIMIAACCCAAAQwgAAEMIAABDCAAAgggAAIMIAABCCAAAQggAAIMIAABECAAAAQoAAAQJAACECQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABCCAAAgggAAEIIAABCCAAAQwgAAIIIAACCCAAAgwgAAIMIAABDCAAAQwgAAEIIAACDCAAAgwgAAIIIAABCCAAAgggAAEMIAABCCAAAQggAAIIIAABCCAAAQggAAEIIAABDCAAAgggAAIQIAADBCQAAAgoAAAQKAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEIIAACDCAAAgggAAIIIAABDCAAAgggAAIMIAACCCAAAQggAAEMIAACDCAAAQggAAIIIAABDCAAAgggAAIMIAABCCAAAQwgAAIIIAACDCAAAQggAAIIIAACDCAAAgggAAIIIAABCCAAAhAgAAMEJAAADCgAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAgwgAAEMIAACCCAAAQggAAIIIAABCCAAAgwgAAEMIAABCCAAAgwgAAIIIAABDCAAAgggAAIMIAABCCAAAQggAAIIIAACDCAAAQwgAAIMIAABDCAAAgwgAAIIIAACCCAAAQggAAIMIAACECAAAwQkAAMMJAAAECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAADDBwAAgggAAEIIAABDCAAAQwgAAIIIAABDCAAAgwgAAIIIAACDCAAAxAcAAMMIAADCCAAAwwgAAMIIAADCCAAAwggAAMMHAABDCAAAQwgAAEIIAACCCAAAQggAAIIIAACCCAAAQggAAEQIAAABCgAAwwkAAAQJAAACCQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAMEIAADCCAAAwwcAAEMIAABCCAAAQwgAAIIIAABCCAAAxAcAAMIIAADECAAAAQkAAIMJAACCCQAAggkAAIIJAACECQAAwQcAAMMIAADCCAAAwwcAAIMIAACDCAAAQwgAAIMIAABCCAAARAgAAMEJAADCCQAAwwkAAMQJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAAggkAAAIJAADBBwAAwggAAMMIAADCCAAAwwgAAMIIAADCBwAAgQkAAIMJAAADCQAAwwkAAMMJAADDCQAAAwoAAAQJAACCCQAAgwkAAIQJAADBBwAAwwgAAMIIAADCCAAAwggAAMMIAADCBwAAwQkAAAIKAAACCgAAxAkAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAADCCQAABAkAAIIJAACDCQAAggkAAIMJAACDCQAAgwkAAIIJAAADCQAAAgoAAAIKAAADCgAAwwkAAMMJAAADCgAAAwoAAAMKAADDCQAABAkAAIIJAACCCQAAgwkAAIIJAACCCQAAggkAAIMJAAADCQAAAwoAAMIJAADECQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEIKAABDCQAAwgkAAMIJAADCCQAAwwkAAMIJAADDCQAAAwoAAMIJAADDCQAAAgoAAAIKAADCCQAAwgkAAMMJAADDCQAAAwoAAAIKAADDCQAAwgkAAMIJAADDCQAAAwoAAMMJAADCCQAAAwoAAAMKAAACCgAARAkAAEIJAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAEEJAABCCgAAQgoAAEIKAABDCgAAQwoAAEMKAABDCgAAQwoAAEMKAABDCgAAQwoAAEIKAABCCgAAQwoAAEMKAABCCgAAQgoAAEIKAABDCgAAQwoAAEMKAABCCgAAQwoAAEMKAABCCgAAQgoAAEIKAABECgAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAE0BAABNAQAATQEAAA== - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI8RAACQEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzxEAANARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkRAACKEQAAAAAAAAAAAAAAAAAAAAAAAIkRAACKEQAAAAAAAAAAAAAAAAAAiREAAIoRAAAAAAAAAAAAAAAAAAAAAAAAiREAAIoRAAAAAAAAAAAAAIkRAACKEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyREAAMoRAAAAAAAAAAAAAAAAAAAAAAAAyREAAMoRAAAAAAAAAAAAAAAAAADJEQAAyhEAAAAAAAAAAAAAAAAAAAAAAADJEQAAyhEAAAAAAAAAAAAAyREAAMoRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEgAAChIAAAAAAAAAAAAAAAAAAAAAAAAJEgAAChIAAAAAAAAAAAAAAAAAAAkSAAAKEgAAAAAAAAAAAAAAAAAAAAAAAAkSAAAKEgAACxIAAAwSAAAJEgAAChIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkSAABKEgAAAAAAAAAAAAAAAAAAAAAAAEkSAABKEgAAAAAAAAAAAAAAAAAASRIAAEoSAAAAAAAAAAAAAAAAAAAAAAAASRIAAEoSAABLEgAATBIAAEkSAABKEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI8RAACQEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzxEAANARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPEQAAkBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8RAADQEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - - diff --git a/Source/Demos/Demo.TiledMaps/CustomEffect.cs b/Source/Demos/Demo.TiledMaps/CustomEffect.cs new file mode 100644 index 000000000..e4dd73b1f --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/CustomEffect.cs @@ -0,0 +1,24 @@ +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Graphics.Effects; + +namespace Demo.TiledMaps +{ + public class CustomEffect : DefaultEffect, ITiledMapEffect + { + public CustomEffect(GraphicsDevice graphicsDevice) + : base(graphicsDevice) + { + } + + public CustomEffect(GraphicsDevice graphicsDevice, byte[] byteCode) + : base(graphicsDevice, byteCode) + { + + } + + public CustomEffect(Effect cloneSource) + : base(cloneSource) + { + } + } +} diff --git a/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj b/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj index 8620d73bf..465297de7 100644 --- a/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj +++ b/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj @@ -12,6 +12,21 @@ DesktopGL v4.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true true @@ -23,6 +38,8 @@ 4 false false + 6 + x86 true @@ -36,40 +53,88 @@ Icon.ico + - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + - + + Designer + + + Designer + + + + + + - + @@ -81,11 +146,26 @@ + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + + + {07b2ade2-73e3-41c4-aea1-d5566a5ab902} + MonoGame.Extended.Tiled + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.TiledMaps/packages.config b/Source/Demos/Demo.TiledMaps/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.TiledMaps/packages.config +++ b/Source/Demos/Demo.TiledMaps/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj b/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj index 13a199bf7..59bd78bd0 100644 --- a/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj +++ b/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj @@ -23,6 +23,8 @@ 4 false false + x64 + 6 true @@ -41,29 +43,64 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.0.1678\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True - + + + libopenal.1.dylib + PreserveNewest + + + libSDL2-2.0.0.dylib + PreserveNewest + + + x64\SDL2.dll + PreserveNewest + + + x64\soft_oal.dll + PreserveNewest + + + x86\SDL2.dll + PreserveNewest + + + x86\soft_oal.dll + PreserveNewest + + + + + x64\libopenal.so.1 + PreserveNewest + + + x64\libSDL2-2.0.so.0 + PreserveNewest + + + x86\libopenal.so.1 + PreserveNewest + + + x86\libSDL2-2.0.so.0 + PreserveNewest + + diff --git a/Source/Demos/Demo.ViewportAdapters/Game1.cs b/Source/Demos/Demo.ViewportAdapters/Game1.cs index 925efbb43..792e4fd0a 100644 --- a/Source/Demos/Demo.ViewportAdapters/Game1.cs +++ b/Source/Demos/Demo.ViewportAdapters/Game1.cs @@ -48,7 +48,7 @@ protected override void Initialize() // the boxing viewport adapter uses letterboxing or pillarboxing to maintain aspect ratio // it's a little more complicated and needs to listen to the window client size changing event - _boxingViewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480); + _boxingViewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, 800, 480, 88, 70); // typically you'll only ever want to use one viewport adapter for a game, but in this sample we'll be // switching between them. @@ -109,17 +109,17 @@ protected override void Draw(GameTime gameTime) _spriteBatch.Begin(transformMatrix: _currentViewportAdapter.GetScaleMatrix()); _spriteBatch.Draw(_backgroundTexture, destinationRectangle, Color.White); - _spriteBatch.DrawString(_bitmapFont, $"Press D: {typeof (DefaultViewportAdapter).Name}", new Vector2(5, 5), Color.White); + _spriteBatch.DrawString(_bitmapFont, $"Press D: {typeof (DefaultViewportAdapter).Name}", new Vector2(49, 40), Color.White); - _spriteBatch.DrawString(_bitmapFont, $"Press S: {typeof (ScalingViewportAdapter).Name}", new Vector2(5, 5 + _bitmapFont.LineHeight * 1), Color.White); + _spriteBatch.DrawString(_bitmapFont, $"Press S: {typeof (ScalingViewportAdapter).Name}", new Vector2(49, 40 + _bitmapFont.LineHeight * 1), Color.White); - _spriteBatch.DrawString(_bitmapFont, $"Press B: {typeof (BoxingViewportAdapter).Name}", new Vector2(5, 5 + _bitmapFont.LineHeight * 2), Color.White); + _spriteBatch.DrawString(_bitmapFont, $"Press B: {typeof (BoxingViewportAdapter).Name}", new Vector2(49, 40 + _bitmapFont.LineHeight * 2), Color.White); - _spriteBatch.DrawString(_bitmapFont, $"Current: {_currentViewportAdapter.GetType().Name}", new Vector2(5, 5 + _bitmapFont.LineHeight * 4), Color.Black); + _spriteBatch.DrawString(_bitmapFont, $"Current: {_currentViewportAdapter.GetType().Name}", new Vector2(49, 40 + _bitmapFont.LineHeight * 4), Color.Black); - _spriteBatch.DrawString(_bitmapFont, @"Try resizing the window", new Vector2(5, 5 + _bitmapFont.LineHeight * 6), Color.Black); + _spriteBatch.DrawString(_bitmapFont, @"Try resizing the window", new Vector2(49, 40 + _bitmapFont.LineHeight * 6), Color.Black); - _spriteBatch.DrawString(_bitmapFont, $"Mouse: {_mousePosition}", new Vector2(5, 5 + _bitmapFont.LineHeight * 8), Color.Black); + _spriteBatch.DrawString(_bitmapFont, $"Mouse: {_mousePosition}", new Vector2(49, 40 + _bitmapFont.LineHeight * 8), Color.Black); _spriteBatch.End(); diff --git a/Source/Demos/Demo.ViewportAdapters/Icon.bmp b/Source/Demos/Demo.ViewportAdapters/Icon.bmp new file mode 100644 index 000000000..2b481653e Binary files /dev/null and b/Source/Demos/Demo.ViewportAdapters/Icon.bmp differ diff --git a/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config b/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.ViewportAdapters/app.manifest b/Source/Demos/Demo.ViewportAdapters/app.manifest new file mode 100644 index 000000000..d13ebce0c --- /dev/null +++ b/Source/Demos/Demo.ViewportAdapters/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + diff --git a/Source/Demos/Demo.ViewportAdapters/packages.config b/Source/Demos/Demo.ViewportAdapters/packages.config index a5caee241..9b38dcf77 100644 --- a/Source/Demos/Demo.ViewportAdapters/packages.config +++ b/Source/Demos/Demo.ViewportAdapters/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/ProjectTemplates/MonoGame.Extended Demo Project.zip b/Source/Demos/DemoProjectTemplate/MonoGame.Extended Demo Project.zip similarity index 100% rename from ProjectTemplates/MonoGame.Extended Demo Project.zip rename to Source/Demos/DemoProjectTemplate/MonoGame.Extended Demo Project.zip diff --git a/ProjectTemplates/README.md b/Source/Demos/DemoProjectTemplate/README.md similarity index 100% rename from ProjectTemplates/README.md rename to Source/Demos/DemoProjectTemplate/README.md diff --git a/Source/Demos/README.md b/Source/Demos/README.md new file mode 100644 index 000000000..dd4690d15 --- /dev/null +++ b/Source/Demos/README.md @@ -0,0 +1,9 @@ +# Demos + +Each of these demos are setup like the MonoGame 3.6 Cross Platform Desktop Project template. + +This means you'll *need* to have MonoGame 3.6 installed on your machine because some of the +files are expected to be on your machine. + +To run each demo in Visual Studio right click the project and select 'Set as StartUp Project' +then run it as usual. diff --git a/Source/MonoGame.Extended.Animations.nuspec b/Source/MonoGame.Extended.Animations.nuspec new file mode 100644 index 000000000..3785e3980 --- /dev/null +++ b/Source/MonoGame.Extended.Animations.nuspec @@ -0,0 +1,34 @@ + + + + + MonoGame.Extended.Animations + $version$ + + Animations to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Animations + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended animation sprite sheet + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Animations/AnimatedSprite.cs b/Source/MonoGame.Extended.Animations/AnimatedSprite.cs new file mode 100644 index 000000000..4cd6f9a0e --- /dev/null +++ b/Source/MonoGame.Extended.Animations/AnimatedSprite.cs @@ -0,0 +1,47 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Animations.SpriteSheets; +using MonoGame.Extended.Sprites; + +namespace MonoGame.Extended.Animations +{ + public class AnimatedSprite : Sprite + { + private readonly SpriteSheetAnimationFactory _animationFactory; + private SpriteSheetAnimation _currentAnimation; + + public AnimatedSprite(SpriteSheetAnimationFactory animationFactory, string playAnimation = null) + : base(animationFactory.Frames[0]) + { + _animationFactory = animationFactory; + + if (playAnimation != null) + Play(playAnimation); + } + + public SpriteSheetAnimation Play(string name, Action onCompleted = null) + { + if ((_currentAnimation == null) || _currentAnimation.IsComplete || (_currentAnimation.Name != name)) + { + _currentAnimation = _animationFactory.Create(name); + _currentAnimation.OnCompleted = onCompleted; + } + + return _currentAnimation; + } + + public void Update(float deltaTime) + { + if ((_currentAnimation != null) && !_currentAnimation.IsComplete) + { + _currentAnimation.Update(deltaTime); + TextureRegion = _currentAnimation.CurrentFrame; + } + } + + public void Update(GameTime gameTime) + { + Update(gameTime.GetElapsedSeconds()); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/Animation.cs b/Source/MonoGame.Extended.Animations/Animation.cs new file mode 100644 index 000000000..4c7a14678 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/Animation.cs @@ -0,0 +1,86 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Animations +{ + public abstract class Animation : IUpdate, IDisposable + { + private readonly bool _disposeOnComplete; + private readonly Action _onCompleteAction; + private bool _isComplete; + + protected Animation(Action onCompleteAction, bool disposeOnComplete) + { + _onCompleteAction = onCompleteAction; + _disposeOnComplete = disposeOnComplete; + IsPaused = false; + } + + public bool IsComplete + { + get { return _isComplete; } + protected set + { + if (_isComplete != value) + { + _isComplete = value; + + if (_isComplete) + { + _onCompleteAction?.Invoke(); + + if (_disposeOnComplete) + Dispose(); + } + } + } + } + + public bool IsDisposed { get; private set; } + public bool IsPlaying => !IsPaused && !IsComplete; + public bool IsPaused { get; private set; } + public float CurrentTime { get; protected set; } + + public virtual void Dispose() + { + IsDisposed = true; + } + + public void Update(GameTime gameTime) + { + Update(gameTime.GetElapsedSeconds()); + } + + public void Play() + { + IsPaused = false; + } + + public void Pause() + { + IsPaused = true; + } + + public void Stop() + { + Pause(); + Rewind(); + } + + public void Rewind() + { + CurrentTime = 0; + } + + protected abstract bool OnUpdate(float deltaTime); + + public void Update(float deltaTime) + { + if (!IsPlaying) + return; + + CurrentTime += deltaTime; + IsComplete = OnUpdate(deltaTime); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/AnimationComponent.cs b/Source/MonoGame.Extended.Animations/AnimationComponent.cs new file mode 100644 index 000000000..79ed8c0bb --- /dev/null +++ b/Source/MonoGame.Extended.Animations/AnimationComponent.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Animations +{ + public class AnimationComponent : GameComponent + { + public AnimationComponent(Game game) + : base(game) + { + Animations = new List(); + } + + public List Animations { get; } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + for (var i = Animations.Count - 1; i >= 0; i--) + { + var animation = Animations[i]; + animation.Update(gameTime); + } + + Animations.RemoveAll(a => a.IsDisposed); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/MonoGame.Extended.Animations.csproj b/Source/MonoGame.Extended.Animations/MonoGame.Extended.Animations.csproj new file mode 100644 index 000000000..54777ac04 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/MonoGame.Extended.Animations.csproj @@ -0,0 +1,61 @@ + + + + + 10.0 + Debug + AnyCPU + {587CE536-216F-41A1-B223-AE502C125B09} + Library + MonoGame.Extended.Animations + MonoGame.Extended.Animations + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Animations/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..094684990 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Animations")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Animations")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimation.cs b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimation.cs new file mode 100644 index 000000000..06c850ec5 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimation.cs @@ -0,0 +1,102 @@ +using System; +using System.Linq; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Animations.SpriteSheets +{ + public class SpriteSheetAnimation : Animation + { + public const float DefaultFrameDuration = 0.2f; + + public SpriteSheetAnimation(string name, TextureAtlas textureAtlas, float frameDuration = DefaultFrameDuration, + bool isLooping = true, bool isReversed = false, bool isPingPong = false) + : this(name, textureAtlas.Regions.ToArray(), frameDuration, isLooping, isReversed, isPingPong) + { + } + + public SpriteSheetAnimation(string name, TextureRegion2D[] keyFrames, float frameDuration = DefaultFrameDuration, + bool isLooping = true, bool isReversed = false, bool isPingPong = false) + : base(null, false) + { + Name = name; + KeyFrames = keyFrames; + FrameDuration = frameDuration; + IsLooping = isLooping; + IsReversed = isReversed; + IsPingPong = isPingPong; + CurrentFrameIndex = IsReversed ? KeyFrames.Length - 1 : 0; + } + + public SpriteSheetAnimation(string name, TextureRegion2D[] keyFrames, SpriteSheetAnimationData data) + : this(name, keyFrames, data.FrameDuration, data.IsLooping, data.IsReversed, data.IsPingPong) + { + } + + public string Name { get; } + public TextureRegion2D[] KeyFrames { get; } + public float FrameDuration { get; set; } + public bool IsLooping { get; set; } + public bool IsReversed { get; set; } + public bool IsPingPong { get; set; } + public new bool IsComplete => CurrentTime >= AnimationDuration; + + public float AnimationDuration => IsPingPong + ? (KeyFrames.Length*2 - 2)*FrameDuration + : KeyFrames.Length*FrameDuration; + + public TextureRegion2D CurrentFrame => KeyFrames[CurrentFrameIndex]; + public int CurrentFrameIndex { get; private set; } + + public float FramesPerSecond + { + get { return 1.0f/FrameDuration; } + set { FrameDuration = value/1.0f; } + } + + public Action OnCompleted { get; set; } + + protected override bool OnUpdate(float deltaTime) + { + if (IsComplete) + { + OnCompleted?.Invoke(); + + if (IsLooping) + CurrentTime -= AnimationDuration; + } + + if (KeyFrames.Length == 1) + { + CurrentFrameIndex = 0; + return IsComplete; + } + + var frameIndex = (int) (CurrentTime/FrameDuration); + var length = KeyFrames.Length; + + if (IsPingPong) + { + frameIndex = frameIndex%(length*2 - 2); + + if (frameIndex >= length) + frameIndex = length - 2 - (frameIndex - length); + } + + if (IsLooping) + { + if (IsReversed) + { + frameIndex = frameIndex%length; + frameIndex = length - frameIndex - 1; + } + else + frameIndex = frameIndex%length; + } + else + frameIndex = IsReversed ? Math.Max(length - frameIndex - 1, 0) : Math.Min(length - 1, frameIndex); + + CurrentFrameIndex = frameIndex; + return IsComplete; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationData.cs b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationData.cs new file mode 100644 index 000000000..235b3ce30 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationData.cs @@ -0,0 +1,21 @@ +namespace MonoGame.Extended.Animations.SpriteSheets +{ + public class SpriteSheetAnimationData + { + public SpriteSheetAnimationData(int[] frameIndicies, float frameDuration = 0.2f, bool isLooping = true, + bool isReversed = false, bool isPingPong = false) + { + FrameIndicies = frameIndicies; + FrameDuration = frameDuration; + IsLooping = isLooping; + IsReversed = isReversed; + IsPingPong = isPingPong; + } + + public int[] FrameIndicies { get; } + public float FrameDuration { get; } + public bool IsLooping { get; } + public bool IsReversed { get; } + public bool IsPingPong { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactory.cs b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactory.cs new file mode 100644 index 000000000..9615f4dfb --- /dev/null +++ b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactory.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Animations.SpriteSheets +{ + public class SpriteSheetAnimationFactory + { + private readonly Dictionary _animationDataDictionary; + + public SpriteSheetAnimationFactory(TextureAtlas textureAtlas) + : this(textureAtlas.Regions) + { + } + + public SpriteSheetAnimationFactory(IEnumerable frames) + { + _animationDataDictionary = new Dictionary(); + Frames = new ReadOnlyCollection(frames.ToArray()); + } + + public ReadOnlyCollection Frames { get; } + + public void Add(string name, SpriteSheetAnimationData data) + { + _animationDataDictionary.Add(name, data); + } + + public void Remove(string name) + { + _animationDataDictionary.Remove(name); + } + + public SpriteSheetAnimation Create(string name) + { + SpriteSheetAnimationData data; + + if (_animationDataDictionary.TryGetValue(name, out data)) + { + var keyFrames = data.FrameIndicies + .Select(i => Frames[i]) + .ToArray(); + + return new SpriteSheetAnimation(name, keyFrames, data); + } + + return null; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactoryReader.cs b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactoryReader.cs new file mode 100644 index 000000000..597b1043c --- /dev/null +++ b/Source/MonoGame.Extended.Animations/SpriteSheets/SpriteSheetAnimationFactoryReader.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Content; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Animations.SpriteSheets +{ + public class SpriteSheetAnimationFactoryReader : ContentTypeReader + { + protected override SpriteSheetAnimationFactory Read(ContentReader reader, SpriteSheetAnimationFactory existingInstance) + { + var textureAtlasAssetName = reader.GetRelativeAssetName(reader.ReadString()); + var textureAtlas = reader.ContentManager.Load(textureAtlasAssetName); + var frameCount = reader.ReadInt32(); + var regions = new List(); + + for (var i = 0; i < frameCount; i++) + { + var frameName = reader.ReadString(); + var textureRegion = textureAtlas[frameName]; + regions.Add(textureRegion); + } + + var animationFactory = new SpriteSheetAnimationFactory(regions); + var animationCount = reader.ReadInt32(); + + for (var i = 0; i < animationCount; i++) + { + var name = reader.ReadString(); + var framesPerSecond = reader.ReadInt32(); + var isLooping = reader.ReadBoolean(); + var isReversed = reader.ReadBoolean(); + var isPingPong = reader.ReadBoolean(); + var frameDuration = 1.0f / framesPerSecond; + var frameIndexCount = reader.ReadInt32(); + var frameIndicies = new int[frameIndexCount]; + + for (var f = 0; f < frameIndexCount; f++) + { + var frameIndex = reader.ReadInt32(); + frameIndicies[f] = frameIndex; + } + + var animationData = new SpriteSheetAnimationData(frameIndicies, frameDuration, isLooping, isReversed, + isPingPong); + animationFactory.Add(name, animationData); + } + + return animationFactory; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Animations/packages.config b/Source/MonoGame.Extended.Animations/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Animations/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collisions/CollisionActor.cs b/Source/MonoGame.Extended.Collisions/CollisionActor.cs similarity index 95% rename from Source/MonoGame.Extended/Collisions/CollisionActor.cs rename to Source/MonoGame.Extended.Collisions/CollisionActor.cs index 550c2c91f..1b50c2c76 100644 --- a/Source/MonoGame.Extended/Collisions/CollisionActor.cs +++ b/Source/MonoGame.Extended.Collisions/CollisionActor.cs @@ -1,17 +1,16 @@ using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; namespace MonoGame.Extended.Collisions { public class CollisionActor : IActorTarget { + private readonly IActorTarget _target; + public CollisionActor(IActorTarget target) { _target = target; } - private readonly IActorTarget _target; - public Vector2 Velocity { get { return _target.Velocity; } diff --git a/Source/MonoGame.Extended/Collisions/CollisionGrid.cs b/Source/MonoGame.Extended.Collisions/CollisionGrid.cs similarity index 75% rename from Source/MonoGame.Extended/Collisions/CollisionGrid.cs rename to Source/MonoGame.Extended.Collisions/CollisionGrid.cs index a20fbd594..10303bb16 100644 --- a/Source/MonoGame.Extended/Collisions/CollisionGrid.cs +++ b/Source/MonoGame.Extended.Collisions/CollisionGrid.cs @@ -1,25 +1,23 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; namespace MonoGame.Extended.Collisions { public class CollisionGrid { + private readonly CollisionGridCell[] _data; + public CollisionGrid(int[] data, int columns, int rows, int cellWidth, int cellHeight) { _data = new CollisionGridCell[data.Length]; for (var y = 0; y < rows; y++) - { for (var x = 0; x < columns; x++) { - var index = x + y * columns; + var index = x + y*columns; _data[index] = new CollisionGridCell(this, x, y, data[index]); } - } Columns = columns; Rows = rows; @@ -32,13 +30,11 @@ public CollisionGrid(int[] data, int columns, int rows, int cellWidth, int cellH public int CellWidth { get; } public int CellHeight { get; } - private readonly CollisionGridCell[] _data; - public CollisionGridCell GetCellAtIndex(int column, int row) { - var index = column + row * Columns; + var index = column + row*Columns; - if (index < 0 || index >= _data.Length) + if ((index < 0) || (index >= _data.Length)) return new CollisionGridCell(this, column, row, 0); return _data[index]; @@ -46,8 +42,8 @@ public CollisionGridCell GetCellAtIndex(int column, int row) public CollisionGridCell GetCellAtPosition(Vector3 position) { - var column = (int)(position.X / CellWidth); - var row = (int)(position.Y / CellHeight); + var column = (int) (position.X/CellWidth); + var row = (int) (position.Y/CellHeight); return GetCellAtIndex(column, row); } @@ -56,14 +52,12 @@ public IEnumerable GetCellsOverlappingRectangle(RectangleF re { var sx = (int) (rectangle.Left/CellWidth); var sy = (int) (rectangle.Top/CellHeight); - var ex = (int) ((rectangle.Right/CellWidth) + 1); - var ey = (int) ((rectangle.Bottom/CellHeight) + 1); + var ex = (int) (rectangle.Right/CellWidth + 1); + var ey = (int) (rectangle.Bottom/CellHeight + 1); for (var y = sy; y < ey; y++) - { for (var x = sx; x < ex; x++) yield return GetCellAtIndex(x, y); - } } public IEnumerable GetCollidables(RectangleF overlappingRectangle) @@ -74,7 +68,7 @@ public IEnumerable GetCollidables(RectangleF overlappingRectangle) public Rectangle GetCellRectangle(int column, int row) { - return new Rectangle(column * CellWidth, row * CellHeight, CellWidth, CellHeight); + return new Rectangle(column*CellWidth, row*CellHeight, CellWidth, CellHeight); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collisions/CollisionGridCell.cs b/Source/MonoGame.Extended.Collisions/CollisionGridCell.cs similarity index 95% rename from Source/MonoGame.Extended/Collisions/CollisionGridCell.cs rename to Source/MonoGame.Extended.Collisions/CollisionGridCell.cs index 8f8b80d01..ff79a2b42 100644 --- a/Source/MonoGame.Extended/Collisions/CollisionGridCell.cs +++ b/Source/MonoGame.Extended.Collisions/CollisionGridCell.cs @@ -1,9 +1,11 @@ -using MonoGame.Extended.Shapes; + namespace MonoGame.Extended.Collisions { public class CollisionGridCell : ICollidable { + private readonly CollisionGrid _parentGrid; + public CollisionGridCell(CollisionGrid parentGrid, int column, int row, int data) { _parentGrid = parentGrid; @@ -13,8 +15,6 @@ public CollisionGridCell(CollisionGrid parentGrid, int column, int row, int data Flag = data == 0 ? CollisionGridCellFlag.Empty : CollisionGridCellFlag.Solid; } - private readonly CollisionGrid _parentGrid; - public int Column { get; } public int Row { get; } public int Data { get; private set; } diff --git a/Source/MonoGame.Extended/Collisions/CollisionGridCellFlag.cs b/Source/MonoGame.Extended.Collisions/CollisionGridCellFlag.cs similarity index 100% rename from Source/MonoGame.Extended/Collisions/CollisionGridCellFlag.cs rename to Source/MonoGame.Extended.Collisions/CollisionGridCellFlag.cs diff --git a/Source/MonoGame.Extended/Collisions/CollisionInfo.cs b/Source/MonoGame.Extended.Collisions/CollisionInfo.cs similarity index 87% rename from Source/MonoGame.Extended/Collisions/CollisionInfo.cs rename to Source/MonoGame.Extended.Collisions/CollisionInfo.cs index 3ce6a8121..bee08dff1 100644 --- a/Source/MonoGame.Extended/Collisions/CollisionInfo.cs +++ b/Source/MonoGame.Extended.Collisions/CollisionInfo.cs @@ -1,5 +1,4 @@ using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; namespace MonoGame.Extended.Collisions { diff --git a/Source/MonoGame.Extended/Collisions/CollisionWorld.cs b/Source/MonoGame.Extended.Collisions/CollisionWorld.cs similarity index 81% rename from Source/MonoGame.Extended/Collisions/CollisionWorld.cs rename to Source/MonoGame.Extended.Collisions/CollisionWorld.cs index b3d424bab..5de88c135 100644 --- a/Source/MonoGame.Extended/Collisions/CollisionWorld.cs +++ b/Source/MonoGame.Extended.Collisions/CollisionWorld.cs @@ -1,12 +1,16 @@ using System; using System.Collections.Generic; using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; namespace MonoGame.Extended.Collisions { public class CollisionWorld : IDisposable, IUpdate { + private readonly List _actors; + + private readonly Vector2 _gravity; + private CollisionGrid _grid; + public CollisionWorld(Vector2 gravity) { _gravity = gravity; @@ -17,9 +21,28 @@ public void Dispose() { } - private readonly Vector2 _gravity; - private readonly List _actors; - private CollisionGrid _grid; + public void Update(GameTime gameTime) + { + var deltaTime = (float) gameTime.ElapsedGameTime.TotalSeconds; + + foreach (var actor in _actors) + { + actor.Velocity += _gravity*deltaTime; + actor.Position += actor.Velocity*deltaTime; + + if (_grid != null) + foreach (var collidable in _grid.GetCollidables(actor.BoundingBox)) + { + var intersection = RectangleF.Intersect(collidable.BoundingBox, actor.BoundingBox); + + if (intersection.IsEmpty) + continue; + + var info = GetCollisionInfo(actor, collidable, intersection); + actor.OnCollision(info); + } + } + } public CollisionActor CreateActor(IActorTarget target) { @@ -46,41 +69,20 @@ private CollisionInfo GetCollisionInfo(ICollidable first, ICollidable second, Re if (intersectingRectangle.Width < intersectingRectangle.Height) { - var d = first.BoundingBox.Center.X < second.BoundingBox.Center.X ? intersectingRectangle.Width : -intersectingRectangle.Width; + var d = first.BoundingBox.Center.X < second.BoundingBox.Center.X + ? intersectingRectangle.Width + : -intersectingRectangle.Width; info.PenetrationVector = new Vector2(d, 0); } else { - var d = first.BoundingBox.Center.Y < second.BoundingBox.Center.Y ? intersectingRectangle.Height : -intersectingRectangle.Height; + var d = first.BoundingBox.Center.Y < second.BoundingBox.Center.Y + ? intersectingRectangle.Height + : -intersectingRectangle.Height; info.PenetrationVector = new Vector2(0, d); } return info; } - - public void Update(GameTime gameTime) - { - var deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; - - foreach (var actor in _actors) - { - actor.Velocity += _gravity * deltaTime; - actor.Position += actor.Velocity * deltaTime; - - if(_grid != null) - { - foreach (var collidable in _grid.GetCollidables(actor.BoundingBox)) - { - var intersection = RectangleF.Intersect(collidable.BoundingBox, actor.BoundingBox); - - if (intersection.IsEmpty) - continue; - - var info = GetCollisionInfo(actor, collidable, intersection); - actor.OnCollision(info); - } - } - } - } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Collisions/CollisionWorldExtensions.cs b/Source/MonoGame.Extended.Collisions/CollisionWorldExtensions.cs new file mode 100644 index 000000000..ba9f22fd3 --- /dev/null +++ b/Source/MonoGame.Extended.Collisions/CollisionWorldExtensions.cs @@ -0,0 +1,17 @@ +//using System.Linq; +//using MonoGame.Extended.Tiled; + +//namespace MonoGame.Extended.Collisions +//{ +// public static class CollisionWorldExtensions +// { +// public static CollisionGrid CreateGrid(this CollisionWorld world, TiledTileLayer tileLayer) +// { +// var data = tileLayer.Tiles +// .Select(t => (int)t.GlobalIdentifier) +// .ToArray(); + +// return world.CreateGrid(data, tileLayer.Width, tileLayer.Height, tileLayer.TileWidth, tileLayer.TileHeight); +// } +// } +//} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collisions/IActorTarget.cs b/Source/MonoGame.Extended.Collisions/IActorTarget.cs similarity index 90% rename from Source/MonoGame.Extended/Collisions/IActorTarget.cs rename to Source/MonoGame.Extended.Collisions/IActorTarget.cs index db20078ac..df93ea9e1 100644 --- a/Source/MonoGame.Extended/Collisions/IActorTarget.cs +++ b/Source/MonoGame.Extended.Collisions/IActorTarget.cs @@ -1,5 +1,4 @@ using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; namespace MonoGame.Extended.Collisions { diff --git a/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj b/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj new file mode 100644 index 000000000..4e03c217d --- /dev/null +++ b/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj @@ -0,0 +1,74 @@ + + + + + 10.0 + Debug + AnyCPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A} + Library + Properties + MonoGame.Extended.Collisions + MonoGame.Extended.Collisions + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + 6 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + MonoGame.Extended.Tiled + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Collisions/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Collisions/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..adbac64e0 --- /dev/null +++ b/Source/MonoGame.Extended.Collisions/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Collisions")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Collisions")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Collisions/packages.config b/Source/MonoGame.Extended.Collisions/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Collisions/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorAnimation.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorAnimation.cs similarity index 68% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorAnimation.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorAnimation.cs index e9676314b..14638d4ee 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorAnimation.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorAnimation.cs @@ -4,15 +4,21 @@ namespace MonoGame.Extended.Content.Pipeline.Animations { public class AstridAnimatorAnimation { + public string Name { get; set; } + public int FramesPerSecond { get; set; } + public List Frames { get; set; } + public bool IsLooping { get; set; } + public bool IsReversed { get; set; } + public bool IsPingPong { get; set; } + public AstridAnimatorAnimation(string name, int framesPerSecond) { Name = name; FramesPerSecond = framesPerSecond; Frames = new List(); + IsLooping = true; + IsReversed = false; + IsPingPong = false; } - - public string Name { get; set; } - public int FramesPerSecond { get; set; } - public List Frames { get; set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorFile.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorFile.cs similarity index 99% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorFile.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorFile.cs index 0e086d370..765f2f24f 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorFile.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorFile.cs @@ -4,12 +4,12 @@ namespace MonoGame.Extended.Content.Pipeline.Animations { public class AstridAnimatorFile { + public string TextureAtlas { get; set; } + public List Animations { get; set; } + public AstridAnimatorFile() { Animations = new List(); } - - public string TextureAtlas { get; set; } - public List Animations { get; set; } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorImporter.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorImporter.cs similarity index 56% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorImporter.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorImporter.cs index 5218ad58c..d7575fd18 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorImporter.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorImporter.cs @@ -4,17 +4,20 @@ namespace MonoGame.Extended.Content.Pipeline.Animations { - [ContentImporter(".aa", DefaultProcessor = "AstridAnimatorProcessor", DisplayName = "Astrid Animator Importer - MonoGame.Extended")] + [ContentImporter(".aa", DefaultProcessor = "AstridAnimatorProcessor", + DisplayName = "Astrid Animator Importer - MonoGame.Extended")] public class AstridAnimatorImporter : ContentImporter> { public override ContentImporterResult Import(string filename, ContentImporterContext context) { using (var streamReader = new StreamReader(filename)) - using (var jsonReader = new JsonTextReader(streamReader)) { - var serializer = new JsonSerializer(); - var data = serializer.Deserialize(jsonReader); - return new ContentImporterResult(filename, data); + using (var jsonReader = new JsonTextReader(streamReader)) + { + var serializer = new JsonSerializer(); + var data = serializer.Deserialize(jsonReader); + return new ContentImporterResult(filename, data); + } } } } diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessor.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessor.cs similarity index 71% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessor.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessor.cs index 878ec8a95..e22d65b34 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessor.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessor.cs @@ -5,9 +5,11 @@ namespace MonoGame.Extended.Content.Pipeline.Animations { [ContentProcessor(DisplayName = "Astrid Animator Processor - MonoGame.Extended")] - public class AstridAnimatorProcessor : ContentProcessor, AstridAnimatorProcessorResult> + public class AstridAnimatorProcessor : + ContentProcessor, AstridAnimatorProcessorResult> { - public override AstridAnimatorProcessorResult Process(ContentImporterResult input, ContentProcessorContext context) + public override AstridAnimatorProcessorResult Process(ContentImporterResult input, + ContentProcessorContext context) { var data = input.Data; var directory = Path.GetDirectoryName(input.FilePath); @@ -16,7 +18,7 @@ public override AstridAnimatorProcessorResult Process(ContentImporterResult f) .Distinct(); - return new AstridAnimatorProcessorResult(directory, data, frames); + return new AstridAnimatorProcessorResult(directory, data, frames); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessorResult.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessorResult.cs similarity index 92% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessorResult.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessorResult.cs index 90923f77d..de92ec362 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorProcessorResult.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorProcessorResult.cs @@ -5,6 +5,11 @@ namespace MonoGame.Extended.Content.Pipeline.Animations { public class AstridAnimatorProcessorResult { + public string TextureAtlasAssetName { get; private set; } + public string Directory { get; private set; } + public AstridAnimatorFile Data { get; private set; } + public List Frames { get; private set; } + public AstridAnimatorProcessorResult(string directory, AstridAnimatorFile data, IEnumerable frames) { Directory = directory; @@ -12,10 +17,5 @@ public AstridAnimatorProcessorResult(string directory, AstridAnimatorFile data, Frames = new List(frames); TextureAtlasAssetName = Path.GetFileNameWithoutExtension(data.TextureAtlas); } - - public string TextureAtlasAssetName { get; private set; } - public string Directory { get; private set; } - public AstridAnimatorFile Data { get; private set; } - public List Frames { get; private set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorWriter.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorWriter.cs similarity index 80% rename from Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorWriter.cs rename to Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorWriter.cs index 193b8f2f0..6f56f3fe7 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Animations/AstridAnimatorWriter.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/AstridAnimatorWriter.cs @@ -1,6 +1,5 @@ using Microsoft.Xna.Framework.Content.Pipeline; using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; -using MonoGame.Extended.Animations; namespace MonoGame.Extended.Content.Pipeline.Animations { @@ -9,7 +8,7 @@ public class AstridAnimatorWriter : ContentTypeWriter + + + + Debug + AnyCPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57} + Library + Properties + MonoGame.Extended.Content.Pipeline.Animations + MonoGame.Extended.Content.Pipeline.Animations + v4.5 + 512 + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + ..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll + True + + + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + + + + + + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + MonoGame.Extended.Content.Pipeline + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Animations/MonoGame.Framework.dll.config b/Source/MonoGame.Extended.Content.Pipeline.Animations/MonoGame.Framework.dll.config new file mode 100644 index 000000000..09710ae46 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/MonoGame.Extended.Content.Pipeline.Animations/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Content.Pipeline.Animations/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..627cf1f55 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Content.Pipeline.Animations")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Content.Pipeline.Animations")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e41b1841-fb13-489f-92da-beee176a2c57")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Content.Pipeline.Animations/packages.config b/Source/MonoGame.Extended.Content.Pipeline.Animations/packages.config new file mode 100644 index 000000000..e6cd2b7c0 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Animations/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Graphics/MonoGame.Extended.Content.Pipeline.Graphics.csproj b/Source/MonoGame.Extended.Content.Pipeline.Graphics/MonoGame.Extended.Content.Pipeline.Graphics.csproj new file mode 100644 index 000000000..07269bb6e --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Graphics/MonoGame.Extended.Content.Pipeline.Graphics.csproj @@ -0,0 +1,75 @@ + + + + + Debug + AnyCPU + {F8FE7AF9-EFA9-4A3B-AE51-ECDC6A33BE1B} + Library + Properties + MonoGame.Extended.Content.Pipeline.Graphics + MonoGame.Extended.Content.Pipeline.Graphics + v4.5 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\Dependencies\MonoGame.Framework.dll + + + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll + + + + + + + + + + + + + + + + {28cd24bd-432c-4987-9e9d-65cfcf120ea0} + MonoGame.Extended.Content.Pipeline + + + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + MonoGame.Extended.Graphics + + + {41724C52-3D50-45BB-81EB-3C8A247EAFD1} + MonoGame.Extended + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Graphics/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Content.Pipeline.Graphics/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7b003f954 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Graphics/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Content.Pipeline.Graphics")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Content.Pipeline.Graphics")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f8fe7af9-efa9-4a3b-ae51-ecdc6a33be1b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/isometric_tileset.png b/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/isometric_tileset.png deleted file mode 100644 index 4c6f1b4ff..000000000 Binary files a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/isometric_tileset.png and /dev/null differ diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TiledMapImporterProcessorTests.cs b/Source/MonoGame.Extended.Content.Pipeline.Tests/TiledMapImporterProcessorTests.cs deleted file mode 100644 index 9a75ca046..000000000 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/TiledMapImporterProcessorTests.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System.Linq; -using Microsoft.Xna.Framework.Content.Pipeline; -using MonoGame.Extended.Content.Pipeline.Tiled; -using NSubstitute; -using NUnit.Framework; - -namespace MonoGame.Extended.Content.Pipeline.Tests -{ - [TestFixture] - public class TiledMapImporterProcessorTests - { - [Test] - public void TiledMapImporter_Import_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\level01.tmx"); - - var logger = Substitute.For(); - var importer = new TiledMapImporter(); - var importerContext = Substitute.For(); - importerContext.Logger.Returns(logger); - - var map = importer.Import(filePath, importerContext); - - Assert.AreEqual("1.0", map.Version); - Assert.AreEqual(TmxOrientation.Orthogonal, map.Orientation); - Assert.AreEqual(TmxRenderOrder.RightDown, map.RenderOrder); - Assert.AreEqual(20, map.Width); - Assert.AreEqual(10, map.Height); - Assert.AreEqual(128, map.TileWidth); - Assert.AreEqual(128, map.TileHeight); - Assert.AreEqual("#7d7d7d", map.BackgroundColor); - Assert.AreEqual("awesome", map.Properties[0].Name); - Assert.AreEqual("42", map.Properties[0].Value); - Assert.AreEqual(1, map.Tilesets.Count); - Assert.AreEqual(3, map.Layers.Count); - Assert.AreEqual(TmxOrientation.Orthogonal,map.Orientation); - - var tileset = map.Tilesets.First(); - Assert.AreEqual(1, tileset.FirstGid); - Assert.AreEqual("free-tileset.png", tileset.Image.Source); - Assert.AreEqual(652, tileset.Image.Width); - Assert.AreEqual(783, tileset.Image.Height); - Assert.AreEqual(2, tileset.Margin); - Assert.AreEqual("free-tileset", tileset.Name); - Assert.AreEqual(null, tileset.Source); - Assert.AreEqual(2, tileset.Spacing); - Assert.AreEqual(0, tileset.TerrainTypes.Count); - Assert.AreEqual(0, tileset.Properties.Count); - Assert.AreEqual(128, tileset.TileHeight); - Assert.AreEqual(128, tileset.TileWidth); - Assert.AreEqual(0, tileset.TileOffset.X); - Assert.AreEqual(0, tileset.TileOffset.Y); - - var tileLayer2 = (TmxTileLayer) map.Layers[0]; - Assert.AreEqual("Tile Layer 2", tileLayer2.Name); - Assert.AreEqual(1, tileLayer2.Opacity); - Assert.AreEqual(0, tileLayer2.Properties.Count); - Assert.AreEqual(true, tileLayer2.Visible); - Assert.AreEqual(200, tileLayer2.Data.Tiles.Count); - Assert.AreEqual(0, tileLayer2.X); - Assert.AreEqual(0, tileLayer2.Y); - - var imageLayer = (TmxImageLayer)map.Layers[1]; - Assert.AreEqual("Image Layer 1", imageLayer.Name); - Assert.AreEqual(1, imageLayer.Opacity); - Assert.AreEqual(0, imageLayer.Properties.Count); - Assert.AreEqual(true, imageLayer.Visible); - Assert.AreEqual("hills.png", imageLayer.Image.Source); - Assert.AreEqual(100, imageLayer.X); - Assert.AreEqual(100, imageLayer.Y); - - var tileLayer1 = (TmxTileLayer)map.Layers[2]; - Assert.AreEqual("Tile Layer 1", tileLayer1.Name); - Assert.AreEqual(2, tileLayer1.Properties.Count); - - Assert.AreEqual("customlayerprop", tileLayer1.Properties[0].Name); - Assert.AreEqual("1", tileLayer1.Properties[0].Value); - - Assert.AreEqual("customlayerprop2", tileLayer1.Properties[1].Name); - Assert.AreEqual("2", tileLayer1.Properties[1].Value); - } - - [Test] - public void TiledMapImporter_Xml_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-tileset-xml.tmx"); - var map = ImportAndProcessMap(filePath); - var layer = map.Layers.OfType().First(); - var actualData = layer.Data.Tiles.Select(i => i.Gid).ToArray(); - - Assert.IsNull(layer.Data.Encoding); - Assert.IsNull(layer.Data.Compression); - Assert.IsTrue(new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(actualData)); - } - - [Test] - public void TiledMapImporter_Csv_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-tileset-csv.tmx"); - var map = ImportAndProcessMap(filePath); - var layer = map.Layers.OfType().First(); - var data = layer.Data.Tiles.Select(i => i.Gid).ToArray(); - - Assert.AreEqual("csv", layer.Data.Encoding); - Assert.IsNull(layer.Data.Compression); - Assert.IsTrue(new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); - } - - [Test] - public void TiledMapImporter_Base64_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-tileset-base64.tmx"); - var map = ImportAndProcessMap(filePath); - var layer = map.Layers.OfType().First(); - var data = layer.Data.Tiles.Select(i => i.Gid).ToArray(); - - Assert.AreEqual("base64", layer.Data.Encoding); - Assert.IsNull(layer.Data.Compression); - Assert.IsTrue(new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); - } - - [Test] - public void TiledMapImporter_Gzip_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-tileset-gzip.tmx"); - var map = ImportAndProcessMap(filePath); - var layer = map.Layers.OfType().First(); - var data = layer.Data.Tiles.Select(i => i.Gid).ToArray(); - - Assert.AreEqual("base64", layer.Data.Encoding); - Assert.AreEqual("gzip", layer.Data.Compression); - Assert.IsTrue(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); - } - - - [Test] - public void TiledMapImporter_Zlib_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-tileset-zlib.tmx"); - var map = ImportAndProcessMap(filePath); - var layer = map.Layers.OfType().First(); - var data = layer.Data.Tiles.Select(i => i.Gid).ToArray(); - - Assert.AreEqual("base64", layer.Data.Encoding); - Assert.AreEqual("zlib", layer.Data.Compression); - Assert.IsTrue(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); - } - - [Test] - public void TiledMapImporter_ObjectLayer_Test() - { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\test-object-layer.tmx"); - var map = ImportAndProcessMap(filePath); - var tmxObjectGroup = map.ObjectGroups[0]; - var tmxObject = tmxObjectGroup.Objects[0]; - var tmxPolygon = tmxObjectGroup.Objects[3].Polygon; - var tmxPolyline = tmxObjectGroup.Objects[4].Polyline; - - Assert.AreEqual(1, map.ObjectGroups.Count); - Assert.AreEqual("Object Layer 1", tmxObjectGroup.Name); - Assert.AreEqual(1, tmxObject.Id); - Assert.AreEqual(131.345f, tmxObject.X); - Assert.AreEqual(65.234f, tmxObject.Y); - Assert.AreEqual(311.111f, tmxObject.Width); - Assert.AreEqual(311.232f, tmxObject.Height); - Assert.AreEqual(1, tmxObject.Properties.Count); - Assert.AreEqual("shape", tmxObject.Properties[0].Name); - Assert.AreEqual("circle", tmxObject.Properties[0].Value); - Assert.IsNotNull(tmxObject.Ellipse); - Assert.IsFalse(tmxObjectGroup.Objects[1].Visible); - Assert.AreEqual(-1, tmxObjectGroup.Objects[1].Gid); - Assert.AreEqual(23, tmxObjectGroup.Objects[5].Gid); - Assert.AreEqual("rectangle", tmxObjectGroup.Objects[2].Type); - Assert.IsNotNull(tmxPolygon); - Assert.AreEqual("0,0 180,90 -8,275 -45,81 38,77", tmxPolygon.Points); - Assert.IsNotNull(tmxPolyline); - Assert.AreEqual("0,0 28,299 326,413 461,308", tmxPolyline.Points); - } - - - private static TmxMap ImportAndProcessMap(string filename) - { - var logger = Substitute.For(); - var importer = new TiledMapImporter(); - var importerContext = Substitute.For(); - importerContext.Logger.Returns(logger); - - var processor = new TiledMapProcessor(); - var processorContext = Substitute.For(); - processorContext.Logger.Returns(logger); - - var import = importer.Import(filename, importerContext); - var result = processor.Process(import, processorContext); - - return result.Map; - } - } -} diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerAnimatedModelContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerAnimatedModelContent.cs new file mode 100644 index 000000000..c31ad6358 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerAnimatedModelContent.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using MonoGame.Extended.Content.Pipeline.Tiled; + +namespace MonoGame.Extended.Content.Pipeline.Graphics +{ + public class TiledMapLayerAnimatedModelContent : TiledMapLayerModelContent + { + private readonly List _animatedTilesetTiles; + + public ReadOnlyCollection AnimatedTilesetTiles { get; } + public TiledMapTilesetContent Tileset { get; } + + public TiledMapLayerAnimatedModelContent(string layerName, TiledMapTilesetContent tileset) + : base(layerName, tileset) + { + _animatedTilesetTiles = new List(); + AnimatedTilesetTiles = new ReadOnlyCollection(_animatedTilesetTiles); + Tileset = tileset; + } + + internal void AddAnimatedTile(TiledMapTilesetTileContent tile) + { + _animatedTilesetTiles.Add(tile); + } + } +} diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerModelContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerModelContent.cs new file mode 100644 index 000000000..9be5bb633 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Graphics/TiledMapLayerModelContent.cs @@ -0,0 +1,139 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Content.Pipeline.Tiled; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Content.Pipeline.Graphics +{ + public class TiledMapLayerModelContent + { + private readonly List _vertices; + private readonly List _indices; + + public string LayerName { get; } + public ReadOnlyCollection Vertices { get; } + public ReadOnlyCollection Indices { get; } + public Size2 ImageSize { get; } + public string TextureAssetName { get; } + + public TiledMapLayerModelContent(string layerName, TiledMapImageContent image) + { + LayerName = layerName; + _vertices = new List(); + Vertices = new ReadOnlyCollection(_vertices); + _indices = new List(); + Indices = new ReadOnlyCollection(_indices); + ImageSize = new Size2(image.Width, image.Height); + TextureAssetName = Path.ChangeExtension(image.Source, null); + } + + public TiledMapLayerModelContent(string layerName, TiledMapTilesetContent tileset) + : this(layerName, tileset.Image) + { + } + + public void AddTileVertices(Point2 position, Rectangle? sourceRectangle = null, TiledMapTileFlipFlags flags = TiledMapTileFlipFlags.None) + { + float texelLeft, texelTop, texelRight, texelBottom; + var sourceRectangle1 = sourceRectangle ?? new Rectangle(0, 0, (int)ImageSize.Width, (int)ImageSize.Height); + + if (sourceRectangle.HasValue) + { + var reciprocalWidth = 1f / ImageSize.Width; + var reciprocalHeight = 1f / ImageSize.Height; + texelLeft = (sourceRectangle1.X + 0.5f) * reciprocalWidth; + texelTop = (sourceRectangle1.Y + 0.5f) * reciprocalHeight; + texelRight = (sourceRectangle1.X + sourceRectangle1.Width) * reciprocalWidth; + texelBottom = (sourceRectangle1.Y + sourceRectangle1.Height) * reciprocalHeight; + } + else + { + texelLeft = 0; + texelTop = 0; + texelBottom = 1; + texelRight = 1; + } + + VertexPositionTexture vertexTopLeft, vertexTopRight, vertexBottomLeft, vertexBottomRight; + + vertexTopLeft.Position = new Vector3(position, 0); + vertexTopRight.Position = new Vector3(position + new Vector2(sourceRectangle1.Width, 0), 0); + vertexBottomLeft.Position = new Vector3(position + new Vector2(0, sourceRectangle1.Height), 0); + vertexBottomRight.Position = + new Vector3(position + new Vector2(sourceRectangle1.Width, sourceRectangle1.Height), 0); + + vertexTopLeft.TextureCoordinate.Y = texelTop; + vertexTopLeft.TextureCoordinate.X = texelLeft; + + vertexTopRight.TextureCoordinate.Y = texelTop; + vertexTopRight.TextureCoordinate.X = texelRight; + + vertexBottomLeft.TextureCoordinate.Y = texelBottom; + vertexBottomLeft.TextureCoordinate.X = texelLeft; + + vertexBottomRight.TextureCoordinate.Y = texelBottom; + vertexBottomRight.TextureCoordinate.X = texelRight; + + var flipDiagonally = (flags & TiledMapTileFlipFlags.FlipDiagonally) != 0; + var flipHorizontally = (flags & TiledMapTileFlipFlags.FlipHorizontally) != 0; + var flipVertically = (flags & TiledMapTileFlipFlags.FlipVertically) != 0; + + if (flipDiagonally) + { + FloatHelper.Swap(ref vertexTopRight.TextureCoordinate.X, ref vertexBottomLeft.TextureCoordinate.X); + FloatHelper.Swap(ref vertexTopRight.TextureCoordinate.Y, ref vertexBottomLeft.TextureCoordinate.Y); + } + + if (flipHorizontally) + if (flipDiagonally) + { + FloatHelper.Swap(ref vertexTopLeft.TextureCoordinate.Y, ref vertexTopRight.TextureCoordinate.Y); + FloatHelper.Swap(ref vertexBottomLeft.TextureCoordinate.Y, ref vertexBottomRight.TextureCoordinate.Y); + } + else + { + FloatHelper.Swap(ref vertexTopLeft.TextureCoordinate.X, ref vertexTopRight.TextureCoordinate.X); + FloatHelper.Swap(ref vertexBottomLeft.TextureCoordinate.X, ref vertexBottomRight.TextureCoordinate.X); + } + + if (flipVertically) + if (flipDiagonally) + { + FloatHelper.Swap(ref vertexTopLeft.TextureCoordinate.X, ref vertexBottomLeft.TextureCoordinate.X); + FloatHelper.Swap(ref vertexTopRight.TextureCoordinate.X, ref vertexBottomRight.TextureCoordinate.X); + } + else + { + FloatHelper.Swap(ref vertexTopLeft.TextureCoordinate.Y, ref vertexBottomLeft.TextureCoordinate.Y); + FloatHelper.Swap(ref vertexTopRight.TextureCoordinate.Y, ref vertexBottomRight.TextureCoordinate.Y); + } + + _vertices.Add(vertexTopLeft); + _vertices.Add(vertexTopRight); + _vertices.Add(vertexBottomLeft); + _vertices.Add(vertexBottomRight); + + Debug.Assert(Vertices.Count <= TiledMapHelper.MaximumVerticesPerModel); + } + + public void AddTileIndices() + { + var indexOffset = Vertices.Count; + + Debug.Assert(3 + indexOffset <= TiledMapHelper.MaximumVerticesPerModel); + + _indices.Add((ushort)(0 + indexOffset)); + _indices.Add((ushort)(1 + indexOffset)); + _indices.Add((ushort)(2 + indexOffset)); + _indices.Add((ushort)(1 + indexOffset)); + _indices.Add((ushort)(3 + indexOffset)); + _indices.Add((ushort)(2 + indexOffset)); + + Debug.Assert(Indices.Count <= TiledMapHelper.MaximumIndicesPerModel); + } + } +} diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/MonoGame.Extended.Content.Pipeline.Tiled.csproj b/Source/MonoGame.Extended.Content.Pipeline.Tiled/MonoGame.Extended.Content.Pipeline.Tiled.csproj new file mode 100644 index 000000000..a7eb74a7a --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/MonoGame.Extended.Content.Pipeline.Tiled.csproj @@ -0,0 +1,130 @@ + + + + + Debug + AnyCPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + Library + Properties + MonoGame.Extended.Content.Pipeline + MonoGame.Extended.Content.Pipeline.Tiled + v4.5 + 512 + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + true + 6 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + true + + + + ..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll + True + + + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll + + + ..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll + True + + + ..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + True + + + + + + + + + + + + + + Tiled\TiledMapHelper.cs + + + Tiled\TiledMapLayerType.cs + + + Tiled\TiledMapObjectType.cs + + + Tiled\TiledMapTile.cs + + + Tiled\TiledMapTileFlipFlags.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + MonoGame.Extended.Content.Pipeline + + + {41724C52-3D50-45BB-81EB-3C8A247EAFD1} + MonoGame.Extended + + + + + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..fc65759d6 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Content.Pipeline.Tiled")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Content.Pipeline.Tiled")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("96be0f14-3dc8-43b9-992f-654bd36cc3c7")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/ContentWriterExtensions.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/ContentWriterExtensions.cs new file mode 100644 index 000000000..77689b509 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/ContentWriterExtensions.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public static class ContentWriterExtensions + { + // ReSharper disable once SuggestBaseTypeForParameter + public static void WriteTiledMapProperties(this ContentWriter writer, + IReadOnlyCollection value) + { + writer.Write(value.Count); + foreach (var property in value) + { + writer.Write(property.Name); + writer.Write(property.Value); + } + } + } +} diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxMap.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapContent.cs similarity index 50% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxMap.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapContent.cs index df7114aa0..9f287c8e8 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxMap.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapContent.cs @@ -4,24 +4,22 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { [XmlRoot(ElementName = "map")] - public class TmxMap + public class TiledMapContent { - public TmxMap() - { - Properties = new List(); - Tilesets = new List(); - Layers = new List(); - ObjectGroups = new List(); - } + [XmlIgnore] + public string Name { get; set; } + + [XmlIgnore] + public string FilePath { get; set; } [XmlAttribute(AttributeName = "version")] public string Version { get; set; } [XmlAttribute(AttributeName = "orientation")] - public TmxOrientation Orientation { get; set; } + public TiledMapOrientationContent Orientation { get; set; } [XmlAttribute(AttributeName = "renderorder")] - public TmxRenderOrder RenderOrder { get; set; } + public TiledMapTileDrawOrderContent RenderOrder { get; set; } [XmlAttribute(AttributeName = "backgroundcolor")] public string BackgroundColor { get; set; } @@ -39,17 +37,22 @@ public TmxMap() public int TileHeight { get; set; } [XmlElement(ElementName = "tileset")] - public List Tilesets { get; set; } - - [XmlElement(ElementName = "objectgroup")] - public List ObjectGroups { get; set; } + public List Tilesets { get; set; } - [XmlElement(ElementName = "layer", Type = typeof(TmxTileLayer))] - [XmlElement(ElementName = "imagelayer", Type = typeof(TmxImageLayer))] - public List Layers { get; set; } + [XmlElement(ElementName = "layer", Type = typeof(TiledMapTileLayerContent))] + [XmlElement(ElementName = "imagelayer", Type = typeof(TiledMapImageLayerContent))] + [XmlElement(ElementName = "objectgroup", Type = typeof(TiledMapObjectLayerContent))] + public List Layers { get; set; } [XmlArray("properties")] [XmlArrayItem("property")] - public List Properties { get; set; } + public List Properties { get; set; } + + public TiledMapContent() + { + Properties = new List(); + Tilesets = new List(); + Layers = new List(); + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxEllipse.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapEllipseContent.cs similarity index 61% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxEllipse.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapEllipseContent.cs index b37bdbb65..1f9c81b86 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxEllipse.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapEllipseContent.cs @@ -1,6 +1,6 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxEllipse + public class TiledMapEllipseContent { } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImage.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageContent.cs similarity index 80% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImage.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageContent.cs index 385ee16aa..87748b919 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImage.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageContent.cs @@ -2,17 +2,8 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxImage + public class TiledMapImageContent { - public TmxImage() - { - } - - public override string ToString() - { - return Source; - } - [XmlAttribute(AttributeName = "source")] public string Source { get; set; } @@ -26,9 +17,14 @@ public override string ToString() public string Format { get; set; } [XmlAttribute(AttributeName = "trans")] - public string Trans { get; set; } + public string TransparentColor { get; set; } [XmlElement(ElementName = "data")] - public TmxData Data { get; set; } + public TiledMapTileLayerDataContent Data { get; set; } + + public override string ToString() + { + return Source; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImageLayer.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageLayerContent.cs similarity index 57% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImageLayer.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageLayerContent.cs index de56dda97..bb103fcc6 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxImageLayer.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImageLayerContent.cs @@ -1,29 +1,31 @@ using System.Collections.Generic; using System.Xml.Serialization; +using MonoGame.Extended.Tiled; namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxImageLayer : TmxLayer + public class TiledMapImageLayerContent : TiledMapLayerContent { - public TmxImageLayer() + [XmlAttribute(AttributeName = "x")] + public int X { get; set; } + + [XmlAttribute(AttributeName = "y")] + public int Y { get; set; } + + [XmlElement(ElementName = "image")] + public TiledMapImageContent Image { get; set; } + + public TiledMapImageLayerContent() + : base(TiledMapLayerType.ImageLayer) { Opacity = 1.0f; Visible = true; - Properties = new List(); + Properties = new List(); } public override string ToString() { - return string.Format("{0}: {1}", Name, Image); + return $"{Name}: {Image}"; } - - [XmlAttribute(AttributeName = "x")] - public int X { get; set; } - - [XmlAttribute(AttributeName = "y")] - public int Y { get; set; } - - [XmlElement(ElementName = "image")] - public TmxImage Image { get; set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImporter.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImporter.cs new file mode 100644 index 000000000..94e21ef0e --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapImporter.cs @@ -0,0 +1,69 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Xml.Serialization; +using Microsoft.Xna.Framework.Content.Pipeline; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [ContentImporter(".tmx", DefaultProcessor = "TiledMapProcessor", DisplayName = "Tiled Map Importer - MonoGame.Extended")] + public class TiledMapImporter : ContentImporter + { + public override TiledMapContent Import(string filePath, ContentImporterContext context) + { + if (filePath == null) + throw new ArgumentNullException(nameof(filePath)); + + ContentLogger.Logger = context.Logger; + ContentLogger.Log($"Importing '{filePath}'"); + + var map = DeserializeTiledMapContent(filePath); + + if (map.Width > ushort.MaxValue || map.Height > ushort.MaxValue) + throw new InvalidContentException($"The map '{filePath} is much too large. The maximum supported width and height for a Tiled map is {ushort.MaxValue}."); + + ContentLogger.Log($"Imported '{filePath}'"); + + return map; + } + + private static TiledMapContent DeserializeTiledMapContent(string filePath) + { + using (var reader = new StreamReader(filePath)) + { + var mapSerializer = new XmlSerializer(typeof(TiledMapContent)); + var map = (TiledMapContent)mapSerializer.Deserialize(reader); + + map.FilePath = filePath; + + var tilesetSerializer = new XmlSerializer(typeof(TiledMapTilesetContent)); + + for (var i = 0; i < map.Tilesets.Count; i++) + { + var tileset = map.Tilesets[i]; + + if (string.IsNullOrWhiteSpace(tileset.Source)) + continue; + var directoryName = Path.GetDirectoryName(filePath); + var tilesetLocation = tileset.Source.Replace('/', Path.DirectorySeparatorChar); + + Debug.Assert(directoryName != null, "directoryName != null"); + var tilesetFilePath = Path.Combine(directoryName, tilesetLocation); + + ContentLogger.Log($"Importing tileset '{tilesetFilePath}'"); + + using (var file = new FileStream(tilesetFilePath, FileMode.Open)) + { + map.Tilesets[i] = (TiledMapTilesetContent)tilesetSerializer.Deserialize(file); + } + + ContentLogger.Log($"Imported tileset '{tilesetFilePath}'"); + } + + map.Name = filePath; + + return map; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapLayerContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapLayerContent.cs new file mode 100644 index 000000000..19f77cfb2 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapLayerContent.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using MonoGame.Extended.Content.Pipeline.Graphics; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [XmlInclude(typeof(TiledMapTileLayerContent))] + [XmlInclude(typeof(TiledMapImageLayerContent))] + [XmlInclude(typeof(TiledMapObjectLayerContent))] + public abstract class TiledMapLayerContent + { + [XmlAttribute(AttributeName = "name")] + public string Name { get; set; } + + [XmlAttribute(AttributeName = "opacity")] + public float Opacity { get; set; } + + [XmlAttribute(AttributeName = "visible")] + public bool Visible { get; set; } + + [XmlAttribute(AttributeName = "offsetx")] + public float OffsetX { get; set; } + + [XmlAttribute(AttributeName = "offsety")] + public float OffsetY { get; set; } + + [XmlArray("properties")] + [XmlArrayItem("property")] + public List Properties { get; set; } + + [XmlIgnore] + public TiledMapLayerType Type { get; } + + [XmlIgnore] + public TiledMapLayerModelContent[] Models { get; set; } + + protected TiledMapLayerContent(TiledMapLayerType type) + { + Type = type; + Opacity = 1.0f; + Visible = true; + Properties = new List(); + } + + public override string ToString() + { + return Name; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxObject.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectContent.cs similarity index 71% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxObject.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectContent.cs index a8e420aca..7dae54950 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxObject.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectContent.cs @@ -3,19 +3,10 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxObject + public class TiledMapObjectContent { - public TmxObject() - { - Gid = -1; - Visible = true; - } - [XmlAttribute(DataType = "int", AttributeName = "id")] - public int Id { get; set; } - - [XmlAttribute(DataType = "int", AttributeName = "gid")] - public int Gid { get; set; } + public int Identifier { get; set; } [XmlAttribute(DataType = "string", AttributeName = "name")] public string Name { get; set; } @@ -37,21 +28,30 @@ public TmxObject() [XmlAttribute(DataType = "float", AttributeName = "rotation")] public float Rotation { get; set; } - + [XmlAttribute(DataType = "boolean", AttributeName = "visible")] public bool Visible { get; set; } - + [XmlArray("properties")] [XmlArrayItem("property")] - public List Properties { get; set; } + public List Properties { get; set; } + + [XmlAttribute(DataType = "unsignedInt", AttributeName = "gid")] + public uint GlobalIdentifier { get; set; } [XmlElement(ElementName = "ellipse")] - public TmxEllipse Ellipse { get; set; } + public TiledMapEllipseContent Ellipse { get; set; } [XmlElement(ElementName = "polygon")] - public TmxPolygon Polygon { get; set; } + public TiledMapPolygonContent Polygon { get; set; } [XmlElement(ElementName = "polyline")] - public TmxPolyline Polyline { get; set; } + public TiledMapPolylineContent Polyline { get; set; } + + public TiledMapObjectContent() + { + GlobalIdentifier = 0; + Visible = true; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectDrawOrderContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectDrawOrderContent.cs new file mode 100644 index 000000000..ad717990d --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectDrawOrderContent.cs @@ -0,0 +1,10 @@ +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public enum TiledMapObjectDrawOrderContent : byte + { + [XmlEnum(Name = "topdown")] TopDown, + [XmlEnum(Name = "index")] Manual + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectLayerContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectLayerContent.cs new file mode 100644 index 000000000..bbcd538f0 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapObjectLayerContent.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using System.Xml.Serialization; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public class TiledMapObjectLayerContent : TiledMapLayerContent + { + [XmlAttribute(AttributeName = "color")] + public string Color { get; set; } + + [XmlElement(ElementName = "object")] + public List Objects { get; set; } + + [XmlAttribute(AttributeName = "draworder")] + public TiledMapObjectDrawOrderContent DrawOrder { get; set; } + + public TiledMapObjectLayerContent() + : base(TiledMapLayerType.ObjectLayer) + { + Objects = new List(); + } + + public override string ToString() + { + return Name; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapOrientationContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapOrientationContent.cs new file mode 100644 index 000000000..87dcc2b2b --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapOrientationContent.cs @@ -0,0 +1,11 @@ +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public enum TiledMapOrientationContent : byte + { + [XmlEnum(Name = "orthogonal")] Orthogonal, + [XmlEnum(Name = "isometric")] Isometric, + [XmlEnum(Name = "staggered")] Staggered + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolygon.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolygonContent.cs similarity index 82% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolygon.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolygonContent.cs index 141880b66..3db3158d7 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolygon.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolygonContent.cs @@ -2,7 +2,7 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxPolygon + public class TiledMapPolygonContent { [XmlAttribute(AttributeName = "points")] public string Points { get; set; } diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolyline.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolylineContent.cs similarity index 81% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolyline.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolylineContent.cs index c8efd4b91..f8e22103f 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxPolyline.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPolylineContent.cs @@ -2,7 +2,7 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxPolyline + public class TiledMapPolylineContent { [XmlAttribute(AttributeName = "points")] public string Points { get; set; } diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapProcessor.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapProcessor.cs new file mode 100644 index 000000000..108666b7d --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapProcessor.cs @@ -0,0 +1,359 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Linq; +using Microsoft.Xna.Framework.Content.Pipeline; +using MonoGame.Extended.Content.Pipeline.Graphics; +using MonoGame.Extended.Tiled; +using MonoGame.Utilities; +using CompressionMode = System.IO.Compression.CompressionMode; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [ContentProcessor(DisplayName = "Tiled Map Processor - MonoGame.Extended")] + public class TiledMapProcessor : ContentProcessor + { + public override TiledMapContent Process(TiledMapContent map, ContentProcessorContext context) + { + ContentLogger.Logger = context.Logger; + + var previousWorkingDirectory = Environment.CurrentDirectory; + var newWorkingDirectory = Path.GetDirectoryName(map.FilePath); + if (string.IsNullOrEmpty(newWorkingDirectory)) + throw new NullReferenceException(); + Environment.CurrentDirectory = newWorkingDirectory; + + foreach (var layer in map.Layers) + { + var imageLayer = layer as TiledMapImageLayerContent; + if (imageLayer != null) + { + ContentLogger.Log($"Processing image layer '{imageLayer.Name}'"); + + var model = CreateImageLayerModel(imageLayer); + layer.Models = new[] + { + model + }; + + ContentLogger.Log($"Processed image layer '{imageLayer.Name}'"); + continue; + } + + var tileLayer = layer as TiledMapTileLayerContent; + if (tileLayer == null) + continue; + + var data = tileLayer.Data; + var encodingType = data.Encoding ?? "xml"; + var compressionType = data.Compression ?? "xml"; + + ContentLogger.Log( + $"Processing tile layer '{tileLayer.Name}': Encoding: '{encodingType}', Compression: '{compressionType}'"); + + var tileData = DecodeTileLayerData(encodingType, tileLayer); + var tiles = CreateTiles(map.RenderOrder, map.Width, map.Height, tileData); + tileLayer.Tiles = tiles; + + layer.Models = CreateTileLayerModels(map, tileLayer.Name, tiles).ToArray(); + + ContentLogger.Log($"Processed tile layer '{tileLayer}': {tiles.Length} tiles"); + } + + Environment.CurrentDirectory = previousWorkingDirectory; + + return map; + } + + private static List DecodeTileLayerData(string encodingType, + TiledMapTileLayerContent tileLayer) + { + List tiles; + + switch (encodingType) + { + case "xml": + tiles = tileLayer.Data.Tiles; + break; + case "csv": + tiles = DecodeCommaSeperatedValuesData(tileLayer.Data); + break; + case "base64": + tiles = DecodeBase64Data(tileLayer.Data, tileLayer.Width, tileLayer.Height); + break; + default: + throw new NotSupportedException($"The tile layer encoding '{encodingType}' is not supported."); + } + + return tiles; + } + + private static TiledMapTile[] CreateTiles(TiledMapTileDrawOrderContent renderOrder, int mapWidth, int mapHeight, + List tileData) + { + TiledMapTile[] tiles; + + switch (renderOrder) + { + case TiledMapTileDrawOrderContent.LeftDown: + tiles = CreateTilesInLeftDownOrder(tileData, mapWidth, mapHeight).ToArray(); + break; + case TiledMapTileDrawOrderContent.LeftUp: + tiles = CreateTilesInLeftUpOrder(tileData, mapWidth, mapHeight).ToArray(); + break; + case TiledMapTileDrawOrderContent.RightDown: + tiles = CreateTilesInRightDownOrder(tileData, mapWidth, mapHeight).ToArray(); + break; + case TiledMapTileDrawOrderContent.RightUp: + tiles = CreateTilesInRightUpOrder(tileData, mapWidth, mapHeight).ToArray(); + break; + default: + throw new NotSupportedException($"{renderOrder} is not supported."); + } + + return tiles.ToArray(); + } + + private static IEnumerable CreateTilesInLeftDownOrder( + // ReSharper disable once SuggestBaseTypeForParameter + List tileLayerData, int mapWidth, int mapHeight) + { + for (var y = 0; y < mapHeight; y++) + for (var x = mapWidth - 1; x >= 0; x--) + { + var dataIndex = x + y * mapWidth; + var globalIdentifier = tileLayerData[dataIndex].GlobalIdentifier; + if (globalIdentifier == 0) + continue; + var tile = new TiledMapTile(globalIdentifier, (ushort) x, (ushort) y); + yield return tile; + } + } + + private static IEnumerable CreateTilesInLeftUpOrder( + // ReSharper disable once SuggestBaseTypeForParameter + List tileLayerData, int mapWidth, int mapHeight) + { + for (var y = mapHeight - 1; y >= 0; y--) + for (var x = mapWidth - 1; x >= 0; x--) + { + var dataIndex = x + y * mapWidth; + var globalIdentifier = tileLayerData[dataIndex].GlobalIdentifier; + if (globalIdentifier == 0) + continue; + var tile = new TiledMapTile(globalIdentifier, (ushort) x, (ushort) y); + yield return tile; + } + } + + private static IEnumerable CreateTilesInRightDownOrder( + // ReSharper disable once SuggestBaseTypeForParameter + List tileLayerData, int mapWidth, int mapHeight) + { + for (var y = 0; y < mapHeight; y++) + for (var x = 0; x < mapWidth; x++) + { + var dataIndex = x + y * mapWidth; + var globalIdentifier = tileLayerData[dataIndex].GlobalIdentifier; + if (globalIdentifier == 0) + continue; + var tile = new TiledMapTile(globalIdentifier, (ushort) x, (ushort) y); + yield return tile; + } + } + + private static IEnumerable CreateTilesInRightUpOrder( + // ReSharper disable once SuggestBaseTypeForParameter + List tileLayerData, int mapWidth, int mapHeight) + { + for (var y = mapHeight - 1; y >= 0; y--) + for (var x = mapWidth - 1; x >= 0; x--) + { + var dataIndex = x + y * mapWidth; + var globalIdentifier = tileLayerData[dataIndex].GlobalIdentifier; + if (globalIdentifier == 0) + continue; + var tile = new TiledMapTile(globalIdentifier, (ushort) x, (ushort) y); + yield return tile; + } + } + + private static List DecodeBase64Data(TiledMapTileLayerDataContent data, int width, + int height) + { + var tileList = new List(); + var encodedData = data.Value.Trim(); + var decodedData = Convert.FromBase64String(encodedData); + + using (var stream = OpenStream(decodedData, data.Compression)) + { + using (var reader = new BinaryReader(stream)) + { + data.Tiles = new List(); + + for (var y = 0; y < width; y++) + for (var x = 0; x < height; x++) + { + var gid = reader.ReadUInt32(); + tileList.Add(new TiledMapTileContent + { + GlobalIdentifier = gid + }); + } + } + } + + return tileList; + } + + private static List DecodeCommaSeperatedValuesData(TiledMapTileLayerDataContent data) + { + return data.Value + .Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries) + .Select(uint.Parse) + .Select(x => new TiledMapTileContent {GlobalIdentifier = x}) + .ToList(); + } + + private static Stream OpenStream(byte[] decodedData, string compressionMode) + { + var memoryStream = new MemoryStream(decodedData, false); + + switch (compressionMode) + { + case "gzip": + return new GZipStream(memoryStream, CompressionMode.Decompress); + case "zlib": + return new ZlibStream(memoryStream, Utilities.CompressionMode.Decompress); + default: + return memoryStream; + } + } + + private static TiledMapLayerModelContent CreateImageLayerModel(TiledMapImageLayerContent imageLayer) + { + var model = new TiledMapLayerModelContent(imageLayer.Name, imageLayer.Image); + // sprite/tile; same thing + model.AddTileIndices(); + model.AddTileVertices(new Point2(imageLayer.X, imageLayer.Y)); + + return model; + } + + private static IEnumerable CreateTileLayerModels(TiledMapContent map, + string layerName, IEnumerable tiles) + { + // the code below builds the geometry (triangles) for every tile + // for every unique tileset used by a tile in a layer, we are going to end up with a different model (list of vertices and list of indices pair) + // we also could end up with more models if the map is very large + // regardless, each model is going to require one draw call to render at runtime + + var modelsByTileset = new Dictionary>(); + + // loop through all the tiles in the proper render order, building the geometry for each tile + // by processing the tiles in the correct rendering order we ensure the geometry for the tiles will be rendered correctly later using the painter's algorithm + foreach (var tile in tiles) + { + // get the tileset for this tile + var tileGlobalIdentifier = tile.GlobalIdentifier; + var tileset = map.Tilesets.FirstOrDefault(x => x.ContainsGlobalIdentifier(tileGlobalIdentifier)); + if (tileset == null) + throw new NullReferenceException( + $"Could not find tileset for global tile identifier '{tileGlobalIdentifier}'"); + + var localTileIdentifier = tileGlobalIdentifier - tileset.FirstGlobalIdentifier; + Debug.Assert(tileset != null); + + // check if this tile is animated + var tilesetTile = tileset.Tiles.FirstOrDefault(x => x.LocalIdentifier == localTileIdentifier); + var isAnimatedTile = tilesetTile?.Frames != null && tilesetTile.Frames.Count > 0; + + // check if we already have built a list of models for this tileset + TiledMapLayerModelContent model; + List models; + + if (modelsByTileset.TryGetValue(tileset, out models)) + { + // if we found the list of models for this tileset, try to use the last model added + // (assuming the the ones before the last are all full) + model = models.FindLast(x => x is TiledMapLayerAnimatedModelContent == isAnimatedTile); + // since it is possible that the correct type of model was not added yet we might have to create the correct model now + if (model == null) + { + model = isAnimatedTile + ? new TiledMapLayerAnimatedModelContent(layerName, tileset) + : new TiledMapLayerModelContent(layerName, tileset); + models.Add(model); + } + } + else + { + // if we have not found the list of models for this tileset, we need to create the list and start a new model of the correct type + models = new List(); + model = isAnimatedTile + ? new TiledMapLayerAnimatedModelContent(layerName, tileset) + : new TiledMapLayerModelContent(layerName, tileset); + models.Add(model); + modelsByTileset.Add(tileset, models); + } + + // check if the current model is full + if (model.Vertices.Count + TiledMapHelper.VerticesPerTile > TiledMapHelper.MaximumVerticesPerModel) + { + // if the current model is full, we need to start a new one + model = isAnimatedTile + ? new TiledMapLayerAnimatedModelContent(layerName, tileset) + : new TiledMapLayerModelContent(layerName, tileset); + models.Add(model); + } + + // if the tile is animated, record the index of animated tile for the tilset so we can get the correct texture coordinates at runtime + if (isAnimatedTile) + { + var animatedModel = (TiledMapLayerAnimatedModelContent) model; + animatedModel.AddAnimatedTile(tilesetTile); + } + + // fixes a problem + if (tileset.Columns == 0) + tileset.Columns = 1; + + // build the geometry for the tile + var position = GetTilePosition(map, tile); + var sourceRectangle = TiledMapHelper.GetTileSourceRectangle(localTileIdentifier, tileset.TileWidth, + tileset.TileHeight, tileset.Columns, tileset.Margin, tileset.Spacing); + var flipFlags = tile.Flags; + model.AddTileIndices(); + model.AddTileVertices(position, sourceRectangle, flipFlags); + } + + // for each tileset used in this layer + foreach (var keyValuePair in modelsByTileset) + { + var models = keyValuePair.Value; + + // and for each model apart of a tileset + foreach (var model in models) + yield return model; + } + } + + private static Point2 GetTilePosition(TiledMapContent map, TiledMapTile mapTile) + { + switch (map.Orientation) + { + case TiledMapOrientationContent.Orthogonal: + return TiledMapHelper.GetOrthogonalPosition(mapTile.X, mapTile.Y, map.TileWidth, map.TileHeight); + case TiledMapOrientationContent.Isometric: + return TiledMapHelper.GetIsometricPosition(mapTile.X, mapTile.Y, map.TileWidth, map.TileHeight); + case TiledMapOrientationContent.Staggered: + throw new NotImplementedException("Staggered maps are not yet implemented."); + default: + throw new NotSupportedException($"Tiled Map {map.Orientation} is not supported."); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxProperty.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPropertyContent.cs similarity index 70% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxProperty.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPropertyContent.cs index a13eabdc9..e3d491e13 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxProperty.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapPropertyContent.cs @@ -2,21 +2,17 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxProperty + public class TiledMapPropertyContent { - public TmxProperty() - { - } - - public override string ToString() - { - return string.Format("{0}: {1}", Name, Value); - } - [XmlAttribute(AttributeName = "name")] public string Name { get; set; } [XmlAttribute(AttributeName = "value")] public string Value { get; set; } + + public override string ToString() + { + return $"{Name}: {Value}"; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTerrain.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTerrainContent.cs similarity index 60% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTerrain.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTerrainContent.cs index a6df8f470..d6179857a 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTerrain.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTerrainContent.cs @@ -3,26 +3,25 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxTerrain + public class TiledMapTerrainContent { - public TmxTerrain() + [XmlAttribute(AttributeName = "name")] + public string Name { get; set; } + + [XmlAttribute(AttributeName = "tile")] + public string TileId { get; set; } + + [XmlArray("properties"), XmlArrayItem("property")] + public List Properties { get; set; } + + public TiledMapTerrainContent() { - Properties = new List(); + Properties = new List(); } public override string ToString() { return Name; } - - [XmlAttribute(AttributeName = "name")] - public string Name { get; set; } - - [XmlAttribute(AttributeName = "tile")] - public string TileId { get; set; } - - [XmlArray("properties")] - [XmlArrayItem("property")] - public List Properties { get; set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileDrawOrderContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileDrawOrderContent.cs new file mode 100644 index 000000000..c4200ccd8 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileDrawOrderContent.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public enum TiledMapTileDrawOrderContent : byte + { + [XmlEnum(Name = "right-down")] RightDown, + [XmlEnum(Name = "right-up")] RightUp, + [XmlEnum(Name = "left-down")] LeftDown, + [XmlEnum(Name = "left-up")] LeftUp + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileLayer.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerContent.cs similarity index 60% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileLayer.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerContent.cs index 433cb9877..dd28b2e8b 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileLayer.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerContent.cs @@ -1,13 +1,10 @@ using System.Xml.Serialization; +using MonoGame.Extended.Tiled; namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxTileLayer : TmxLayer + public class TiledMapTileLayerContent : TiledMapLayerContent { - public TmxTileLayer() - { - } - [XmlAttribute(AttributeName = "x")] public int X { get; set; } @@ -19,8 +16,16 @@ public TmxTileLayer() [XmlAttribute(AttributeName = "height")] public int Height { get; set; } - + [XmlElement(ElementName = "data")] - public TmxData Data { get; set; } + public TiledMapTileLayerDataContent Data { get; set; } + + [XmlIgnore] + public TiledMapTile[] Tiles { get; set; } + + public TiledMapTileLayerContent() + : base(TiledMapLayerType.TileLayer) + { + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxData.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerDataContent.cs similarity index 57% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxData.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerDataContent.cs index eed9ea240..4f5255fc4 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxData.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileLayerDataContent.cs @@ -3,18 +3,13 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { - public class TmxData + public struct TiledMapTileContent { - public TmxData() - { - Tiles = new List(); - } - - public override string ToString() - { - return string.Format("{0} {1}", Encoding, Compression); - } + [XmlAttribute(AttributeName = "gid")] public uint GlobalIdentifier; + } + public class TiledMapTileLayerDataContent + { [XmlAttribute(AttributeName = "encoding")] public string Encoding { get; set; } @@ -22,9 +17,19 @@ public override string ToString() public string Compression { get; set; } [XmlElement(ElementName = "tile")] - public List Tiles { get; set; } + public List Tiles { get; set; } [XmlText] public string Value { get; set; } + + public TiledMapTileLayerDataContent() + { + Tiles = new List(); + } + + public override string ToString() + { + return $"{Encoding} {Compression}"; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileOffsetContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileOffsetContent.cs new file mode 100644 index 000000000..3586bddaf --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTileOffsetContent.cs @@ -0,0 +1,17 @@ +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [XmlRoot(ElementName = "tileoffset")] + public class TiledMapTileOffsetContent + { + [XmlAttribute(AttributeName = "x")] public int X; + + [XmlAttribute(AttributeName = "y")] public int Y; + + public override string ToString() + { + return $"{X}, {Y}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileset.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetContent.cs similarity index 51% rename from Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileset.cs rename to Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetContent.cs index e3db023fc..71a583280 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/Tiled/TmxTileset.cs +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetContent.cs @@ -4,24 +4,10 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled { [XmlRoot(ElementName = "tileset")] - public class TmxTileset + public class TiledMapTilesetContent { - public TmxTileset() - { - TileOffset = new TmxTileOffset(); - Tiles = new List(); - Properties = new List(); - TerrainTypes = new List(); - - } - - public override string ToString() - { - return $"{Name}: {Image}"; - } - [XmlAttribute(AttributeName = "firstgid")] - public int FirstGid { get; set; } + public int FirstGlobalIdentifier { get; set; } [XmlAttribute(AttributeName = "source")] public string Source { get; set; } @@ -41,21 +27,45 @@ public override string ToString() [XmlAttribute(AttributeName = "margin")] public int Margin { get; set; } + [XmlAttribute(AttributeName = "columns")] + public int Columns { get; set; } + + [XmlAttribute(AttributeName = "tilecount")] + public int TileCount { get; set; } + [XmlElement(ElementName = "tileoffset")] - public TmxTileOffset TileOffset { get; set; } + public TiledMapTileOffsetContent TileOffset { get; set; } [XmlElement(ElementName = "tile")] - public List Tiles { get; set; } + public List Tiles { get; set; } [XmlArray("properties")] [XmlArrayItem("property")] - public List Properties { get; set; } + public List Properties { get; set; } [XmlElement(ElementName = "image")] - public TmxImage Image { get; set; } + public TiledMapImageContent Image { get; set; } [XmlArray("terraintypes")] [XmlArrayItem("terrain")] - public List TerrainTypes { get; set; } + public List TerrainTypes { get; set; } + + public TiledMapTilesetContent() + { + TileOffset = new TiledMapTileOffsetContent(); + Tiles = new List(); + Properties = new List(); + TerrainTypes = new List(); + } + + public bool ContainsGlobalIdentifier(int globalIdentifier) + { + return (globalIdentifier >= FirstGlobalIdentifier) && (globalIdentifier < FirstGlobalIdentifier + TileCount); + } + + public override string ToString() + { + return $"{Name}: {Image}"; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileAnimationFrameContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileAnimationFrameContent.cs new file mode 100644 index 000000000..002847aee --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileAnimationFrameContent.cs @@ -0,0 +1,18 @@ +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public class TiledMapTilesetTileAnimationFrameContent + { + [XmlAttribute(AttributeName = "tileid")] + public int TileIdentifier { get; set; } + + [XmlAttribute(AttributeName = "duration")] + public int Duration { get; set; } + + public override string ToString() + { + return $"TileID: {TileIdentifier}, Duration: {Duration}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileContent.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileContent.cs new file mode 100644 index 000000000..33fe6c536 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapTilesetTileContent.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + public class TiledMapTilesetTileContent + { + [XmlAttribute(AttributeName = "id")] + public int LocalIdentifier { get; set; } + + [XmlElement(ElementName = "terrain")] + public TiledMapTerrainContent Terrain { get; set; } + + [XmlAttribute(AttributeName = "probability")] + public float Probability { get; set; } + + [XmlElement(ElementName = "image")] + public TiledMapImageContent Image { get; set; } + + [XmlArray("animation")] + [XmlArrayItem("frame")] + public List Frames { get; set; } + + [XmlArray("properties")] + [XmlArrayItem("property")] + public List Properties { get; set; } + + public TiledMapTilesetTileContent() + { + Probability = 1.0f; + Properties = new List(); + } + + public override string ToString() + { + return LocalIdentifier.ToString(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapWriter.cs b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapWriter.cs new file mode 100644 index 000000000..d2f2b0970 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/Tiled/TiledMapWriter.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content.Pipeline; +using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; +using MonoGame.Extended.Content.Pipeline.Graphics; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [ContentTypeWriter] + public class TiledMapWriter : ContentTypeWriter + { + protected override void Write(ContentWriter writer, TiledMapContent map) + { + WriteMetaData(writer, map); + WriteTilesets(writer, map.Tilesets); + WriteLayers(writer, map.Layers); + } + + private static void WriteMetaData(ContentWriter writer, TiledMapContent map) + { + writer.Write(map.Width); + writer.Write(map.Height); + writer.Write(map.TileWidth); + writer.Write(map.TileHeight); + writer.Write(ColorHelper.FromHex(map.BackgroundColor)); + writer.Write((byte)map.RenderOrder); + writer.Write((byte)map.Orientation); + writer.WriteTiledMapProperties(map.Properties); + } + + private static void WriteTilesets(ContentWriter output, IReadOnlyCollection tilesets) + { + output.Write(tilesets.Count); + foreach (var tileset in tilesets) + WriteTileset(output, tileset); + } + + private static void WriteTileset(ContentWriter output, TiledMapTilesetContent tileset) + { + output.Write(Path.ChangeExtension(tileset.Image.Source, null)); + output.Write(tileset.FirstGlobalIdentifier); + output.Write(tileset.TileWidth); + output.Write(tileset.TileHeight); + output.Write(tileset.TileCount); + output.Write(tileset.Spacing); + output.Write(tileset.Margin); + + output.Write(tileset.Columns); + + output.Write(tileset.Tiles.Count); + foreach (var tilesetTile in tileset.Tiles) + WriteTilesetTile(output, tilesetTile); + + output.WriteTiledMapProperties(tileset.Properties); + } + + private static void WriteTilesetTile(ContentWriter output, TiledMapTilesetTileContent tilesetTile) + { + output.Write(tilesetTile.LocalIdentifier); + + output.Write(tilesetTile.Frames.Count); + foreach (var frame in tilesetTile.Frames) + { + output.Write(frame.TileIdentifier); + output.Write(frame.Duration); + } + + output.WriteTiledMapProperties(tilesetTile.Properties); + } + + private static void WriteLayers(ContentWriter output, IReadOnlyCollection layers) + { + output.Write(layers.Count); + foreach (var layer in layers) + WriteLayer(output, layer); + } + + private static void WriteLayer(ContentWriter output, TiledMapLayerContent layer) + { + output.Write((byte)layer.Type); + + output.Write(layer.Name ?? string.Empty); + output.Write(layer.Visible); + output.Write(layer.Opacity); + output.Write(layer.OffsetX); + output.Write(layer.OffsetY); + + output.WriteTiledMapProperties(layer.Properties); + + switch (layer.Type) + { + case TiledMapLayerType.ImageLayer: + WriteImageLayer(output, (TiledMapImageLayerContent)layer); + break; + case TiledMapLayerType.TileLayer: + WriteTileLayer(output, (TiledMapTileLayerContent)layer); + break; + case TiledMapLayerType.ObjectLayer: + WriteObjectLayer(output, (TiledMapObjectLayerContent)layer); + break; + default: + throw new ArgumentOutOfRangeException(nameof(layer.Type)); + } + + if (layer.Type != TiledMapLayerType.ObjectLayer) + WriteModels(output, layer.Models); + } + + private static void WriteImageLayer(ContentWriter output, TiledMapImageLayerContent imageLayer) + { + var textureAssetName = Path.ChangeExtension(imageLayer.Image.Source, null); + output.Write(textureAssetName); + output.Write(new Vector2(imageLayer.X, imageLayer.Y)); + } + + // ReSharper disable once SuggestBaseTypeForParameter + private static void WriteTileLayer(ContentWriter output, TiledMapTileLayerContent tileLayer) + { + output.Write(tileLayer.Width); + output.Write(tileLayer.Height); + + output.Write(tileLayer.Tiles.Length); + + foreach (var tile in tileLayer.Tiles) + { + output.Write(tile.GlobalTileIdentifierWithFlags); + output.Write(tile.X); + output.Write(tile.Y); + } + } + + private static void WriteObjectLayer(ContentWriter output, TiledMapObjectLayerContent layer) + { + output.Write(ColorHelper.FromHex(layer.Color)); + output.Write((byte)layer.DrawOrder); + + output.Write(layer.Objects.Count); + + foreach (var @object in layer.Objects) + WriteObject(output, @object); + } + + + private static void WriteObject(ContentWriter output, TiledMapObjectContent @object) + { + var type = GetObjectType(@object); + + output.Write((byte)type); + + output.Write(@object.Identifier); + output.Write(@object.Name ?? string.Empty); + output.Write(@object.Type ?? string.Empty); + output.Write(@object.X); + output.Write(@object.Y); + output.Write(@object.Width); + output.Write(@object.Height); + output.Write(@object.Rotation); + output.Write(@object.Visible); + + output.WriteTiledMapProperties(@object.Properties); + + switch (type) + { + case TiledMapObjectType.Rectangle: + case TiledMapObjectType.Ellipse: + break; + case TiledMapObjectType.Tile: + output.Write(@object.GlobalIdentifier); + break; + case TiledMapObjectType.Polygon: + WritePolyPoints(output, @object.Polygon.Points); + break; + case TiledMapObjectType.Polyline: + WritePolyPoints(output, @object.Polyline.Points); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + // ReSharper disable once SuggestBaseTypeForParameter + private static void WritePolyPoints(ContentWriter writer, string @string) + { + var stringPoints = @string.Split(' '); + + writer.Write(stringPoints.Length); + + foreach (var stringPoint in stringPoints) + { + var xy = stringPoint.Split(','); + var x = float.Parse(xy[0], CultureInfo.InvariantCulture.NumberFormat); + writer.Write(x); + var y = float.Parse(xy[1], CultureInfo.InvariantCulture.NumberFormat); + writer.Write(y); + } + } + + public static TiledMapObjectType GetObjectType(TiledMapObjectContent @object) + { + if (@object.GlobalIdentifier > 0) + return TiledMapObjectType.Tile; + + if (@object.Ellipse != null) + return TiledMapObjectType.Ellipse; + + if (@object.Polygon != null) + return TiledMapObjectType.Polygon; + + // ReSharper disable once ConvertIfStatementToReturnStatement + if (@object.Polyline != null) + return TiledMapObjectType.Polyline; + + return TiledMapObjectType.Rectangle; + } + + private static void WriteModels(ContentWriter output, IReadOnlyCollection models) + { + output.Write(models.Count); + + var animatedModelsCount = models.Count(x => x is TiledMapLayerAnimatedModelContent); + output.Write(animatedModelsCount); + + foreach (var model in models) + { + var animatedModel = model as TiledMapLayerAnimatedModelContent; + if (animatedModel != null) + { + output.Write(true); + WriteAnimatedModel(output, animatedModel); + } + else + { + output.Write(false); + WriteModel(output, model); + } + } + } + + // ReSharper disable once SuggestBaseTypeForParameter + private static void WriteModel(ContentWriter output, TiledMapLayerModelContent model) + { + output.Write(model.LayerName); + output.Write(model.TextureAssetName); + + var vertexCount = model.Vertices.Count; + output.Write(vertexCount); + foreach (var vertex in model.Vertices) + { + output.Write(vertex.Position.X); + output.Write(vertex.Position.Y); + output.Write(vertex.TextureCoordinate.X); + output.Write(vertex.TextureCoordinate.Y); + } + + var indexCount = model.Indices.Count; + output.Write(indexCount); + foreach (var index in model.Indices) + output.Write(index); + } + + private static void WriteAnimatedModel(ContentWriter output, TiledMapLayerAnimatedModelContent model) + { + WriteModel(output, model); + + output.Write(model.Tileset.FirstGlobalIdentifier); + + output.Write(model.AnimatedTilesetTiles.Count); + foreach (var animatedTilesetTile in model.AnimatedTilesetTiles) + output.Write(animatedTilesetTile.LocalIdentifier); + } + + public override string GetRuntimeType(TargetPlatform targetPlatform) + { + return "MonoGame.Extended.Tiled.TiledMap, MonoGame.Extended.Tiled"; + } + + public override string GetRuntimeReader(TargetPlatform targetPlatform) + { + return "MonoGame.Extended.Tiled.TiledMapReader, MonoGame.Extended.Tiled"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tiled/packages.config b/Source/MonoGame.Extended.Content.Pipeline.Tiled/packages.config new file mode 100644 index 000000000..777c5e44b --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline.Tiled/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontChar.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontChar.cs index 76fe2a4da..c012da4df 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontChar.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontChar.cs @@ -1,42 +1,41 @@ -using System; using System.Xml.Serialization; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- - public class BitmapFontChar - { - [XmlAttribute ("id")] - public int Id { get; set; } - - [XmlAttribute ("x")] - public int X { get; set; } - - [XmlAttribute ("y")] - public int Y { get; set; } - - [XmlAttribute ("width")] - public int Width { get; set; } - - [XmlAttribute ("height")] - public int Height { get; set; } - - [XmlAttribute ("xoffset")] - public int XOffset { get; set; } - - [XmlAttribute ("yoffset")] - public int YOffset { get; set; } - - [XmlAttribute ("xadvance")] - public int XAdvance { get; set; } - - [XmlAttribute ("page")] - public int Page { get; set; } - - [XmlAttribute ("chnl")] - public int Channel { get; set; } - } -} + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- + public class BitmapFontChar + { + [XmlAttribute("id")] + public int Id { get; set; } + + [XmlAttribute("x")] + public int X { get; set; } + + [XmlAttribute("y")] + public int Y { get; set; } + + [XmlAttribute("width")] + public int Width { get; set; } + + [XmlAttribute("height")] + public int Height { get; set; } + + [XmlAttribute("xoffset")] + public int XOffset { get; set; } + + [XmlAttribute("yoffset")] + public int YOffset { get; set; } + + [XmlAttribute("xadvance")] + public int XAdvance { get; set; } + + [XmlAttribute("page")] + public int Page { get; set; } + + [XmlAttribute("chnl")] + public int Channel { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontCommon.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontCommon.cs index bd62342fd..6247fcf00 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontCommon.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontCommon.cs @@ -1,42 +1,41 @@ -using System; using System.Xml.Serialization; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- public class BitmapFontCommon - { + { [XmlAttribute("lineHeight")] - public int LineHeight { get; set; } + public int LineHeight { get; set; } [XmlAttribute("base")] - public int Base { get; set; } + public int Base { get; set; } [XmlAttribute("scaleW")] - public int ScaleW { get; set; } + public int ScaleW { get; set; } [XmlAttribute("scaleH")] - public int ScaleH { get; set; } + public int ScaleH { get; set; } [XmlAttribute("pages")] - public int Pages { get; set; } + public int Pages { get; set; } [XmlAttribute("packed")] - public int Packed { get; set; } + public int Packed { get; set; } [XmlAttribute("alphaChnl")] - public int AlphaChannel { get; set; } + public int AlphaChannel { get; set; } [XmlAttribute("redChnl")] - public int RedChannel { get; set; } + public int RedChannel { get; set; } [XmlAttribute("greenChnl")] - public int GreenChannel { get; set; } + public int GreenChannel { get; set; } [XmlAttribute("blueChnl")] - public int BlueChannel { get; set; } - } -} + public int BlueChannel { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontFile.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontFile.cs index d51671bd8..db772708b 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontFile.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontFile.cs @@ -3,29 +3,29 @@ namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- - [XmlRoot("font")] + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- + [XmlRoot("font")] public class BitmapFontFile - { - [XmlElement("info")] - public BitmapFontInfo Info { get; set; } - - [XmlElement("common")] - public BitmapFontCommon Common { get; set; } + { + [XmlElement("info")] + public BitmapFontInfo Info { get; set; } - [XmlArray("pages")] - [XmlArrayItem("page")] - public List Pages { get; set; } + [XmlElement("common")] + public BitmapFontCommon Common { get; set; } - [XmlArray("chars")] - [XmlArrayItem("char")] - public List Chars { get; set; } - - [XmlArray("kernings")] - [XmlArrayItem("kerning")] - public List Kernings { get; set; } - } -} + [XmlArray("pages")] + [XmlArrayItem("page")] + public List Pages { get; set; } + + [XmlArray("chars")] + [XmlArrayItem("char")] + public List Chars { get; set; } + + [XmlArray("kernings")] + [XmlArrayItem("kerning")] + public List Kernings { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontImporter.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontImporter.cs index d9bb8cea4..ea4c52814 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontImporter.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontImporter.cs @@ -4,7 +4,8 @@ namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - [ContentImporter(".fnt", DefaultProcessor = "BitmapFontProcessor", DisplayName = "BMFont Importer - MonoGame.Extended")] + [ContentImporter(".fnt", DefaultProcessor = "BitmapFontProcessor", + DisplayName = "BMFont Importer - MonoGame.Extended")] public class BitmapFontImporter : ContentImporter { public override BitmapFontFile Import(string filename, ContentImporterContext context) diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontInfo.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontInfo.cs index 662ebc247..1f50cf883 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontInfo.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontInfo.cs @@ -1,48 +1,47 @@ -using System; using System.Xml.Serialization; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- public class BitmapFontInfo - { - [XmlAttribute ( "face" )] - public string Face { get; set; } - - [XmlAttribute ( "size" )] - public int Size { get; set; } - - [XmlAttribute ( "bold" )] - public int Bold { get; set; } - - [XmlAttribute ( "italic" )] - public int Italic { get; set; } - - [XmlAttribute ( "charset" )] - public string CharSet { get; set; } - - [XmlAttribute ( "unicode" )] - public int Unicode { get; set; } - - [XmlAttribute ( "stretchH" )] - public int StretchHeight { get; set; } - - [XmlAttribute ( "smooth" )] - public int Smooth { get; set; } - - [XmlAttribute ( "aa" )] - public int SuperSampling { get; set; } - - [XmlAttribute ( "padding" )] - public string Padding { get; set; } - - [XmlAttribute ( "spacing" )] - public string Spacing { get; set; } - - [XmlAttribute ( "outline" )] - public int OutLine { get; set; } - } -} + { + [XmlAttribute("face")] + public string Face { get; set; } + + [XmlAttribute("size")] + public int Size { get; set; } + + [XmlAttribute("bold")] + public int Bold { get; set; } + + [XmlAttribute("italic")] + public int Italic { get; set; } + + [XmlAttribute("charset")] + public string CharSet { get; set; } + + [XmlAttribute("unicode")] + public int Unicode { get; set; } + + [XmlAttribute("stretchH")] + public int StretchHeight { get; set; } + + [XmlAttribute("smooth")] + public int Smooth { get; set; } + + [XmlAttribute("aa")] + public int SuperSampling { get; set; } + + [XmlAttribute("padding")] + public string Padding { get; set; } + + [XmlAttribute("spacing")] + public string Spacing { get; set; } + + [XmlAttribute("outline")] + public int OutLine { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontKerning.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontKerning.cs index a48ae2b36..77caf13cf 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontKerning.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontKerning.cs @@ -1,21 +1,20 @@ -using System; using System.Xml.Serialization; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- public class BitmapFontKerning - { - [XmlAttribute ( "first" )] - public int First { get; set; } - - [XmlAttribute ( "second" )] - public int Second { get; set; } - - [XmlAttribute ( "amount" )] - public int Amount { get; set; } - } -} + { + [XmlAttribute("first")] + public int First { get; set; } + + [XmlAttribute("second")] + public int Second { get; set; } + + [XmlAttribute("amount")] + public int Amount { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontPage.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontPage.cs index 09bd96d39..3841ff5be 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontPage.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontPage.cs @@ -1,18 +1,17 @@ -using System; using System.Xml.Serialization; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { - // ---- AngelCode BmFont XML serializer ---------------------- - // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- - // ---- There's no license restrictions, use as you will. ---- - // ---- Credits to http://www.angelcode.com/ ----------------- + // ---- AngelCode BmFont XML serializer ---------------------- + // ---- By DeadlyDan @ deadlydan@gmail.com ------------------- + // ---- There's no license restrictions, use as you will. ---- + // ---- Credits to http://www.angelcode.com/ ----------------- public class BitmapFontPage - { - [XmlAttribute ( "id" )] + { + [XmlAttribute("id")] public int Id { get; set; } - - [XmlAttribute ( "file" )] - public string File { get; set; } - } -} + + [XmlAttribute("file")] + public string File { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessor.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessor.cs index d78790c2a..a859eb531 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessor.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessor.cs @@ -22,7 +22,6 @@ public override BitmapFontProcessorResult Process(BitmapFontFile bitmapFontFile, } return result; - } catch (Exception ex) { diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessorResult.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessorResult.cs index a8892fe90..5841acc56 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessorResult.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontProcessorResult.cs @@ -4,13 +4,13 @@ namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { public class BitmapFontProcessorResult { + public List TextureAssets { get; private set; } + public BitmapFontFile FontFile { get; private set; } + public BitmapFontProcessorResult(BitmapFontFile fontFile) { FontFile = fontFile; TextureAssets = new List(); } - - public List TextureAssets { get; private set; } - public BitmapFontFile FontFile { get; private set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontWriter.cs b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontWriter.cs index 9ac569f2d..d64d16c2a 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontWriter.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/BitmapFonts/BitmapFontWriter.cs @@ -1,6 +1,5 @@ using Microsoft.Xna.Framework.Content.Pipeline; using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; -using MonoGame.Extended.BitmapFonts; namespace MonoGame.Extended.Content.Pipeline.BitmapFonts { @@ -34,12 +33,12 @@ protected override void Write(ContentWriter writer, BitmapFontProcessorResult re public override string GetRuntimeType(TargetPlatform targetPlatform) { - return typeof(BitmapFont).AssemblyQualifiedName; + return "MonoGame.Extended.BitmapFonts.BitmapFont, MonoGame.Extended"; } public override string GetRuntimeReader(TargetPlatform targetPlatform) { - return typeof(BitmapFontReader).AssemblyQualifiedName; + return "MonoGame.Extended.BitmapFonts.BitmapFontReader, MonoGame.Extended"; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/ContentImporterResult.cs b/Source/MonoGame.Extended.Content.Pipeline/ContentImporterResult.cs index 14df3d7b1..667b36364 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/ContentImporterResult.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/ContentImporterResult.cs @@ -2,13 +2,13 @@ namespace MonoGame.Extended.Content.Pipeline { public class ContentImporterResult { + public string FilePath { get; private set; } + public T Data { get; private set; } + public ContentImporterResult(string filePath, T data) { FilePath = filePath; Data = data; } - - public string FilePath { get; private set; } - public T Data { get; private set; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/ContentLogger.cs b/Source/MonoGame.Extended.Content.Pipeline/ContentLogger.cs new file mode 100644 index 000000000..83848a192 --- /dev/null +++ b/Source/MonoGame.Extended.Content.Pipeline/ContentLogger.cs @@ -0,0 +1,14 @@ +using Microsoft.Xna.Framework.Content.Pipeline; + +namespace MonoGame.Extended.Content.Pipeline +{ + public class ContentLogger + { + public static ContentBuildLogger Logger { get; set; } + + public static void Log(string message) + { + Logger?.LogMessage(message); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/ContentWriterExtensions.cs b/Source/MonoGame.Extended.Content.Pipeline/ContentWriterExtensions.cs index fbe3b050f..b8cf9d265 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/ContentWriterExtensions.cs +++ b/Source/MonoGame.Extended.Content.Pipeline/ContentWriterExtensions.cs @@ -76,4 +76,4 @@ public static void Write(this ContentWriter contentWriter, Rectangle value) contentWriter.Write(value.Height); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline/MonoGame.Extended.Content.Pipeline.csproj b/Source/MonoGame.Extended.Content.Pipeline/MonoGame.Extended.Content.Pipeline.csproj index c55fd559b..e69aac3a4 100644 --- a/Source/MonoGame.Extended.Content.Pipeline/MonoGame.Extended.Content.Pipeline.csproj +++ b/Source/MonoGame.Extended.Content.Pipeline/MonoGame.Extended.Content.Pipeline.csproj @@ -21,6 +21,8 @@ DEBUG;TRACE prompt 4 + true + 6 pdbonly @@ -32,17 +34,19 @@ - $(MSBuildExtensionsPath)\MonoGame\v3.0\Tools\MonoGame.Framework.dll + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\DesktopGL\MonoGame.Framework.dll - $(MSBuildExtensionsPath)\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True + @@ -51,12 +55,6 @@ - - - - - - @@ -65,9 +63,9 @@ + - @@ -82,42 +80,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - {41724c52-3d50-45bb-81eb-3c8a247eafd1} - MonoGame.Extended - + - - - Designer - - + + + MonoGame.Extended.Entities + $version$ + + An Entity Component System for MonoGame to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Entities + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended entity component system ecs + + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Entities/Components/EntityComponent.cs b/Source/MonoGame.Extended.Entities/Components/EntityComponent.cs new file mode 100644 index 000000000..e32d45ea5 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Components/EntityComponent.cs @@ -0,0 +1,79 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Entities.Components +{ + public abstract class EntityComponent : IMovable, IRotatable, IScalable + { + private Vector2 _position; + private float _rotation; + private Vector2 _scale; + + protected EntityComponent() + { + } + + public Entity Entity { get; internal set; } + + public virtual Vector2 Position + { + get { return Entity?.Position ?? _position; } + set + { + _position = value; + + if (Entity != null) + Entity.Position = _position; + } + } + + public virtual float Rotation + { + get { return Entity?.Rotation ?? _rotation; } + set + { + _rotation = value; + + if (Entity != null) + Entity.Rotation = value; + } + } + + public virtual Vector2 Scale + { + get { return Entity?.Scale ?? _scale; } + set + { + _scale = value; + + if (Entity != null) + _scale = value; + } + } + } + + + public class TransformableComponent : EntityComponent, IMovable, IRotatable, IScalable + where T : Transform2D + { + public TransformableComponent(T transformable) + { + _target = transformable; + } + + private readonly T _target; + public T Target + { + get + { + if (Entity != null) + { + _target.Position = Entity.Position; + _target.Rotation = Entity.Rotation; + _target.Scale = Entity.Scale; + } + + return _target; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/Entity.cs b/Source/MonoGame.Extended.Entities/Entity.cs new file mode 100644 index 000000000..581e7cd6c --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Entity.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Components; + +namespace MonoGame.Extended.Entities +{ + public class Entity : Transform2D + { + private readonly List _components; + private readonly EntityComponentSystem _entityComponentSystem; + + public Entity(EntityComponentSystem entityComponentSystem, long id, string name) + { + _entityComponentSystem = entityComponentSystem; + _components = new List(); + + Id = id; + Name = name; + Position = Vector2.Zero; + Rotation = 0; + Scale = Vector2.One; + } + + public long Id { get; } + public string Name { get; } + public object Tag { get; set; } + + public override string ToString() + { + return Name; + } + + public void AttachComponent(EntityComponent component) + { + if (component.Entity != null) + throw new InvalidOperationException("Component already attached to another entity"); + + component.Entity = this; + + _components.Add(component); + _entityComponentSystem.AttachComponent(component); + } + + public void DetachComponent(EntityComponent component) + { + if (component.Entity != this) + throw new InvalidOperationException("Component not attached to entity"); + + component.Entity = null; + _components.Remove(component); + _entityComponentSystem.DetachComponent(component); + } + + public void Destroy(float delaySeconds = 0f) + { + _entityComponentSystem.DestroyEntity(this, delaySeconds); + } + + public T GetComponent() where T : EntityComponent + { + return GetComponents().FirstOrDefault(); + } + + public IEnumerable GetComponents() + { + return _components.OfType(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/EntityComponentSystem.cs b/Source/MonoGame.Extended.Entities/EntityComponentSystem.cs new file mode 100644 index 000000000..274b14b4c --- /dev/null +++ b/Source/MonoGame.Extended.Entities/EntityComponentSystem.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Entities.Systems; + +namespace MonoGame.Extended.Entities +{ + public class EntityComponentSystem + { + private readonly List _components; + private readonly List _dyingEntities; + private readonly List _entities; + private readonly Dictionary _entitiesByName; + + private readonly List _systems; + private long _nextEntityId; + + public EntityComponentSystem() + { + _entities = new List(); + _entitiesByName = new Dictionary(); + _dyingEntities = new List(); + _components = new List(); + _systems = new List(); + _nextEntityId = 1; + } + + internal event EventHandler ComponentAttached; + internal event EventHandler ComponentDetached; + internal event EventHandler EntityCreated; + internal event EventHandler EntityDestroyed; + + public void RegisterSystem(ComponentSystem system) + { + if (system.Parent != null) + throw new InvalidOperationException("Component system already registered"); + + system.Parent = this; + _systems.Add(system); + } + + public Entity CreateEntity() + { + return CreateEntity(null); + } + + public Entity CreateEntity(Vector2 position, float rotation = 0) + { + return CreateEntity(null, position, rotation); + } + + public Entity CreateEntity(string name, Vector2 position, float rotation = 0) + { + var entity = CreateEntity(name); + entity.Position = position; + entity.Rotation = rotation; + return entity; + } + + public Entity CreateEntity(string name) + { + var entity = new Entity(this, _nextEntityId, name); + + _entities.Add(entity); + + if (name != null) + _entitiesByName.Add(name, entity); + + EntityCreated?.Invoke(this, entity); + _nextEntityId++; + return entity; + } + + public void DestroyEntity(Entity entity, float delaySeconds) + { + if (delaySeconds.Equals(0f)) + DestroyEntity(entity); + else + _dyingEntities.Add(new DyingEntity {Entity = entity, SecondsUntilDeath = delaySeconds}); + } + + public void DestroyEntity(Entity entity) + { + foreach (var component in _components.Where(c => c.Entity == entity).ToArray()) + DetachComponent(component); + + if (entity.Name != null) + _entitiesByName.Remove(entity.Name); + + _entities.Remove(entity); + EntityDestroyed?.Invoke(this, entity); + } + + public Entity GetEntity(string name) + { + Entity entity; + return _entitiesByName.TryGetValue(name, out entity) ? entity : null; + } + + internal void AttachComponent(EntityComponent component) + { + _components.Add(component); + ComponentAttached?.Invoke(this, component); + } + + internal void DetachComponent(EntityComponent component) + { + _components.Remove(component); + (component as IDisposable)?.Dispose(); + ComponentDetached?.Invoke(this, component); + } + + internal IEnumerable GetComponents() where T : EntityComponent + { + return _components.OfType(); + } + + public void Update(GameTime gameTime) + { + foreach (var componentSystem in _systems) + componentSystem.Update(gameTime); + + for (var i = 0; i < _dyingEntities.Count; i++) + { + _dyingEntities[i].SecondsUntilDeath -= gameTime.GetElapsedSeconds(); + + if (_dyingEntities[i].SecondsUntilDeath <= 0) + { + DestroyEntity(_dyingEntities[i].Entity); + _dyingEntities.Remove(_dyingEntities[i]); + } + } + } + + public void Draw(GameTime gameTime) + { + foreach (var componentSystem in _systems) + componentSystem.Draw(gameTime); + } + + public class DyingEntity + { + public Entity Entity; + public float SecondsUntilDeath; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/MonoGame.Extended.Entities.csproj b/Source/MonoGame.Extended.Entities/MonoGame.Extended.Entities.csproj new file mode 100644 index 000000000..c3bbbcda9 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/MonoGame.Extended.Entities.csproj @@ -0,0 +1,69 @@ + + + + + 10.0 + Debug + AnyCPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C} + Library + MonoGame.Extended.Entities + MonoGame.Extended.Entities + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {6c8b9e29-d09b-4901-80fd-45aaa35882c6} + MonoGame.Extended.Particles + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Entities/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..381ec2334 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Entities")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Entities")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Entities/Systems/AnimatedSpriteSystem.cs b/Source/MonoGame.Extended.Entities/Systems/AnimatedSpriteSystem.cs new file mode 100644 index 000000000..d567c3574 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Systems/AnimatedSpriteSystem.cs @@ -0,0 +1,20 @@ +using System.Linq; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Animations; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Sprites; + +namespace MonoGame.Extended.Entities.Systems +{ + public class AnimatedSpriteSystem : ComponentSystem + { + public override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + var sprites = GetComponents>(); + + foreach (var animatedSprite in sprites.Select(c => c.Target).OfType()) + animatedSprite.Update(deltaTime); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/Systems/ComponentSystem.cs b/Source/MonoGame.Extended.Entities/Systems/ComponentSystem.cs new file mode 100644 index 000000000..fb3c83c26 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Systems/ComponentSystem.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Components; + +namespace MonoGame.Extended.Entities.Systems +{ + public abstract class ComponentSystem + { + private EntityComponentSystem _parent; + + protected ComponentSystem() + { + } + + internal EntityComponentSystem Parent + { + get { return _parent; } + set + { + if (_parent != null) + throw new InvalidOperationException("ComponentSystem already registered"); + + _parent = value; + + if (_parent != null) + { + _parent.EntityCreated += (sender, entity) => OnEntityCreated(entity); + _parent.EntityDestroyed += (sender, entity) => OnEntityDestroyed(entity); + _parent.ComponentAttached += (sender, component) => OnComponentAttached(component); + _parent.ComponentDetached += (sender, component) => OnComponentDetached(component); + } + } + } + + protected IEnumerable GetComponents() where T : EntityComponent + { + return Parent.GetComponents(); + } + + protected Entity GetEntity(string name) + { + return Parent.GetEntity(name); + } + + protected virtual void OnEntityCreated(Entity entity) + { + } + + protected virtual void OnEntityDestroyed(Entity entity) + { + } + + protected virtual void OnComponentAttached(EntityComponent component) + { + } + + protected virtual void OnComponentDetached(EntityComponent component) + { + } + + public virtual void Update(GameTime gameTime) + { + } + + public virtual void Draw(GameTime gameTime) + { + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/Systems/ParticleEmitterSystem.cs b/Source/MonoGame.Extended.Entities/Systems/ParticleEmitterSystem.cs new file mode 100644 index 000000000..c5b3314cd --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Systems/ParticleEmitterSystem.cs @@ -0,0 +1,18 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Particles; + +namespace MonoGame.Extended.Entities.Systems +{ + public class ParticleEmitterSystem : ComponentSystem + { + public override void Update(GameTime gameTime) + { + var deltaTime = gameTime.GetElapsedSeconds(); + var components = GetComponents>(); + + foreach (var component in components) + component.Target.Update(deltaTime); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/Systems/SpriteBatchSystem.cs b/Source/MonoGame.Extended.Entities/Systems/SpriteBatchSystem.cs new file mode 100644 index 000000000..0ccc85382 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/Systems/SpriteBatchSystem.cs @@ -0,0 +1,50 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Entities.Components; +using MonoGame.Extended.Particles; +using MonoGame.Extended.Sprites; + +namespace MonoGame.Extended.Entities.Systems +{ + public class SpriteBatchSystem : ComponentSystem + { + private readonly Camera2D _camera; + private readonly SpriteBatch _spriteBatch; + + public SpriteBatchSystem(GraphicsDevice graphicsDevice, Camera2D camera) + { + _camera = camera; + _spriteBatch = new SpriteBatch(graphicsDevice); + } + + public Effect Effect { get; set; } + public RasterizerState RasterizerState { get; set; } + public DepthStencilState DepthStencilState { get; set; } + public SamplerState SamplerState { get; set; } + public BlendState BlendState { get; set; } + public SpriteSortMode SortMode { get; set; } = SpriteSortMode.Deferred; + + public override void Draw(GameTime gameTime) + { + var spriteComponents = GetComponents>(); + var particleEmitterComponents = GetComponents>(); + var transformMatrix = _camera.GetViewMatrix(); + + _spriteBatch.Begin(SortMode, BlendState, SamplerState, DepthStencilState, RasterizerState, Effect, transformMatrix); + + foreach (var spriteComponent in spriteComponents) + { + var sprite = spriteComponent.Target; + _spriteBatch.Draw(sprite); + } + + foreach (var particleEmitterComponent in particleEmitterComponents) + { + var particleEmitter = particleEmitterComponent.Target; + _spriteBatch.Draw(particleEmitter); + } + + _spriteBatch.End(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Entities/packages.config b/Source/MonoGame.Extended.Entities/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Entities/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics.nuspec b/Source/MonoGame.Extended.Graphics.nuspec new file mode 100644 index 000000000..1536a2a7f --- /dev/null +++ b/Source/MonoGame.Extended.Graphics.nuspec @@ -0,0 +1,35 @@ + + + + + MonoGame.Extended.Graphics + $version$ + + Makes MonoGame more awesome. + Tile based maps, Bitmap Fonts, Sprites and SpriteBatch extensions, + Input Listeners, Texture Atlases, 2D Camera, Viewport Adapters. + + Dylan Wilson + MonoGame.Extended.Graphics + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended pipeline bmfont tiled texture atlas input event sprite + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Graphics/Batcher.cs b/Source/MonoGame.Extended.Graphics/Batcher.cs new file mode 100644 index 000000000..3cb5704a7 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Batcher.cs @@ -0,0 +1,387 @@ +using System; +using System.Runtime.CompilerServices; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics +{ + /// + /// Minimizes draw calls to a by sorting them and attempting to merge them together + /// before submitting them. + /// + /// The type of the information for a draw call. + /// + public abstract class Batcher : IDisposable + where TDrawCallInfo : struct, IBatchDrawCallInfo, IComparable + { + internal const int DefaultBatchMaximumDrawCallsCount = 2048; + private BlendState _blendState; + private SamplerState _samplerState; + private DepthStencilState _depthStencilState; + private RasterizerState _rasterizerState; + private readonly Effect _defaultEffect; + private Effect _currentEffect; + private Matrix? _viewMatrix; + private Matrix? _projectionMatrix; + + /// + /// The array of structs currently enqueued. + /// + protected TDrawCallInfo[] DrawCalls; + + /// + /// The number of structs currently enqueued. + /// + protected int EnqueuedDrawCallCount; + + /// + /// Gets the associated with this . + /// + /// + /// The associated with this . + /// + public GraphicsDevice GraphicsDevice { get; } + + /// + /// Gets a value indicating whether batching is currently in progress by being within a and + /// pair block of code. + /// + /// + /// true if batching has begun; otherwise, false. + /// + public bool HasBegun { get; internal set; } + + /// + /// Initializes a new instance of the class. + /// + /// The graphics device. + /// The default effect. + /// + /// The maximum number of structs that can be enqueued before a + /// + /// is required. The default value is 2048. + /// + /// + /// is + /// null. + /// + /// + /// is less than or equal + /// 0. + /// + protected Batcher(GraphicsDevice graphicsDevice, Effect defaultEffect, + int maximumDrawCallsCount = DefaultBatchMaximumDrawCallsCount) + { + if (graphicsDevice == null) + throw new ArgumentNullException(nameof(graphicsDevice)); + + if (maximumDrawCallsCount <= 0) + throw new ArgumentOutOfRangeException(nameof(maximumDrawCallsCount)); + + GraphicsDevice = graphicsDevice; + _defaultEffect = defaultEffect; + DrawCalls = new TDrawCallInfo[maximumDrawCallsCount]; + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// Releases unmanaged and - optionally - managed resources. + /// + /// + /// true to release both managed and unmanaged resources; false to release only + /// unmanaged resources. + /// + protected virtual void Dispose(bool diposing) + { + if (!diposing) + return; + _defaultEffect.Dispose(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected void EnsureHasBegun([CallerMemberName] string callerMemberName = null) + { + if (!HasBegun) + throw new InvalidOperationException( + $"The {nameof(Begin)} method must be called before the {callerMemberName} method can be called."); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected void EnsureHasNotBegun([CallerMemberName] string callerMemberName = null) + { + if (HasBegun) + throw new InvalidOperationException( + $"The {nameof(End)} method must be called before the {callerMemberName} method can be called."); + } + + /// + /// Begins the batch operation using an optional , , + /// , , , world-to-view + /// , or view-to-projection . + /// + /// + /// + /// The default objects for , , + /// , and are + /// , , + /// and respectively. + /// Passing + /// null for any of the previously mentioned parameters result in using their default object. + /// + /// + /// The to use for the , pair. + /// + /// The texture to use for the and + /// pair. + /// + /// + /// The to use for the and + /// pair. + /// + /// + /// The to use for the and + /// pair. + /// + /// The to use for the and pair. + /// + /// The world-to-view transformation matrix to use for the and + /// pair. + /// + /// + /// The view-to-projection transformation matrix to use for the and + /// pair. + /// + /// + /// cannot be invoked again until has been invoked. + /// + /// + /// + /// This method must be called before any enqueuing of draw calls. When all the geometry have been enqueued for + /// drawing, call . + /// + /// + public virtual void Begin(Matrix? viewMatrix = null, Matrix? projectionMatrix = null, BlendState blendState = null, SamplerState samplerState = null, + DepthStencilState depthStencilState = null, RasterizerState rasterizerState = null, Effect effect = null) + { + var viewMatrix1 = viewMatrix ?? Matrix.Identity; + var projectionMatrix1 = projectionMatrix ?? Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0, -1); + Begin(ref viewMatrix1, ref projectionMatrix1, blendState, samplerState, depthStencilState, rasterizerState, effect); + } + + /// + /// Begins the batch operation using an optional , , + /// , , , world-to-view + /// , or view-to-projection . + /// + /// + /// + /// The default objects for , , + /// , and are + /// , , + /// and respectively. + /// Passing + /// null for any of the previously mentioned parameters result in using their default object. + /// + /// + /// The to use for the , pair. + /// + /// The texture to use for the and + /// pair. + /// + /// + /// The to use for the and + /// pair. + /// + /// + /// The to use for the and + /// pair. + /// + /// The to use for the and pair. + /// + /// The world-to-view transformation matrix to use for the and + /// pair. + /// + /// + /// The view-to-projection transformation matrix to use for the and + /// pair. + /// + /// + /// cannot be invoked again until has been invoked. + /// + /// + /// + /// This method must be called before any enqueuing of draw calls. When all the geometry have been enqueued for + /// drawing, call . + /// + /// + public virtual void Begin(ref Matrix viewMatrix, ref Matrix projectionMatrix, BlendState blendState = null, SamplerState samplerState = null, + DepthStencilState depthStencilState = null, RasterizerState rasterizerState = null, Effect effect = null) + { + EnsureHasNotBegun(); + HasBegun = true; + + // Store the states to be applied on End() + // This ensures that two or more batchers will not affect each other + _blendState = blendState ?? BlendState.AlphaBlend; + _samplerState = samplerState ?? SamplerState.PointClamp; + _depthStencilState = depthStencilState ?? DepthStencilState.None; + _rasterizerState = rasterizerState ?? RasterizerState.CullCounterClockwise; + _currentEffect = effect ?? _defaultEffect; + _projectionMatrix = projectionMatrix; + _viewMatrix = viewMatrix; + } + + /// + /// Flushes the batched geometry to the and restores it's state to how it was before + /// was called. + /// + /// + /// cannot be invoked until has been invoked. + /// + /// + /// + /// This method must be called after all enqueuing of draw calls. + /// + /// + public void End() + { + EnsureHasBegun(); + Flush(); + HasBegun = false; + } + + /// + /// Sorts then submits the (sorted) enqueued draw calls to the for + /// rendering without ending the and pair. + /// + protected void Flush() + { + if (EnqueuedDrawCallCount == 0) + return; + SortDrawCallsAndBindBuffers(); + ApplyStates(); + SubmitDrawCalls(); + RestoreStates(); + } + + /// + /// Sorts the enqueued draw calls and binds any used or to the . + /// + protected abstract void SortDrawCallsAndBindBuffers(); + + private void ApplyStates() + { + var oldBlendState = GraphicsDevice.BlendState; + var oldSamplerState = GraphicsDevice.SamplerStates[0]; + var oldDepthStencilState = GraphicsDevice.DepthStencilState; + var oldRasterizerState = GraphicsDevice.RasterizerState; + + GraphicsDevice.BlendState = _blendState; + + GraphicsDevice.SamplerStates[0] = _samplerState; + GraphicsDevice.DepthStencilState = _depthStencilState; + GraphicsDevice.RasterizerState = _rasterizerState; + + _blendState = oldBlendState; + _samplerState = oldSamplerState; + _depthStencilState = oldDepthStencilState; + _rasterizerState = oldRasterizerState; + + var viewMatrix = _viewMatrix ?? Matrix.Identity; + var projectionMatrix = _projectionMatrix ?? + Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, + GraphicsDevice.Viewport.Height, 0, 0f, -1f); + + var matrixChainEffect = _currentEffect as IMatrixChainEffect; + if (matrixChainEffect != null) + { + matrixChainEffect.World = Matrix.Identity; + matrixChainEffect.SetView(ref viewMatrix); + matrixChainEffect.SetProjection(ref projectionMatrix); + } + else + { + var effectMatrices = _currentEffect as IEffectMatrices; + if (effectMatrices == null) + return; + effectMatrices.World = Matrix.Identity; + effectMatrices.View = viewMatrix; + effectMatrices.Projection = projectionMatrix; + } + } + + private void RestoreStates() + { + GraphicsDevice.BlendState = _blendState; + GraphicsDevice.SamplerStates[0] = _samplerState; + GraphicsDevice.DepthStencilState = _depthStencilState; + GraphicsDevice.RasterizerState = _rasterizerState; + } + + /// + /// Enqueues draw call information. + /// + /// The draw call information. + /// + /// + /// If possible, the is merged with the last enqueued draw call information instead of + /// being + /// enqueued. + /// + /// + /// If the enqueue buffer is full, a is invoked and then afterwards + /// is enqueued. + /// + /// + protected void Enqueue(ref TDrawCallInfo drawCall) + { + if (EnqueuedDrawCallCount > 0 && drawCall.TryMerge(ref DrawCalls[EnqueuedDrawCallCount - 1])) + return; + if (EnqueuedDrawCallCount >= DrawCalls.Length) + Flush(); + DrawCalls[EnqueuedDrawCallCount++] = drawCall; + } + + /* It might be better to have derived classes just implement the for loop instead of having this virtual method call... + * However, if the derived class is only going to override this method once and the code is short, which should both be + * true, then maybe we can get away with this virtual method call by having it inlined. So tell the JIT or AOT compiler + * we would like it be so. This does NOT guarantee the compiler will respect our wishes. + */ + + /// + /// Submits a draw operation to the using the specified . + /// + /// The draw call information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected abstract void InvokeDrawCall(ref TDrawCallInfo drawCall); + + private void SubmitDrawCalls() + { + if (EnqueuedDrawCallCount == 0) + return; + + for (var i = 0; i < EnqueuedDrawCallCount; i++) + { + DrawCalls[i].SetState(_currentEffect); + + foreach (var pass in _currentEffect.CurrentTechnique.Passes) + { + pass.Apply(); + InvokeDrawCall(ref DrawCalls[i]); + } + } + + Array.Clear(DrawCalls, 0, EnqueuedDrawCallCount); + EnqueuedDrawCallCount = 0; + } + } +} + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Batcher2D.cs b/Source/MonoGame.Extended.Graphics/Batcher2D.cs new file mode 100644 index 000000000..bcb98c230 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Batcher2D.cs @@ -0,0 +1,474 @@ +using System; +using System.Text; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Graphics.Effects; +using MonoGame.Extended.Graphics.Geometry; + +namespace MonoGame.Extended.Graphics +{ + /// + /// A general purpose for two-dimensional geometry that change + /// frequently between frames such as sprites and shapes. + /// + /// + /// + /// For drawing user interfaces, consider using instead because it supports scissor rectangles. + /// + public sealed class Batcher2D : Batcher + { + + internal const int DefaultMaximumVerticesCount = 8192; + internal const int DefaultMaximumIndicesCount = 12288; + + private readonly VertexBuffer _vertexBuffer; + private readonly IndexBuffer _indexBuffer; + private readonly VertexPositionColorTexture[] _vertices; + private int _vertexCount; + private readonly ushort[] _indices; + private int _indexCount; + private readonly ushort[] _sortedIndices; + private readonly GeometryBuilder2D _geometryBuilder; + + /// + /// Initializes a new instance of the class. + /// + /// The graphics device. + /// + /// The maximum number of vertices that can be enqueued before a + /// is required. The default value is 8192. + /// + /// + /// The maximum number of indices that can be enqueued before a + /// is required. The default value is 12288. + /// + /// + /// The maximum number of structs that can be enqueued before a + /// is required. The default value is 2048. + /// + /// . + /// + /// is less than or equal + /// 0, or is less than or equal to 0, or, + /// is less than or equal to 0. + /// + public Batcher2D(GraphicsDevice graphicsDevice, + ushort maximumVerticesCount = DefaultMaximumVerticesCount, + ushort maximumIndicesCount = DefaultMaximumIndicesCount, + int maximumDrawCallsCount = DefaultBatchMaximumDrawCallsCount) + : base( + graphicsDevice, + new DefaultEffect(graphicsDevice) + { + TextureEnabled = true, + VertexColorEnabled = true + }, maximumDrawCallsCount) + + { + _vertices = new VertexPositionColorTexture[maximumVerticesCount]; + _vertexBuffer = new DynamicVertexBuffer(graphicsDevice, VertexPositionColorTexture.VertexDeclaration, maximumVerticesCount, BufferUsage.WriteOnly); + + _indices = new ushort[maximumIndicesCount]; + _sortedIndices = new ushort[maximumIndicesCount]; + _indexBuffer = new DynamicIndexBuffer(graphicsDevice, IndexElementSize.SixteenBits, maximumIndicesCount, BufferUsage.WriteOnly); + _geometryBuilder = new GeometryBuilder2D(4, 6); + } + + protected override void SortDrawCallsAndBindBuffers() + { + // Upload the vertices to the GPU and then select that vertex stream for drawing + _vertexBuffer.SetData(_vertices, 0, _vertexCount); + GraphicsDevice.SetVertexBuffer(_vertexBuffer); + + Array.Sort(DrawCalls, 0, EnqueuedDrawCallCount); + BuildSortedIndices(); + + // Upload the indices to the GPU and then select that index stream for drawing + _indexBuffer.SetData(_sortedIndices, 0, _indexCount); + GraphicsDevice.Indices = _indexBuffer; + + _indexCount = 0; + _vertexCount = 0; + } + + private void BuildSortedIndices() + { + var newDrawCallsCount = 0; + DrawCalls[0].StartIndex = 0; + var currentDrawCall = DrawCalls[0]; + DrawCalls[newDrawCallsCount++] = DrawCalls[0]; + + var drawCallIndexCount = currentDrawCall.PrimitiveCount * 3; + Array.Copy(_indices, currentDrawCall.StartIndex, _sortedIndices, 0, drawCallIndexCount); + var sortedIndexCount = drawCallIndexCount; + + // iterate through sorted draw calls checking if any can now be merged to reduce expensive draw calls to the graphics API + // this might need to be changed for next-gen graphics API (Vulkan, Metal, DirectX 12) where the draw calls are not so expensive + for (var i = 1; i < EnqueuedDrawCallCount; i++) + { + currentDrawCall = DrawCalls[i]; + drawCallIndexCount = currentDrawCall.PrimitiveCount * 3; + Array.Copy(_indices, currentDrawCall.StartIndex, _sortedIndices, sortedIndexCount, drawCallIndexCount); + sortedIndexCount += drawCallIndexCount; + + if (currentDrawCall.TryMerge(ref DrawCalls[newDrawCallsCount - 1])) + continue; + + currentDrawCall.StartIndex = sortedIndexCount; + DrawCalls[newDrawCallsCount++] = currentDrawCall; + } + + EnqueuedDrawCallCount = newDrawCallsCount; + } + + /// + /// Submits a draw operation to the using the specified . + /// + /// The draw call information. + protected override void InvokeDrawCall(ref DrawCallInfo drawCall) + { + GraphicsDevice.DrawIndexedPrimitives(drawCall.PrimitiveType, 0, drawCall.StartIndex, drawCall.PrimitiveCount); + } + + /// + /// Draws a sprite using a specified , transform , source + /// , and an optional + /// , origin , , and depth . + /// + /// The . + /// The transform . + /// + /// The texture region of the . Use + /// null to use the entire . + /// + /// The . Use null to use the default . + /// The . The default value is . + /// The depth . The default value is 0. + /// The method has not been called. + /// is null. + public void DrawSprite(Texture2D texture, ref Matrix2D transformMatrix, ref Rectangle sourceRectangle, + Color? color = null, FlipFlags flags = FlipFlags.None, float depth = 0) + { + _geometryBuilder.BuildSprite(_vertexCount, ref transformMatrix, texture, ref sourceRectangle, color, flags, depth); + EnqueueBuiltGeometry(texture, depth); + } + + /// + /// Draws a using the specified transform and an optional + /// , origin , , and depth . + /// + /// The . + /// The transform . + /// The . Use null to use the default . + /// The . The default value is . + /// The depth . The default value is 0. + /// The method has not been called. + /// is null. + public void DrawTexture(Texture2D texture, ref Matrix2D transformMatrix, Color? color = null, + FlipFlags flags = FlipFlags.None, float depth = 0) + { + var rectangle = default(Rectangle); + _geometryBuilder.BuildSprite(_vertexCount, ref transformMatrix, texture, ref rectangle, color, flags, depth); + EnqueueBuiltGeometry(texture, depth); + } + + private void EnqueueBuiltGeometry(Texture2D texture, float depth) + { + if ((_vertexCount + _geometryBuilder.VertexCount > _vertices.Length) || + (_indexCount + _geometryBuilder.IndexCount > _indices.Length)) + Flush(); + var drawCall = new DrawCallInfo(texture, _geometryBuilder.PrimitiveType, _indexCount, + _geometryBuilder.PrimitivesCount, depth); + Array.Copy(_geometryBuilder.Vertices, 0, _vertices, _vertexCount, _geometryBuilder.VertexCount); + _vertexCount += _geometryBuilder.VertexCount; + Array.Copy(_geometryBuilder.Indices, 0, _indices, _indexCount, _geometryBuilder.IndexCount); + _indexCount += _geometryBuilder.IndexCount; + Enqueue(ref drawCall); + } + + /// + /// Draws unicode (UTF-16) characters as sprites using the specified , text + /// , transform and optional , origin + /// , , and depth . + /// + /// The . + /// The text . + /// The transform . + /// + /// The . Use null to use the default + /// . + /// + /// The . The default value is . + /// The depth . The default value is 0f. + /// The method has not been called. + /// is null or is null. + public void DrawString(BitmapFont bitmapFont, StringBuilder text, ref Matrix2D transformMatrix, + Color? color = null, FlipFlags flags = FlipFlags.None, float depth = 0f) + { + EnsureHasBegun(); + + if (bitmapFont == null) + throw new ArgumentNullException(nameof(bitmapFont)); + + if (text == null) + throw new ArgumentNullException(nameof(text)); + + var lineSpacing = bitmapFont.LineHeight; + var offset = new Vector2(0, 0); + + for (var i = 0; i < text.Length;) + { + int character; + if (char.IsLowSurrogate(text[i])) + { + character = char.ConvertToUtf32(text[i - 1], text[i]); + i += 2; + } + else if (char.IsHighSurrogate(text[i])) + { + character = char.ConvertToUtf32(text[i], text[i - 1]); + i += 2; + } + else + { + character = text[i]; + i += 1; + } + + // ReSharper disable once SwitchStatementMissingSomeCases + switch (character) + { + case '\r': + continue; + case '\n': + offset.X = 0; + offset.Y += lineSpacing; + continue; + } + + var fontRegion = bitmapFont.GetCharacterRegion(character); + if (fontRegion == null) + continue; + + var transform1Matrix = transformMatrix; + transform1Matrix.M31 += offset.X + fontRegion.XOffset; + transform1Matrix.M32 += offset.Y + fontRegion.YOffset; + + var textureRegion = fontRegion.TextureRegion; + var bounds = textureRegion.Bounds; + DrawSprite(textureRegion.Texture, ref transform1Matrix, ref bounds, color, flags, depth); + + offset.X += i != text.Length - 1 + ? fontRegion.XAdvance + bitmapFont.LetterSpacing + : fontRegion.XOffset + fontRegion.Width; + } + } + + /// + /// Draws unicode (UTF-16) characters as sprites using the specified , text + /// , position and optional , rotation + /// , origin , scale , and + /// depth . + /// + /// The . + /// The text . + /// The position . + /// + /// The . Use null to use the default + /// . + /// + /// + /// The angle (in radians) to rotate each sprite about its . The default + /// value is 0f. + /// + /// + /// The origin . Use null to use the default + /// . + /// + /// + /// The scale . Use null to use the default + /// . + /// + /// The . The default value is . + /// The depth . The default value is 0f + /// The method has not been called. + /// is null or is null. + public void DrawString(BitmapFont bitmapFont, StringBuilder text, Vector2 position, Color? color = null, + float rotation = 0f, Vector2? origin = null, Vector2? scale = null, + FlipFlags flags = FlipFlags.None, float depth = 0f) + { + Matrix2D transformMatrix; + Matrix2D.CreateFrom(position, rotation, scale, origin, out transformMatrix); + DrawString(bitmapFont, text, ref transformMatrix, color, flags, depth); + } + + /// + /// Draws unicode (UTF-16) characters as sprites using the specified , text + /// , transform and optional , origin + /// , , and depth . + /// + /// The . + /// The text . + /// The transform . + /// + /// The . Use null to use the default + /// . + /// + /// The . The default value is . + /// The depth . The default value is 0f + /// The method has not been called. + /// is null or is null. + public void DrawString(BitmapFont bitmapFont, string text, ref Matrix2D transformMatrix, Color? color = null, + FlipFlags flags = FlipFlags.None, float depth = 0f) + { + EnsureHasBegun(); + + if (bitmapFont == null) + throw new ArgumentNullException(nameof(bitmapFont)); + + if (text == null) + throw new ArgumentNullException(nameof(text)); + + var lineSpacing = bitmapFont.LineHeight; + var offset = new Vector2(0, 0); + + for (var i = 0; i < text.Length;) + { + int character; + if (char.IsLowSurrogate(text[i])) + { + character = char.ConvertToUtf32(text[i - 1], text[i]); + i += 2; + } + else if (char.IsHighSurrogate(text[i])) + { + character = char.ConvertToUtf32(text[i], text[i - 1]); + i += 2; + } + else + { + character = text[i]; + i += 1; + } + + // ReSharper disable once SwitchStatementMissingSomeCases + switch (character) + { + case '\r': + continue; + case '\n': + offset.X = 0; + offset.Y += lineSpacing; + continue; + } + + var fontRegion = bitmapFont.GetCharacterRegion(character); + if (fontRegion == null) + continue; + + var transform1Matrix = transformMatrix; + transform1Matrix.M31 += offset.X + fontRegion.XOffset; + transform1Matrix.M32 += offset.Y + fontRegion.YOffset; + + var textureRegion = fontRegion.TextureRegion; + var bounds = textureRegion.Bounds; + DrawSprite(textureRegion.Texture, ref transform1Matrix, ref bounds, color, flags, depth); + + offset.X += i != text.Length - 1 + ? fontRegion.XAdvance + bitmapFont.LetterSpacing + : fontRegion.XOffset + fontRegion.Width; + } + } + + /// + /// Draws unicode (UTF-16) characters as sprites using the specified , text + /// , position and optional , rotation + /// , origin , scale , and + /// depth . + /// + /// The . + /// The text . + /// The position . + /// + /// The . Use null to use the default + /// . + /// + /// + /// The angle (in radians) to rotate each sprite about its . The default + /// value is 0f. + /// + /// + /// The origin . Use null to use the default + /// . + /// + /// + /// The scale . Use null to use the default + /// . + /// + /// The . The default value is . + /// The depth . The default value is 0f + /// The method has not been called. + /// is null or is null. + public void DrawString(BitmapFont bitmapFont, string text, Vector2 position, Color? color = null, + float rotation = 0f, Vector2? origin = null, Vector2? scale = null, + FlipFlags flags = FlipFlags.None, float depth = 0f) + { + Matrix2D matrix; + Matrix2D.CreateFrom(position, rotation, scale, origin, out matrix); + DrawString(bitmapFont, text, ref matrix, color, flags, depth); + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + [EditorBrowsable(EditorBrowsableState.Never)] + public struct DrawCallInfo : IBatchDrawCallInfo, IComparable + { + internal readonly PrimitiveType PrimitiveType; + internal int StartIndex; + internal int PrimitiveCount; + internal readonly Texture2D Texture; + internal readonly uint TextureKey; + internal readonly uint DepthKey; + + internal unsafe DrawCallInfo(Texture2D texture, PrimitiveType primitiveType, int startIndex, int primitiveCount, float depth) + { + PrimitiveType = primitiveType; + StartIndex = startIndex; + PrimitiveCount = primitiveCount; + Texture = texture; + TextureKey = (uint)RuntimeHelpers.GetHashCode(texture); + DepthKey = *(uint*)&depth; + } + + public void SetState(Effect effect) + { + var textureEffect = effect as ITextureEffect; + if (textureEffect != null) + textureEffect.Texture = Texture; + } + + public bool TryMerge(ref DrawCallInfo drawCall) + { + if (PrimitiveType != drawCall.PrimitiveType || TextureKey != drawCall.TextureKey || + DepthKey != drawCall.DepthKey) + return false; + drawCall.PrimitiveCount += PrimitiveCount; + return true; + } + + [SuppressMessage("ReSharper", "ImpureMethodCallOnReadonlyValueField")] + public int CompareTo(DrawCallInfo other) + { + var result = TextureKey.CompareTo(other.TextureKey);; + if (result != 0) + return result; + result = DepthKey.CompareTo(other.DepthKey); + return result != 0 ? result : ((byte)PrimitiveType).CompareTo((byte)other.PrimitiveType); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/DefaultEffect.cs b/Source/MonoGame.Extended.Graphics/Effects/DefaultEffect.cs new file mode 100644 index 000000000..783067716 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/DefaultEffect.cs @@ -0,0 +1,203 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Collections; + +namespace MonoGame.Extended.Graphics.Effects +{ + /// + /// An that allows objects, within a 3D context, to be represented on a 2D monitor. + /// + /// + /// + public class DefaultEffect : MatrixChainEffect, ITextureEffect + { + /// + /// The bitmask for use with indicating wether has + /// changed in the last frame. + /// + protected static uint DirtyTextureBitMask = BitVector32.CreateMask(UseDefaultProjectionBitMask); + + /// + /// The bitmask for use with indicating wether the underlying vertex shader and + /// fragment (pixel) shaders have changed to one of the pre-defined shaders in the last frame. + /// + protected static uint DirtyShaderIndexBitMask = BitVector32.CreateMask(DirtyTextureBitMask); + + /// + /// The bitmask for use with indicating wether the material color has changed in + /// the last frame. + /// + public static uint DirtyMaterialColorBitMask = BitVector32.CreateMask(DirtyShaderIndexBitMask); + + private Texture2D _texture; + private EffectParameter _textureParameter; + + private float _alpha = 1; + private Color _diffuseColor = Color.White; + private EffectParameter _diffuseColorParameter; + + private bool _textureEnabled; + private bool _vertexColorEnabled; + + /// + /// Gets or sets the material . + /// + /// + /// The material . + /// + public Texture2D Texture + { + get { return _texture; } + set + { + _texture = value; + Flags[DirtyTextureBitMask] = true; + } + } + + /// + /// Gets or sets the material color alpha. + /// + /// + /// + /// The alpha channel uses the premultiplied (associated) representation. This means that the RGB components of a + /// color represent + /// the color of the object of pixel, adjusted for its opacity by multiplication of . + /// + /// + public float Alpha + { + get { return _alpha; } + + set + { + _alpha = value; + Flags[DirtyMaterialColorBitMask] = true; + } + } + + /// + /// Gets or sets whether texturing is enabled. + /// + public bool TextureEnabled + { + get { return _textureEnabled; } + + set + { + if (_textureEnabled == value) + return; + _textureEnabled = value; + Flags[DirtyShaderIndexBitMask] = true; + } + } + + /// + /// Gets or sets whether vertex color is enabled. + /// + public bool VertexColorEnabled + { + get { return _vertexColorEnabled; } + + set + { + if (_vertexColorEnabled == value) + return; + _vertexColorEnabled = value; + Flags[DirtyShaderIndexBitMask] = true; + } + } + + /// + /// Initializes a new instance of the class. + /// + /// The graphics device. + public DefaultEffect(GraphicsDevice graphicsDevice) + : base(graphicsDevice, EffectResource.DefaultEffect.Bytecode) + { + Initialize(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The graphics device. + /// The byte code of the shader program. + public DefaultEffect(GraphicsDevice graphicsDevice, byte[] byteCode) + : base(graphicsDevice, byteCode) + { + Initialize(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The clone source. + public DefaultEffect(Effect cloneSource) + : base(cloneSource) + { + Initialize(); + } + + private void Initialize() + { + Flags[DirtyMaterialColorBitMask] = true; + _textureParameter = Parameters["Texture"]; + _diffuseColorParameter = Parameters["DiffuseColor"]; + } + + /// + /// Computes derived parameter values immediately before applying the effect. + /// + protected override void OnApply() + { + base.OnApply(); + + if (Flags[DirtyTextureBitMask]) + { + _textureParameter.SetValue(_texture); + Flags[DirtyTextureBitMask] = false; + } + + // ReSharper disable once InvertIf + if (Flags[DirtyMaterialColorBitMask]) + { + UpdateMaterialColor(); + Flags[DirtyMaterialColorBitMask] = false; + } + + // ReSharper disable once InvertIf + if (Flags[DirtyShaderIndexBitMask]) + { + var shaderIndex = 0; + + if (_textureEnabled) + shaderIndex += 1; + + if (_vertexColorEnabled) + shaderIndex += 2; + + Flags[DirtyShaderIndexBitMask] = false; + CurrentTechnique = Techniques[shaderIndex]; + } + } + + /// + /// Updates the material color parameters associated with this . + /// + protected virtual void UpdateMaterialColor() + { + var diffuseColorVector3 = _diffuseColor.ToVector3(); + + var diffuseColorVector4 = new Vector4() + { + X = diffuseColorVector3.X * Alpha, + Y = diffuseColorVector3.Y * Alpha, + Z = diffuseColorVector3.Z * Alpha, + W = Alpha, + }; + + _diffuseColorParameter.SetValue(diffuseColorVector4); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/EffectResource.cs b/Source/MonoGame.Extended.Graphics/Effects/EffectResource.cs new file mode 100644 index 000000000..b9c4932ba --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/EffectResource.cs @@ -0,0 +1,78 @@ +using System.IO; +using System.Reflection; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Effects +{ + /// + /// Reperesents the bytecode of an that is encapsulated inside a compiled assembly. + /// + /// + /// + /// Files that are encapsulated inside a compiled assembly are commonly known as Manifiest or embedded resources. + /// Since embedded resources are added to the assembly at compiled time, they can not be accidentally deleted or + /// misplaced. However, if the file needs to be changed, the assembly will need to be re-compiled with the changed + /// file. + /// + /// + /// To add an embedded resource file to an assembly, first add it to the project and then change the Build Action + /// in the Properties of the file to Embedded Resource. The next time the project is compiled, the + /// compiler will add the file to the assembly as an embedded resource. The compiler adds namespace(s) to the + /// embedded resource so it matches with the path of where the file was added to the project. + /// + /// + public class EffectResource + { + private static EffectResource _defaultEffect; + + /// + /// Gets the embedded into the MonoGame.Extended.Graphics library. + /// + public static EffectResource DefaultEffect => _defaultEffect ?? (_defaultEffect = new EffectResource("MonoGame.Extended.Graphics.Effects.Resources.DefaultEffect.ogl.mgfxo")); + + private readonly string _resourceName; + private volatile byte[] _bytecode; + private readonly Assembly _assembly; + + /// + /// Gets the bytecode of the file. + /// + /// + /// The bytecode of the file. + /// + public byte[] Bytecode + { + get + { + if (_bytecode != null) + return _bytecode; + + lock (this) + { + if (_bytecode != null) + return _bytecode; + + var stream = _assembly.GetManifestResourceStream(_resourceName); + using (var memoryStream = new MemoryStream()) + { + stream.CopyTo(memoryStream); + _bytecode = memoryStream.ToArray(); + } + } + + return _bytecode; + } + } + + /// + /// Initializes a new instance of the class. + /// + /// The name of the embedded resource. This must include the namespace(s). + /// The assembly which the embedded resource is apart of. + public EffectResource(string resourceName, Assembly assembly = null) + { + _resourceName = resourceName; + _assembly = assembly ?? typeof(EffectResource).GetTypeInfo().Assembly; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/ITextureEffect.cs b/Source/MonoGame.Extended.Graphics/Effects/ITextureEffect.cs new file mode 100644 index 000000000..ea2ef0b0f --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/ITextureEffect.cs @@ -0,0 +1,18 @@ +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Effects +{ + /// + /// Defines an that uses a . + /// + public interface ITextureEffect + { + /// + /// Gets or sets the . + /// + /// + /// The . + /// + Texture2D Texture { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/MatrixChainEffect.cs b/Source/MonoGame.Extended.Graphics/Effects/MatrixChainEffect.cs new file mode 100644 index 000000000..474c32a92 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/MatrixChainEffect.cs @@ -0,0 +1,155 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Collections; + +namespace MonoGame.Extended.Graphics.Effects +{ + /// + /// An that uses the standard chain of matrix transformations to represent a 3D object on a 2D + /// monitor. + /// + /// + /// + public abstract class MatrixChainEffect : Effect, IMatrixChainEffect + { + /// + /// The bitmask for use with indicating wether , , or has changed in the last frame. + /// + protected static uint DirtyWorldViewProjectionBitMask = BitVector32.CreateMask(); + + /// + /// The bitmask for use with indicating wether to use a default projection matrix or a custom projection matrix. + /// + protected static uint UseDefaultProjectionBitMask = BitVector32.CreateMask(DirtyWorldViewProjectionBitMask); + + /// + /// The dirty flags associated with this . + /// + protected BitVector32 Flags; + + private Matrix _projection = Matrix.Identity; + private Matrix _view = Matrix.Identity; + private Matrix _world = Matrix.Identity; + private EffectParameter _matrixParameter; + + /// + /// Gets or sets the model-to-world . + /// + /// + /// The model-to-world . + /// + public Matrix World + { + get { return _world; } + set { SetWorld(ref value); } + } + + /// + /// Gets or sets the world-to-view . + /// + /// + /// The world-to-view . + /// + public Matrix View + { + get { return _view; } + set { SetView(ref value); } + } + + /// + /// Gets or sets the view-to-projection . + /// + /// + /// The view-to-projection . + /// + public Matrix Projection + { + get { return _projection; } + set { SetProjection(ref value); } + } + + /// + /// Initializes a new instance of the class. + /// + /// The graphics device. + /// The effect code. + protected MatrixChainEffect(GraphicsDevice graphicsDevice, byte[] byteCode) + : base(graphicsDevice, byteCode) + { + Initialize(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The clone source. + protected MatrixChainEffect(Effect cloneSource) + : base(cloneSource) + { + Initialize(); + } + + private void Initialize() + { + Flags[UseDefaultProjectionBitMask] = true; + + _matrixParameter = Parameters["WorldViewProjection"]; + } + + /// + /// Sets the model-to-world . + /// + /// The model-to-world . + public void SetWorld(ref Matrix world) + { + _world = world; + Flags[DirtyWorldViewProjectionBitMask] = true; + } + + /// + /// Sets the world-to-view . + /// + /// The world-to-view . + public void SetView(ref Matrix view) + { + _view = view; + Flags[DirtyWorldViewProjectionBitMask] = true; + } + + /// + /// Sets the view-to-projection . + /// + /// The view-to-projection . + public void SetProjection(ref Matrix projection) + { + _projection = projection; + Flags[DirtyWorldViewProjectionBitMask] = true; + Flags[UseDefaultProjectionBitMask] = false; + } + + /// + /// Computes derived parameter values immediately before applying the effect. + /// + protected override void OnApply() + { + base.OnApply(); + + // ReSharper disable once InvertIf + if (Flags[DirtyWorldViewProjectionBitMask] || Flags[UseDefaultProjectionBitMask]) + { + if (Flags[UseDefaultProjectionBitMask]) + { + var viewport = GraphicsDevice.Viewport; + _projection = Matrix.CreateOrthographicOffCenter(0, viewport.Width, viewport.Height, 0, 0, -1); + } + + Matrix worldViewProjection; + Matrix.Multiply(ref _world, ref _view, out worldViewProjection); + Matrix.Multiply(ref worldViewProjection, ref _projection, out worldViewProjection); + _matrixParameter.SetValue(worldViewProjection); + + Flags[DirtyWorldViewProjectionBitMask] = false; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.dx11.mgfxo b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.dx11.mgfxo new file mode 100644 index 000000000..fc1192884 Binary files /dev/null and b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.dx11.mgfxo differ diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.fx b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.fx new file mode 100644 index 000000000..f8e1e18eb --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.fx @@ -0,0 +1,71 @@ +#include "Macros.fxh" +#include "Structures.fxh" + +DECLARE_TEXTURE(Texture, 0); + +BEGIN_CONSTANTS +MATRIX_CONSTANTS + +float4x4 WorldViewProjection _vs(c0) _cb(c0); + +END_CONSTANTS + +float4 DiffuseColor = float4(1, 1, 1, 1); + +VertexShaderOutputPosition VertexShaderFunctionPosition(VertexShaderInputPosition input) +{ + VertexShaderOutputPosition output; + output.Position = mul(input.Position, WorldViewProjection); + return output; +} + +float4 PixelShaderFunctionPosition(VertexShaderOutputPosition input) : SV_Target0 +{ + return DiffuseColor; +} + +VertexShaderOutputPositionTexture VertexShaderFunctionPositionTexture(VertexShaderInputPositionTexture input) +{ + VertexShaderOutputPositionTexture output; + output.Position = mul(input.Position, WorldViewProjection); + output.TextureCoordinate = input.TextureCoordinate; + return output; +} + +float4 PixelShaderFunctionPositionTexture(VertexShaderOutputPositionTexture input) : SV_Target0 +{ + return SAMPLE_TEXTURE(Texture, input.TextureCoordinate) * DiffuseColor; +} + +VertexShaderOutputPosition VertexShaderFunctionPositionColor(VertexShaderInputPositionColor input) +{ + VertexShaderOutputPositionColor output; + output.Position = mul(input.Position, WorldViewProjection); + output.Color = input.Color; + return output; +} + +float4 PixelShaderFunctionPositionColor(VertexShaderOutputPositionColor input) : SV_Target0 +{ + return input.Color * DiffuseColor; +} + +VertexShaderOutputPositionColorTexture VertexShaderFunctionPositionColorTexture(VertexShaderInputPositionColorTexture input) +{ + VertexShaderOutputPositionColorTexture output; + output.Position = mul(input.Position, WorldViewProjection); + output.Color = input.Color; + output.TextureCoordinate = input.TextureCoordinate; + return output; +} + +float4 PixelShaderFunctionPositionColorTexture(VertexShaderOutputPositionColorTexture input) : SV_Target0 +{ + float4 textureColor = SAMPLE_TEXTURE(Texture, input.TextureCoordinate); + return textureColor * input.Color * DiffuseColor; +} + +TECHNIQUE(Position, VertexShaderFunctionPosition, PixelShaderFunctionPosition); +TECHNIQUE(PositionTexture, VertexShaderFunctionPositionTexture, PixelShaderFunctionPositionTexture); +TECHNIQUE(PositionColor, VertexShaderFunctionPositionColor, PixelShaderFunctionPositionColor); +TECHNIQUE(PositionColorTexture, VertexShaderFunctionPositionColorTexture, PixelShaderFunctionPositionColorTexture); \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.ogl.mgfxo b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.ogl.mgfxo new file mode 100644 index 000000000..4daf3ed5f Binary files /dev/null and b/Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect.ogl.mgfxo differ diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/Macros.fxh b/Source/MonoGame.Extended.Graphics/Effects/Resources/Macros.fxh new file mode 100644 index 000000000..ca690ff78 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/Resources/Macros.fxh @@ -0,0 +1,53 @@ +#ifdef SM4 + +// Macros for targetting shader model 4.0 (DX11) + +#define TECHNIQUE(name, vsname, psname ) \ + technique name { pass { VertexShader = compile vs_4_0_level_9_1 vsname (); PixelShader = compile ps_4_0_level_9_1 psname(); } } + +#define BEGIN_CONSTANTS cbuffer Parameters : register(b0) { +#define MATRIX_CONSTANTS }; cbuffer ProjectionMatrix : register(b1) { +#define END_CONSTANTS }; + +#define _vs(r) +#define _ps(r) +#define _cb(r) : packoffset(r) + +#define DECLARE_TEXTURE(Name, index) \ + Texture2D Name : register(t##index); \ + sampler Name##Sampler : register(s##index) + +#define DECLARE_CUBEMAP(Name, index) \ + TextureCube Name : register(t##index); \ + sampler Name##Sampler : register(s##index) + +#define SAMPLE_TEXTURE(Name, texCoord) Name.Sample(Name##Sampler, texCoord) +#define SAMPLE_CUBEMAP(Name, texCoord) Name.Sample(Name##Sampler, texCoord) + +#else + +// Macros for targetting shader model 2.0 (DX9) + +#define TECHNIQUE(name, vsname, psname ) \ + technique name { pass { VertexShader = compile vs_2_0 vsname (); PixelShader = compile ps_2_0 psname(); } } + +#define BEGIN_CONSTANTS +#define MATRIX_CONSTANTS +#define END_CONSTANTS + +#define _vs(r) : register(vs, r) +#define _ps(r) : register(ps, r) +#define _cb(r) + +#define DECLARE_TEXTURE(Name, index) \ + texture2D Name; \ + sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); }; + +#define DECLARE_CUBEMAP(Name, index) \ + textureCUBE Name; \ + sampler Name##Sampler : register(s##index) = sampler_state { Texture = (Name); }; + +#define SAMPLE_TEXTURE(Name, texCoord) tex2D(Name##Sampler, texCoord) +#define SAMPLE_CUBEMAP(Name, texCoord) texCUBE(Name##Sampler, texCoord) + +#endif diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/RebuildEffects.bat b/Source/MonoGame.Extended.Graphics/Effects/Resources/RebuildEffects.bat new file mode 100644 index 000000000..5cf1a90b2 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/Resources/RebuildEffects.bat @@ -0,0 +1,15 @@ +setlocal + +SET TWOMGFX="C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\2mgfx.exe" + +@for /f %%f IN ('dir /b *.fx') do ( + + call %TWOMGFX% %%~nf.fx %%~nf.ogl.mgfxo /Profile:OpenGL + + call %TWOMGFX% %%~nf.fx %%~nf.dx11.mgfxo /Profile:DirectX_11 + +) + +endlocal + +pause \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Effects/Resources/Structures.fxh b/Source/MonoGame.Extended.Graphics/Effects/Resources/Structures.fxh new file mode 100644 index 000000000..d3af6a0f3 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Effects/Resources/Structures.fxh @@ -0,0 +1,51 @@ +// Vertex shader input structures. + +struct VertexShaderInputPosition +{ + float4 Position : SV_Position; +}; + +struct VertexShaderInputPositionColor +{ + float4 Position : SV_Position; + float4 Color : COLOR; +}; + +struct VertexShaderInputPositionTexture +{ + float4 Position : SV_Position; + float2 TextureCoordinate : TEXCOORD0; +}; + +struct VertexShaderInputPositionColorTexture +{ + float4 Position : SV_Position; + float4 Color : COLOR; + float2 TextureCoordinate : TEXCOORD0; +}; + +// Vertex shader output structures. + +struct VertexShaderOutputPosition +{ + float4 Position : SV_Position; +}; + +struct VertexShaderOutputPositionColor +{ + float4 Position : SV_Position; + float4 Color : COLOR0; +}; + +struct VertexShaderOutputPositionTexture +{ + float4 Position : SV_Position; + float2 TextureCoordinate : TEXCOORD0; +}; + +struct VertexShaderOutputPositionColorTexture +{ + float4 Position : SV_Position; + float4 Color : COLOR0; + float2 TextureCoordinate : TEXCOORD0; +}; diff --git a/Source/MonoGame.Extended.Graphics/FlipFlags.cs b/Source/MonoGame.Extended.Graphics/FlipFlags.cs new file mode 100644 index 000000000..6c1988743 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/FlipFlags.cs @@ -0,0 +1,13 @@ +using System; + +namespace MonoGame.Extended.Graphics +{ + [Flags] + public enum FlipFlags : byte + { + None = 0, + FlipDiagonally = 1 << 0, + FlipVertically = 1 << 1, + FlipHorizontally = 1 << 2 + } +} diff --git a/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder.cs b/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder.cs new file mode 100644 index 000000000..dad4f1556 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder.cs @@ -0,0 +1,24 @@ +using System; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Geometry +{ + public abstract class GeometryBuilder + where TVertexType : struct, IVertexType + where TIndexType : struct + { + public PrimitiveType PrimitiveType { get; protected set; } + public int VertexCount { get; protected set; } + public int IndexCount { get; protected set; } + public int PrimitivesCount { get; protected set; } + + public TVertexType[] Vertices { get; } + public TIndexType[] Indices { get; } + + protected GeometryBuilder(int maximumVerticesCount, int maximumIndicesCount) + { + Vertices = new TVertexType[maximumVerticesCount]; + Indices = new TIndexType[maximumIndicesCount]; + } + } +} diff --git a/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder2D.cs b/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder2D.cs new file mode 100644 index 000000000..e4f13ff88 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Geometry/GeometryBuilder2D.cs @@ -0,0 +1,119 @@ +using System; +using System.Runtime.CompilerServices; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Geometry +{ + public class GeometryBuilder2D : GeometryBuilder + { + public GeometryBuilder2D(int maximumVerticesCount, int maximumIndicesCount) + : base(maximumVerticesCount, maximumIndicesCount) + { + } + + public void BuildSprite(int indexOffset, ref Matrix2D transformMatrix, Texture2D texture, + ref Rectangle sourceRectangle, + Color? color = null, FlipFlags flags = FlipFlags.None, float depth = 0) + { + if (texture == null) + throw new ArgumentNullException(nameof(texture)); + + var texelLeft = 0f; + var texelTop = 0f; + var texelRight = 1f; + var texelBottom = 1f; + + if (sourceRectangle.Width > 0) + { + texelLeft = (sourceRectangle.X + 0.5f) / texture.Width; + texelTop = (sourceRectangle.Y + 0.5f) / texture.Height; + texelRight = (sourceRectangle.X + sourceRectangle.Width) / (float)texture.Width; + texelBottom = (sourceRectangle.Y + sourceRectangle.Height) / (float)texture.Height; + } + else + { + sourceRectangle.Width = texture.Width; + sourceRectangle.Height = texture.Height; + } + + var color1 = color ?? Color.White; + + var vertices = Vertices; + + transformMatrix.Transform(0, 0, ref vertices[0].Position); + vertices[0].Position.Z = depth; + vertices[0].Color = color1; + vertices[0].TextureCoordinate.X = texelLeft; + vertices[0].TextureCoordinate.Y = texelTop; + + transformMatrix.Transform(sourceRectangle.Width, 0, ref vertices[1].Position); + vertices[1].Position.Z = depth; + vertices[1].Color = color1; + vertices[1].TextureCoordinate.X = texelRight; + vertices[1].TextureCoordinate.Y = texelTop; + + transformMatrix.Transform(0, sourceRectangle.Height, ref vertices[2].Position); + vertices[2].Position.Z = depth; + vertices[2].Color = color1; + vertices[2].TextureCoordinate.X = texelLeft; + vertices[2].TextureCoordinate.Y = texelBottom; + + transformMatrix.Transform(sourceRectangle.Width, sourceRectangle.Height, ref vertices[3].Position); + vertices[3].Position.Z = depth; + vertices[3].Color = color1; + vertices[3].TextureCoordinate.X = texelRight; + vertices[3].TextureCoordinate.Y = texelBottom; + + var flipDiagonally = (flags & FlipFlags.FlipDiagonally) != 0; + var flipHorizontally = (flags & FlipFlags.FlipHorizontally) != 0; + var flipVertically = (flags & FlipFlags.FlipVertically) != 0; + + if (flipDiagonally) + { + FloatHelper.Swap(ref vertices[1].TextureCoordinate.X, ref vertices[2].TextureCoordinate.X); + FloatHelper.Swap(ref vertices[1].TextureCoordinate.Y, ref vertices[2].TextureCoordinate.Y); + } + + if (flipHorizontally) + if (flipDiagonally) + { + FloatHelper.Swap(ref vertices[0].TextureCoordinate.Y, ref vertices[1].TextureCoordinate.Y); + FloatHelper.Swap(ref vertices[2].TextureCoordinate.Y, ref vertices[3].TextureCoordinate.Y); + } + else + { + FloatHelper.Swap(ref vertices[0].TextureCoordinate.X, ref vertices[1].TextureCoordinate.X); + FloatHelper.Swap(ref vertices[2].TextureCoordinate.X, ref vertices[3].TextureCoordinate.X); + } + + if (flipVertically) + if (flipDiagonally) + { + FloatHelper.Swap(ref vertices[0].TextureCoordinate.X, ref vertices[2].TextureCoordinate.X); + FloatHelper.Swap(ref vertices[1].TextureCoordinate.X, ref vertices[3].TextureCoordinate.X); + } + else + { + FloatHelper.Swap(ref vertices[0].TextureCoordinate.Y, ref vertices[2].TextureCoordinate.Y); + FloatHelper.Swap(ref vertices[1].TextureCoordinate.Y, ref vertices[3].TextureCoordinate.Y); + } + + VertexCount = 4; + AddQuadrilateralIndices(indexOffset); + IndexCount = 6; + PrimitivesCount = 2; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void AddQuadrilateralIndices(int indexOffset) + { + Indices[0] = (ushort)(0 + indexOffset); + Indices[1] = (ushort)(1 + indexOffset); + Indices[2] = (ushort)(2 + indexOffset); + Indices[3] = (ushort)(1 + indexOffset); + Indices[4] = (ushort)(3 + indexOffset); + Indices[5] = (ushort)(2 + indexOffset); + } + } +} diff --git a/Source/MonoGame.Extended.Graphics/IBatchDrawCallInfo.cs b/Source/MonoGame.Extended.Graphics/IBatchDrawCallInfo.cs new file mode 100644 index 000000000..67c475520 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/IBatchDrawCallInfo.cs @@ -0,0 +1,19 @@ +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics +{ + /// + /// Defines the for a deferred draw call when batching. + /// + public interface IBatchDrawCallInfo where TDrawCallInfo : IBatchDrawCallInfo + { + /// + /// Applies any state from the to the + /// or . + /// + /// The effect. + void SetState(Effect effect); + + bool TryMerge(ref TDrawCallInfo drawCall); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/IMatrixChainEffect.cs b/Source/MonoGame.Extended.Graphics/IMatrixChainEffect.cs new file mode 100644 index 000000000..da8ccb984 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/IMatrixChainEffect.cs @@ -0,0 +1,30 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics +{ + /// + /// Defines an that uses the standard chain of matrix transformations to represent a 3D object on + /// a 2D monitor. + /// + public interface IMatrixChainEffect : IEffectMatrices + { + /// + /// Sets the model-to-world . + /// + /// The model-to-world . + void SetWorld(ref Matrix world); + + /// + /// Sets the world-to-view . + /// + /// The world-to-view . + void SetView(ref Matrix view); + + /// + /// Sets the view-to-projection . + /// + /// The view-to-projection . + void SetProjection(ref Matrix projection); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/MonoGame.Extended.Graphics.csproj b/Source/MonoGame.Extended.Graphics/MonoGame.Extended.Graphics.csproj new file mode 100644 index 000000000..94c448fb4 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/MonoGame.Extended.Graphics.csproj @@ -0,0 +1,86 @@ + + + + + 11.0 + Debug + AnyCPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + Library + Properties + MonoGame.Extended.Graphics + MonoGame.Extended.Graphics + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + 6 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/PrimitiveTypeExtensions.cs b/Source/MonoGame.Extended.Graphics/PrimitiveTypeExtensions.cs new file mode 100644 index 000000000..68a39efb3 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/PrimitiveTypeExtensions.cs @@ -0,0 +1,42 @@ +using System; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics +{ + public static class PrimitiveTypeExtensions + { + internal static int GetPrimitivesCount(this PrimitiveType primitiveType, int verticesCount) + { + switch (primitiveType) + { + case PrimitiveType.LineStrip: + return verticesCount - 1; + case PrimitiveType.LineList: + return verticesCount/2; + case PrimitiveType.TriangleStrip: + return verticesCount - 2; + case PrimitiveType.TriangleList: + return verticesCount/3; + default: + throw new ArgumentException("Invalid primitive type."); + } + } + + internal static int GetVerticesCount(this PrimitiveType primitiveType, int primitivesCount) + { + switch (primitiveType) + { + case PrimitiveType.LineStrip: + return primitivesCount + 1; + case PrimitiveType.LineList: + return primitivesCount*2; + case PrimitiveType.TriangleStrip: + return primitivesCount + 2; + case PrimitiveType.TriangleList: + return primitivesCount*3; + default: + throw new ArgumentException("Invalid primitive type."); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Graphics/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Graphics/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d7b7090ef --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Graphics")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Graphics")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended/RenderTarget2DExtensions.cs b/Source/MonoGame.Extended.Graphics/RenderTarget2DExtensions.cs similarity index 87% rename from Source/MonoGame.Extended/RenderTarget2DExtensions.cs rename to Source/MonoGame.Extended.Graphics/RenderTarget2DExtensions.cs index fe516497a..f09060380 100644 --- a/Source/MonoGame.Extended/RenderTarget2DExtensions.cs +++ b/Source/MonoGame.Extended.Graphics/RenderTarget2DExtensions.cs @@ -2,11 +2,12 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -namespace MonoGame.Extended +namespace MonoGame.Extended.Graphics { public static class RenderTarget2DExtensions { - public static IDisposable BeginDraw(this RenderTarget2D renderTarget, GraphicsDevice graphicsDevice, Color backgroundColor) + public static IDisposable BeginDraw(this RenderTarget2D renderTarget, GraphicsDevice graphicsDevice, + Color backgroundColor) { return new RenderTargetOperation(renderTarget, graphicsDevice, backgroundColor); } @@ -14,10 +15,11 @@ public static IDisposable BeginDraw(this RenderTarget2D renderTarget, GraphicsDe private class RenderTargetOperation : IDisposable { private readonly GraphicsDevice _graphicsDevice; - private readonly Viewport _viewport; private readonly RenderTargetUsage _previousRenderTargetUsage; + private readonly Viewport _viewport; - public RenderTargetOperation(RenderTarget2D renderTarget, GraphicsDevice graphicsDevice, Color backgroundColor) + public RenderTargetOperation(RenderTarget2D renderTarget, GraphicsDevice graphicsDevice, + Color backgroundColor) { _graphicsDevice = graphicsDevice; _viewport = _graphicsDevice.Viewport; diff --git a/Source/MonoGame.Extended.Graphics/packages.config b/Source/MonoGame.Extended.Graphics/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Graphics/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui.nuspec b/Source/MonoGame.Extended.Gui.nuspec new file mode 100644 index 000000000..fd1011acf --- /dev/null +++ b/Source/MonoGame.Extended.Gui.nuspec @@ -0,0 +1,34 @@ + + + + + MonoGame.Extended.Gui + $version$ + + A GUI system for MonoGame written from the ground up to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Gui + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended gui + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiButton.cs b/Source/MonoGame.Extended.Gui/Controls/GuiButton.cs new file mode 100644 index 000000000..495324135 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiButton.cs @@ -0,0 +1,93 @@ +using System; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiButton : GuiControl + { + public GuiButton() + { + } + + public GuiButton(TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + } + + public event EventHandler Clicked; + public event EventHandler PressedStateChanged; + + private bool _isPressed; + public bool IsPressed + { + get { return _isPressed; } + set + { + if (_isPressed != value) + { + _isPressed = value; + PressedStyle?.ApplyIf(this, _isPressed); + PressedStateChanged?.Invoke(this, EventArgs.Empty); + } + } + } + + private GuiControlStyle _pressedStyle; + public GuiControlStyle PressedStyle + { + get { return _pressedStyle; } + set + { + if (_pressedStyle != value) + { + _pressedStyle = value; + PressedStyle?.ApplyIf(this, _isPressed); + } + } + } + + private bool _isPointerDown; + + public override void OnPointerDown(GuiPointerEventArgs args) + { + base.OnPointerDown(args); + + if (IsEnabled) + { + _isPointerDown = true; + IsPressed = true; + } + } + + public override void OnPointerUp(GuiPointerEventArgs args) + { + base.OnPointerUp(args); + + _isPointerDown = false; + + if (IsPressed) + { + IsPressed = false; + + if (BoundingRectangle.Contains(args.Position) && IsEnabled) + Clicked?.Invoke(this, EventArgs.Empty); + } + } + + public override void OnPointerEnter(GuiPointerEventArgs args) + { + base.OnPointerEnter(args); + + if (IsEnabled && _isPointerDown) + IsPressed = true; + } + + public override void OnPointerLeave(GuiPointerEventArgs args) + { + base.OnPointerLeave(args); + + if (IsEnabled) + IsPressed = false; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiCheckBox.cs b/Source/MonoGame.Extended.Gui/Controls/GuiCheckBox.cs new file mode 100644 index 000000000..24641fcf5 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiCheckBox.cs @@ -0,0 +1,74 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Shapes; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiCheckBox : GuiControl + { + public GuiCheckBox() + { + } + + public GuiCheckBox(TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + } + + public event EventHandler CheckStateChanged; + + private bool _isChecked; + public bool IsChecked + { + get { return _isChecked; } + set + { + if (_isChecked != value) + { + _isChecked = value; + CheckedStyle?.ApplyIf(this, _isChecked); + CheckStateChanged?.Invoke(this, EventArgs.Empty); + } + } + } + + private GuiControlStyle _checkedStyle; + public GuiControlStyle CheckedStyle + { + get { return _checkedStyle; } + set + { + if (_checkedStyle != value) + { + _checkedStyle = value; + CheckedStyle?.ApplyIf(this, _isChecked); + } + } + } + + public override void OnPointerUp(GuiPointerEventArgs args) + { + base.OnPointerUp(args); + + if (IsFocused && BoundingRectangle.Contains(args.Position)) + IsChecked = !IsChecked; + } + + protected override void DrawBackground(IGuiRenderer renderer, float deltaSeconds) + { + var boundingRectangle = BoundingRectangle; + var checkRectangle = new Rectangle(boundingRectangle.X, boundingRectangle.Y, BackgroundRegion.Width, BackgroundRegion.Height); + + renderer.DrawRegion(BackgroundRegion, checkRectangle, Color); + } + + protected override void DrawText(IGuiRenderer renderer, float deltaSeconds, TextInfo textInfo) + { + textInfo.Position = BoundingRectangle.Location.ToVector2() + + new Vector2(BackgroundRegion.Width + 5, BackgroundRegion.Height * 0.5f - textInfo.Font.LineHeight * 0.5f); + + base.DrawText(renderer, deltaSeconds, textInfo); + } + } +} diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiControl.cs b/Source/MonoGame.Extended.Gui/Controls/GuiControl.cs new file mode 100644 index 000000000..d0472c62b --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiControl.cs @@ -0,0 +1,180 @@ +using System.ComponentModel; +using Microsoft.Xna.Framework; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.TextureAtlases; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Controls +{ + public abstract class GuiControl : IMovable, ISizable + { + protected GuiControl() + { + Color = Color.White; + TextColor = Color.White; + IsEnabled = true; + IsVisible = true; + Controls = new GuiControlCollection(this); + Origin = Vector2.One * 0.5f; + } + + protected GuiControl(TextureRegion2D backgroundRegion) + : this() + { + BackgroundRegion = backgroundRegion; + } + + [EditorBrowsable(EditorBrowsableState.Never)] + [JsonIgnore] + public GuiControl Parent { get; internal set; } + + [EditorBrowsable(EditorBrowsableState.Never)] + [JsonIgnore] + public Rectangle BoundingRectangle + { + get + { + var position = Parent != null ? Parent.Position - Parent.Size * Parent.Origin + Position : Position; + return new Rectangle((position - Size * Origin).ToPoint(), (Point)Size); + } + } + + [EditorBrowsable(EditorBrowsableState.Never)] + public Thickness Margin { get; set; } + + [EditorBrowsable(EditorBrowsableState.Never)] + public Thickness Padding { get; set; } + + [EditorBrowsable(EditorBrowsableState.Never)] + public bool IsFocused { get; set; } + + public string Name { get; set; } + public Vector2 Position { get; set; } + public Vector2 Origin { get; set; } + + public Size2 Size { get; set; } + public Color Color { get; set; } + + public Rectangle ClippingRectangle + { + get + { + var r = BoundingRectangle; + return new Rectangle(r.Left + Padding.Left, r.Top + Padding.Top, + r.Width - Padding.Right - Padding.Left, r.Height - Padding.Bottom - Padding.Top); + } + } + + private TextureRegion2D _backgroundRegion; + public TextureRegion2D BackgroundRegion + { + get { return _backgroundRegion; } + set + { + if (_backgroundRegion != value) + { + // if this is the first time a texture region has been set and this control has no size, + // use the size of the texture region + if (_backgroundRegion == null && value != null && Size.IsEmpty) + Size = value.Size; + + _backgroundRegion = value; + } + } + } + + public BitmapFont Font { get; set; } + public string Text { get; set; } + public Color TextColor { get; set; } + public Vector2 TextOffset { get; set; } + + public GuiControlCollection Controls { get; } + + private bool _isEnabled; + public bool IsEnabled + { + get { return _isEnabled; } + set + { + _isEnabled = value; + DisabledStyle?.ApplyIf(this, !_isEnabled); + } + } + + public bool IsVisible { get; set; } + public GuiControlStyle HoverStyle { get; set; } + + private GuiControlStyle _disabledStyle; + public GuiControlStyle DisabledStyle + { + get { return _disabledStyle; } + set + { + _disabledStyle = value; + DisabledStyle?.ApplyIf(this, !_isEnabled); + } + } + + public virtual void OnKeyTyped(KeyboardEventArgs args) { } + public virtual void OnKeyPressed(KeyboardEventArgs args) { } + + public virtual void OnPointerDown(GuiPointerEventArgs args) { } + public virtual void OnPointerUp(GuiPointerEventArgs args) { } + + public virtual void OnPointerEnter(GuiPointerEventArgs args) + { + if (IsEnabled) + HoverStyle?.Apply(this); + } + + public virtual void OnPointerLeave(GuiPointerEventArgs args) + { + if (IsEnabled) + HoverStyle?.Revert(this); + } + + public void Draw(IGuiRenderer renderer, float deltaSeconds) + { + DrawBackground(renderer, deltaSeconds); + + var font = Font ?? renderer.DefaultFont; + var textSize = font.GetStringRectangle(Text ?? string.Empty, Vector2.Zero).Size.ToVector2(); + var textPosition = BoundingRectangle.Center.ToVector2() - textSize * 0.5f; + var textInfo = new TextInfo(Text, font, textPosition, textSize, TextColor, ClippingRectangle); + + DrawText(renderer, deltaSeconds, textInfo); + } + + protected virtual void DrawBackground(IGuiRenderer renderer, float deltaSeconds) + { + renderer.DrawRegion(BackgroundRegion, BoundingRectangle, Color); + } + + protected virtual void DrawText(IGuiRenderer renderer, float deltaSeconds, TextInfo textInfo) + { + if (!string.IsNullOrWhiteSpace(textInfo.Text)) + renderer.DrawText(textInfo.Font, textInfo.Text, textInfo.Position + TextOffset, textInfo.Color, textInfo.ClippingRectangle); + } + + protected struct TextInfo + { + public TextInfo(string text, BitmapFont font, Vector2 position, Vector2 size, Color color, Rectangle? clippingRectangle) + { + Text = text; + Font = font; + Size = size; + Color = color; + ClippingRectangle = clippingRectangle; + Position = position; + } + + public string Text; + public BitmapFont Font; + public Vector2 Size; + public Color Color; + public Rectangle? ClippingRectangle; + public Vector2 Position; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiControlCollection.cs b/Source/MonoGame.Extended.Gui/Controls/GuiControlCollection.cs new file mode 100644 index 000000000..1d7784f86 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiControlCollection.cs @@ -0,0 +1,87 @@ +using System.Collections; +using System.Collections.Generic; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiControlCollection : IList + { + public GuiControlCollection() + { + } + + public GuiControlCollection(GuiControl parent) + { + _parent = parent; + } + + private readonly GuiControl _parent; + private readonly List _list = new List(); + + public IEnumerator GetEnumerator() + { + return _list.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return ((IEnumerable) _list).GetEnumerator(); + } + + public void Add(GuiControl item) + { + item.Parent = _parent; + _list.Add(item); + } + + public void Clear() + { + foreach (var control in _list) + control.Parent = null; + + _list.Clear(); + } + + public bool Contains(GuiControl item) + { + return _list.Contains(item); + } + + public void CopyTo(GuiControl[] array, int arrayIndex) + { + _list.CopyTo(array, arrayIndex); + } + + public bool Remove(GuiControl item) + { + item.Parent = null; + return _list.Remove(item); + } + + public int Count => _list.Count; + + public bool IsReadOnly => ((ICollection) _list).IsReadOnly; + + public int IndexOf(GuiControl item) + { + return _list.IndexOf(item); + } + + public void Insert(int index, GuiControl item) + { + item.Parent = _parent; + _list.Insert(index, item); + } + + public void RemoveAt(int index) + { + _list[index].Parent = null; + _list.RemoveAt(index); + } + + public GuiControl this[int index] + { + get { return _list[index]; } + set { _list[index] = value; } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiImage.cs b/Source/MonoGame.Extended.Gui/Controls/GuiImage.cs new file mode 100644 index 000000000..5bee4c2a9 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiImage.cs @@ -0,0 +1,16 @@ +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiImage : GuiControl + { + public GuiImage() + { + } + + public GuiImage(TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiLabel.cs b/Source/MonoGame.Extended.Gui/Controls/GuiLabel.cs new file mode 100644 index 000000000..81d7f191b --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiLabel.cs @@ -0,0 +1,22 @@ +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiLabel : GuiControl + { + public GuiLabel() + { + } + + public GuiLabel(string text) + { + Text = text; + } + + public GuiLabel(string text, TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + Text = text; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiPanel.cs b/Source/MonoGame.Extended.Gui/Controls/GuiPanel.cs new file mode 100644 index 000000000..88f06d9af --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiPanel.cs @@ -0,0 +1,16 @@ +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiPanel : GuiControl + { + public GuiPanel() + { + } + + public GuiPanel(TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiProgressBar.cs b/Source/MonoGame.Extended.Gui/Controls/GuiProgressBar.cs new file mode 100644 index 000000000..7a429f9b3 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiProgressBar.cs @@ -0,0 +1,46 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiProgressBar : GuiControl + { + public GuiProgressBar() + { + } + + public GuiProgressBar(TextureRegion2D backgroundRegion) + : base(backgroundRegion) + { + } + + private float _progress = 1.0f; + public float Progress + { + get { return _progress; } + set + { + // ReSharper disable once CompareOfFloatsByEqualityOperator + if(_progress != value) + { + _progress = value; + ProgressChanged?.Invoke(this, EventArgs.Empty); + } + } + } + + public TextureRegion2D BarRegion { get; set; } + + public event EventHandler ProgressChanged; + + protected override void DrawBackground(IGuiRenderer renderer, float deltaSeconds) + { + base.DrawBackground(renderer, deltaSeconds); + + var boundingRectangle = BoundingRectangle; + var clippingRectangle = new Rectangle(boundingRectangle.X, boundingRectangle.Y, (int)(boundingRectangle.Width * Progress), boundingRectangle.Height); + renderer.DrawRegion(BarRegion, BoundingRectangle, Color, clippingRectangle); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Controls/GuiTextBox.cs b/Source/MonoGame.Extended.Gui/Controls/GuiTextBox.cs new file mode 100644 index 000000000..1e3f84cb5 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Controls/GuiTextBox.cs @@ -0,0 +1,107 @@ +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Controls +{ + public class GuiTextBox : GuiControl + { + public GuiTextBox() + : this(backgroundRegion: null, text: string.Empty) + { + } + + public GuiTextBox(TextureRegion2D backgroundRegion) + : this(backgroundRegion: backgroundRegion, text: string.Empty) + { + } + + public GuiTextBox(TextureRegion2D backgroundRegion, string text) + : base(backgroundRegion) + { + Text = text; + } + + public int SelectionStart { get; set; } + + public override void OnPointerDown(GuiPointerEventArgs args) + { + base.OnPointerDown(args); + + SelectionStart = Text.Length; + _isCaretVisible = true; + } + + public override void OnKeyPressed(KeyboardEventArgs args) + { + base.OnKeyPressed(args); + + switch (args.Key) + { + case Keys.Back: + if (SelectionStart > 0 && Text.Length > 0) + { + SelectionStart--; + Text = Text.Remove(SelectionStart, 1); + } + break; + case Keys.Delete: + if (SelectionStart < Text.Length) + Text = Text.Remove(SelectionStart, 1); + break; + case Keys.Left: + if (SelectionStart > 0) + SelectionStart--; + break; + case Keys.Right: + if (SelectionStart < Text.Length) + SelectionStart++; + break; + default: + if (args.Character != null) + { + SelectionStart++; + Text += args.Character; + } + break; + } + + _isCaretVisible = true; + } + + private const float _caretBlinkRate = 0.53f; + private float _nextCaretBlink = _caretBlinkRate; + private bool _isCaretVisible = true; + + protected override void DrawText(IGuiRenderer renderer, float deltaSeconds, TextInfo textInfo) + { + var caretRectangle = textInfo.Font.GetStringRectangle(Text.Substring(0, SelectionStart), textInfo.Position); + + // TODO: Finish the caret position stuff when it's outside the clipping rectangle + if (caretRectangle.Right > ClippingRectangle.Right) + { + var textOffset = caretRectangle.Right - ClippingRectangle.Right; + textInfo.Position.X -= textOffset; + } + + caretRectangle.X = caretRectangle.Right < ClippingRectangle.Right ? caretRectangle.Right : ClippingRectangle.Right; + caretRectangle.Width = 1; + + base.DrawText(renderer, deltaSeconds, textInfo); + + if (IsFocused) + { + if (_isCaretVisible) + renderer.DrawRectangle(caretRectangle, TextColor); + + _nextCaretBlink -= deltaSeconds; + + if (_nextCaretBlink <= 0) + { + _isCaretVisible = !_isCaretVisible; + _nextCaretBlink = _caretBlinkRate; + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiControlFactory.cs b/Source/MonoGame.Extended.Gui/GuiControlFactory.cs new file mode 100644 index 000000000..5ff6d3e8b --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiControlFactory.cs @@ -0,0 +1,43 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Gui.Controls; + +namespace MonoGame.Extended.Gui +{ + public class GuiControlFactory + { + private readonly GuiSkin _skin; + + public GuiControlFactory(GuiSkin skin) + { + _skin = skin; + } + + public T Create(string template, Vector2 position, string name = null, string text = null) + where T : GuiControl, new() + { + var control = new T(); + _skin.GetStyle(template).Apply(control); + control.Name = name; + control.Position = position; + control.Text = text; + return control; + } + + public T Create(string template, Action onCreate) + where T : GuiControl, new() + { + var control = new T(); + _skin.GetStyle(template).Apply(control); + onCreate(control); + return control; + } + + public GuiControl Create(Type type, string template) + { + var control = (GuiControl) Activator.CreateInstance(type); + _skin.GetStyle(template).Apply(control); + return control; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiControlStyle.cs b/Source/MonoGame.Extended.Gui/GuiControlStyle.cs new file mode 100644 index 000000000..415fcaf62 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiControlStyle.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MonoGame.Extended.Gui.Controls; + +namespace MonoGame.Extended.Gui +{ + public class GuiControlStyle : IDictionary + { + private Dictionary _previousState; + + public GuiControlStyle(Type targetType) + : this(targetType.FullName, targetType) + { + } + + public GuiControlStyle(string name, Type targetType) + { + Name = name; + TargetType = targetType; + _setters = new Dictionary(); + } + + public string Name { get; } + public Type TargetType { get; set; } + + private readonly Dictionary _setters; + + public void ApplyIf(GuiControl control, bool predicate) + { + if (predicate) + Apply(control); + else + Revert(control); + } + + public void Apply(GuiControl control) + { + _previousState = _setters + .ToDictionary(i => i.Key, i => TargetType.GetRuntimeProperty(i.Key)?.GetValue(control)); + + ChangePropertyValues(control, _setters); + } + + public void Revert(GuiControl control) + { + if (_previousState != null) + ChangePropertyValues(control, _previousState); + + _previousState = null; + } + + private static void ChangePropertyValues(GuiControl control, Dictionary setters) + { + var targetType = control.GetType(); + + foreach (var propertyName in setters.Keys) + { + var propertyInfo = targetType.GetRuntimeProperty(propertyName); + var value = setters[propertyName]; + + if(propertyInfo != null && propertyInfo.CanWrite) + propertyInfo.SetValue(control, value); + } + } + + public object this[string key] + { + get { return _setters[key]; } + set { _setters[key] = value; } + } + + public ICollection Keys => _setters.Keys; + public ICollection Values => _setters.Values; + public int Count => _setters.Count; + public bool IsReadOnly => false; + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + public IEnumerator> GetEnumerator() => _setters.GetEnumerator(); + public void Add(string key, object value) => _setters.Add(key, value); + public void Add(KeyValuePair item) => _setters.Add(item.Key, item.Value); + public bool Remove(string key) => _setters.Remove(key); + public bool Remove(KeyValuePair item) => _setters.Remove(item.Key); + public void Clear() => _setters.Clear(); + public bool Contains(KeyValuePair item) => _setters.Contains(item); + public bool ContainsKey(string key) => _setters.ContainsKey(key); + public bool TryGetValue(string key, out object value) => _setters.TryGetValue(key, out value); + + public void CopyTo(KeyValuePair[] array, int arrayIndex) + { + throw new NotSupportedException(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiCursor.cs b/Source/MonoGame.Extended.Gui/GuiCursor.cs new file mode 100644 index 000000000..dcfa72a19 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiCursor.cs @@ -0,0 +1,11 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui +{ + public class GuiCursor + { + public TextureRegion2D TextureRegion { get; set; } + public Color Color { get; set; } = Color.White; + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiPointerEventArgs.cs b/Source/MonoGame.Extended.Gui/GuiPointerEventArgs.cs new file mode 100644 index 000000000..ca44a8253 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiPointerEventArgs.cs @@ -0,0 +1,41 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.Gui +{ + public class GuiPointerEventArgs : EventArgs + { + private GuiPointerEventArgs() + { + } + + public Point Position { get; private set; } + public MouseButton Button { get; private set; } + public int ScrollWheelDelta { get; private set; } + public int ScrollWheelValue { get; private set; } + public TimeSpan Time { get; private set; } + + public static GuiPointerEventArgs FromMouseArgs(MouseEventArgs args) + { + return new GuiPointerEventArgs + { + Position = args.Position, + Button = args.Button, + ScrollWheelDelta = args.ScrollWheelDelta, + ScrollWheelValue = args.ScrollWheelValue, + Time = args.Time + }; + } + + public static GuiPointerEventArgs FromTouchArgs(TouchEventArgs args) + { + return new GuiPointerEventArgs + { + Position = args.Position, + Button = MouseButton.Left, + Time = args.Time + }; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiScreen.cs b/Source/MonoGame.Extended.Gui/GuiScreen.cs new file mode 100644 index 000000000..33a849012 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiScreen.cs @@ -0,0 +1,46 @@ +using System.Linq; +using MonoGame.Extended.Gui.Controls; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui +{ + public class GuiScreen + { + public GuiScreen() + { + Controls = new GuiControlCollection(); + } + + [JsonProperty(Order = 1)] + public GuiSkin Skin { get; set; } + + [JsonProperty(Order = 2)] + public GuiControlCollection Controls { get; } + + public T FindControl(string name) + where T : GuiControl + { + return FindControl(Controls, name); + } + + private static T FindControl(GuiControlCollection controls, string name) + where T : GuiControl + { + foreach (var control in controls) + { + if (control.Name == name) + return control as T; + + if (control.Controls.Any()) + { + var childControl = FindControl(control.Controls, name); + + if (childControl != null) + return childControl; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiSkin.cs b/Source/MonoGame.Extended.Gui/GuiSkin.cs new file mode 100644 index 000000000..2e26fd93e --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiSkin.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using MonoGame.Extended.BitmapFonts; +using System.Linq; +using MonoGame.Extended.TextureAtlases; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui +{ + public class KeyedCollection : ICollection + { + private readonly Func _getKey; + private readonly Dictionary _dictionary = new Dictionary(); + + public KeyedCollection(Func getKey) + { + _getKey = getKey; + } + + public TValue this[TKey key] => _dictionary[key]; + public ICollection Keys => _dictionary.Keys; + public ICollection Values => _dictionary.Values; + public int Count => _dictionary.Count; + public bool IsReadOnly => false; + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public IEnumerator GetEnumerator() + { + return _dictionary.Values.GetEnumerator(); + } + + public void Add(TValue item) + { + _dictionary.Add(_getKey(item), item); + } + + public void Clear() + { + _dictionary.Clear(); + } + + public bool Contains(TValue item) + { + return _dictionary.ContainsKey(_getKey(item)); + } + + public void CopyTo(TValue[] array, int arrayIndex) + { + throw new NotSupportedException(); + } + + public bool Remove(TValue item) + { + return _dictionary.Remove(_getKey(item)); + } + + public bool ContainsKey(TKey key) + { + return _dictionary.ContainsKey(key); + } + + public bool TryGetValue(TKey key, out TValue value) + { + return _dictionary.TryGetValue(key, out value); + } + } + + + + public class GuiSkin + { + public GuiSkin() + { + TextureAtlases = new List(); + Fonts = new List(); + NinePatches = new List(); + _styles = new KeyedCollection(s => s.Name); + } + + private readonly KeyedCollection _styles; + + [JsonProperty(Order = 0)] + public string Name { get; set; } + + [JsonProperty(Order = 1)] + public IList TextureAtlases { get; set; } + + [JsonProperty(Order = 2)] + public IList Fonts { get; set; } + + [JsonProperty(Order = 3)] + public IList NinePatches { get; set; } + + [JsonProperty(Order = 4)] + public BitmapFont DefaultFont => Fonts.FirstOrDefault(); + + [JsonProperty(Order = 5)] + public GuiCursor Cursor { get; set; } + + [JsonProperty(Order = 6)] + public ICollection Styles => _styles; + + public GuiControlStyle GetStyle(string name) + { + return _styles[name]; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/GuiSpriteBatchRenderer.cs b/Source/MonoGame.Extended.Gui/GuiSpriteBatchRenderer.cs new file mode 100644 index 000000000..137e27ea8 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiSpriteBatchRenderer.cs @@ -0,0 +1,73 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Shapes; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui +{ + public interface IGuiRenderer + { + BitmapFont DefaultFont { get; } + void Begin(); + void DrawRegion(TextureRegion2D textureRegion, Rectangle rectangle, Color color, Rectangle? clippingRectangle = null); + void DrawRegion(TextureRegion2D textureRegion, Vector2 position, Color color, Rectangle? clippingRectangle = null); + void DrawText(BitmapFont font, string text, Vector2 position, Color color, Rectangle? clippingRectangle = null); + void DrawRectangle(Rectangle rectangle, Color color, float thickness = 1f); + void End(); + } + + public class GuiSpriteBatchRenderer : IGuiRenderer + { + private readonly Func _getTransformMatrix; + private readonly SpriteBatch _spriteBatch; + + public GuiSpriteBatchRenderer(GraphicsDevice graphicsDevice, BitmapFont defaultFont, Func getTransformMatrix) + { + _getTransformMatrix = getTransformMatrix; + DefaultFont = defaultFont; + _spriteBatch = new SpriteBatch(graphicsDevice); + } + + public BitmapFont DefaultFont { get; } + public SpriteSortMode SortMode { get; set; } + public BlendState BlendState { get; set; } = BlendState.AlphaBlend; + public SamplerState SamplerState { get; set; } = SamplerState.PointClamp; + public DepthStencilState DepthStencilState { get; set; } = DepthStencilState.Default; + public RasterizerState RasterizerState { get; set; } = RasterizerState.CullNone; + public Effect Effect { get; set; } + + public void Begin() + { + _spriteBatch.Begin(SortMode, BlendState, SamplerState, DepthStencilState, RasterizerState, Effect, _getTransformMatrix()); + } + + public void End() + { + _spriteBatch.End(); + } + + public void DrawRegion(TextureRegion2D textureRegion, Rectangle rectangle, Color color, Rectangle? clippingRectangle = null) + { + if(textureRegion != null) + _spriteBatch.Draw(textureRegion, rectangle, color, clippingRectangle); + } + + public void DrawRegion(TextureRegion2D textureRegion, Vector2 position, Color color, Rectangle? clippingRectangle = null) + { + if (textureRegion != null) + _spriteBatch.Draw(textureRegion, position, color, clippingRectangle); + } + + public void DrawText(BitmapFont font, string text, Vector2 position, Color color, Rectangle? clippingRectangle = null) + { + _spriteBatch.DrawString(font ?? DefaultFont, text, position, color, clippingRectangle); + } + + public void DrawRectangle(Rectangle rectangle, Color color, float thickness = 1f) + { + _spriteBatch.DrawRectangle(rectangle, color, thickness); + } + } +} diff --git a/Source/MonoGame.Extended.Gui/GuiSystem.cs b/Source/MonoGame.Extended.Gui/GuiSystem.cs new file mode 100644 index 000000000..cc1a69ebc --- /dev/null +++ b/Source/MonoGame.Extended.Gui/GuiSystem.cs @@ -0,0 +1,156 @@ +using System.Linq; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Gui.Controls; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.ViewportAdapters; + +namespace MonoGame.Extended.Gui +{ + public class GuiSystem + { + private readonly IGuiRenderer _renderer; + private readonly MouseListener _mouseListener; + private readonly TouchListener _touchListener; + private readonly KeyboardListener _keyboardListener; + + private GuiControl _preFocusedControl; + private GuiControl _focusedControl; + private GuiControl _hoveredControl; + + public GuiSystem(ViewportAdapter viewportAdapter, IGuiRenderer renderer) + { + _renderer = renderer; + + _mouseListener = new MouseListener(viewportAdapter); + _mouseListener.MouseMoved += (s, e) => OnPointerMoved(GuiPointerEventArgs.FromMouseArgs(e)); + _mouseListener.MouseDown += (s, e) => OnPointerDown(GuiPointerEventArgs.FromMouseArgs(e)); + _mouseListener.MouseUp += (s, e) => OnPointerUp(GuiPointerEventArgs.FromMouseArgs(e)); + + _touchListener = new TouchListener(viewportAdapter); + _touchListener.TouchStarted += (s, e) => OnPointerDown(GuiPointerEventArgs.FromTouchArgs(e)); + _touchListener.TouchMoved += (s, e) => OnPointerMoved(GuiPointerEventArgs.FromTouchArgs(e)); + _touchListener.TouchEnded += (s, e) => OnPointerUp(GuiPointerEventArgs.FromTouchArgs(e)); + + _keyboardListener = new KeyboardListener(); + _keyboardListener.KeyTyped += (sender, args) => _focusedControl?.OnKeyTyped(args); + _keyboardListener.KeyPressed += (sender, args) => _focusedControl?.OnKeyPressed(args); + } + + public GuiScreen Screen { get; set; } + public Vector2 CursorPosition { get; set; } + + public void Update(GameTime gameTime) + { + _touchListener.Update(gameTime); + _mouseListener.Update(gameTime); + _keyboardListener.Update(gameTime); + } + + public void Draw(GameTime gameTime) + { + var deltaSeconds = gameTime.GetElapsedSeconds(); + + _renderer.Begin(); + + if (Screen != null) + { + DrawChildren(Screen.Controls, deltaSeconds); + + var cursor = Screen.Skin?.Cursor; + + if (cursor != null) + _renderer.DrawRegion(cursor.TextureRegion, CursorPosition, cursor.Color); + } + + _renderer.End(); + } + + private void DrawChildren(GuiControlCollection controls, float deltaSeconds) + { + foreach (var control in controls.Where(c => c.IsVisible)) + control.Draw(_renderer, deltaSeconds); + + foreach (var childControl in controls.Where(c => c.IsVisible)) + DrawChildren(childControl.Controls, deltaSeconds); + } + + private void OnPointerDown(GuiPointerEventArgs args) + { + if (Screen == null) + return; + + _preFocusedControl = FindControlAtPoint(Screen.Controls, args.Position); + _hoveredControl?.OnPointerDown(args); + } + + private void OnPointerUp(GuiPointerEventArgs args) + { + if (Screen == null) + return; + + var postFocusedControl = FindControlAtPoint(Screen.Controls, args.Position); + + if (_preFocusedControl == postFocusedControl) + { + var focusedControl = postFocusedControl; + + if (_focusedControl != focusedControl) + { + if (_focusedControl != null) + _focusedControl.IsFocused = false; + + _focusedControl = focusedControl; + + if (_focusedControl != null) + _focusedControl.IsFocused = true; + } + } + + _preFocusedControl = null; + _hoveredControl?.OnPointerUp(args); + } + + private void OnPointerMoved(GuiPointerEventArgs args) + { + CursorPosition = args.Position.ToVector2(); + + if (Screen == null) + return; + + var hoveredControl = FindControlAtPoint(Screen.Controls, args.Position); + + if (_hoveredControl != hoveredControl) + { + _hoveredControl?.OnPointerLeave(args); + _hoveredControl = hoveredControl; + _hoveredControl?.OnPointerEnter(args); + } + } + + private static GuiControl FindControlAtPoint(GuiControlCollection controls, Point point) + { + var topMostControl = (GuiControl) null; + + for (var i = controls.Count - 1; i >= 0; i--) + { + var control = controls[i]; + + if (control.IsVisible) + { + if (topMostControl == null && control.BoundingRectangle.Contains(point)) + topMostControl = control; + + if (control.Controls.Any()) + { + var child = FindControlAtPoint(control.Controls, point); + + if (child != null) + topMostControl = child; + } + } + } + + return topMostControl; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Keepers/GuiAlignmentHelper.cs b/Source/MonoGame.Extended.Gui/Keepers/GuiAlignmentHelper.cs new file mode 100644 index 000000000..f8f3251a9 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Keepers/GuiAlignmentHelper.cs @@ -0,0 +1,72 @@ +namespace MonoGame.Extended.Gui.Keepers +{ + //public enum GuiHorizontalAlignment + //{ + // Left, + // Right, + // Centre, + // Stretch + //} + + //public enum GuiVerticalAlignment + //{ + // Top, + // Bottom, + // Centre, + // Stretch + //} + + //public static class GuiAlignmentHelper + //{ + // public static Rectangle GetDestinationRectangle(GuiHorizontalAlignment horizontalAlignment, + // GuiVerticalAlignment verticalAlignment, + // Rectangle sourceRectangle, Rectangle targetRectangle) + // { + // var x = GetHorizontalPosition(horizontalAlignment, sourceRectangle, targetRectangle); + // var y = GetVerticalPosition(verticalAlignment, sourceRectangle, targetRectangle); + // var width = horizontalAlignment == GuiHorizontalAlignment.Stretch + // ? targetRectangle.Width + // : sourceRectangle.Width; + // var height = verticalAlignment == GuiVerticalAlignment.Stretch + // ? targetRectangle.Height + // : sourceRectangle.Height; + // return new Rectangle(x, y, width, height); + // } + + // public static int GetHorizontalPosition(GuiHorizontalAlignment horizontalAlignment, Rectangle sourceRectangle, + // Rectangle targetRectangle) + // { + // switch (horizontalAlignment) + // { + // case GuiHorizontalAlignment.Stretch: + // case GuiHorizontalAlignment.Left: + // return targetRectangle.X; + // case GuiHorizontalAlignment.Right: + // return targetRectangle.Right - sourceRectangle.Width; + // case GuiHorizontalAlignment.Centre: + // return targetRectangle.X + targetRectangle.Width/2 - sourceRectangle.Width/2; + // default: + // throw new ArgumentOutOfRangeException(nameof(horizontalAlignment), horizontalAlignment, + // $"{horizontalAlignment} is not supported"); + // } + // } + + // public static int GetVerticalPosition(GuiVerticalAlignment verticalAlignment, Rectangle sourceRectangle, + // Rectangle targetRectangle) + // { + // switch (verticalAlignment) + // { + // case GuiVerticalAlignment.Stretch: + // case GuiVerticalAlignment.Top: + // return targetRectangle.Y; + // case GuiVerticalAlignment.Bottom: + // return targetRectangle.Bottom - sourceRectangle.Height; + // case GuiVerticalAlignment.Centre: + // return targetRectangle.Y + targetRectangle.Height/2 - sourceRectangle.Height/2; + // default: + // throw new ArgumentOutOfRangeException(nameof(verticalAlignment), verticalAlignment, + // $"{verticalAlignment} is not supported"); + // } + // } + //} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/MonoGame.Extended.Gui.csproj b/Source/MonoGame.Extended.Gui/MonoGame.Extended.Gui.csproj new file mode 100644 index 000000000..ce3868163 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/MonoGame.Extended.Gui.csproj @@ -0,0 +1,96 @@ + + + + + 10.0 + Debug + AnyCPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9} + Library + Properties + MonoGame.Extended.Gui + MonoGame.Extended.Gui + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + 6 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll + True + + + + + {49c87598-994c-49b5-bbb3-7ffc342635d3} + MonoGame.Extended.Input + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Gui/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..34a0c9d47 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Properties/AssemblyInfo.cs @@ -0,0 +1,28 @@ +using System.Resources; +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Gui")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Gui")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiControlJsonConverter.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiControlJsonConverter.cs new file mode 100644 index 000000000..b17c132de --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiControlJsonConverter.cs @@ -0,0 +1,51 @@ +using System; +using MonoGame.Extended.Gui.Controls; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public class GuiControlJsonConverter : JsonConverter + { + private readonly IGuiSkinService _guiSkinService; + private readonly GuiControlStyleJsonConverter _styleConverter = new GuiControlStyleJsonConverter(); + private const string _styleProperty = "Style"; + + public GuiControlJsonConverter(IGuiSkinService guiSkinService) + { + _guiSkinService = guiSkinService; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var controlFactory = new GuiControlFactory(_guiSkinService.Skin); + var style = (GuiControlStyle) _styleConverter.ReadJson(reader, objectType, existingValue, serializer); + var skin = (string) style[_styleProperty]; + var control = controlFactory.Create(style.TargetType, skin); + + object childControls; + + if (style.TryGetValue(nameof(GuiControl.Controls), out childControls)) + { + var controlCollection = childControls as GuiControlCollection; + + if (controlCollection != null) + { + foreach (var child in controlCollection) + control.Controls.Add(child); + } + } + + style.Apply(control); + return control; + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(GuiControl); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiControlStyleJsonConverter.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiControlStyleJsonConverter.cs new file mode 100644 index 000000000..1704580b4 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiControlStyleJsonConverter.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using MonoGame.Extended.Collections; +using MonoGame.Extended.Gui.Controls; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public class GuiControlStyleJsonConverter : JsonConverter + { + private readonly Dictionary _controlTypes; + private const string _typeProperty = "Type"; + private const string _nameProperty = "Name"; + + public GuiControlStyleJsonConverter() + { + _controlTypes = typeof(GuiControl) + .GetTypeInfo() + .Assembly + .ExportedTypes + .Where(t => t.GetTypeInfo().IsSubclassOf(typeof(GuiControl))) + .ToDictionary(t => t.Name); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var style = (GuiControlStyle)value; + var dictionary = new Dictionary + { + [_typeProperty] = style.TargetType.Name + }; + + foreach (var keyValuePair in style) + dictionary.Add(keyValuePair.Key, keyValuePair.Value); + + serializer.Serialize(writer, dictionary); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var dictionary = serializer.Deserialize>(reader); + var name = dictionary.GetValueOrDefault(_nameProperty) as string; + var typeName = dictionary.GetValueOrDefault(_typeProperty) as string; + var targetType = typeName != null ? _controlTypes[typeName] : typeof(GuiControl); + var properties = targetType + .GetRuntimeProperties() + .ToDictionary(p => p.Name); + var style = new GuiControlStyle(name, targetType); + + foreach (var keyValuePair in dictionary.Where(i => i.Key != _typeProperty)) + { + var propertyName = keyValuePair.Key; + var rawValue = keyValuePair.Value; + + PropertyInfo propertyInfo; + var value = properties.TryGetValue(propertyName, out propertyInfo) + ? DeserializeValueAs(serializer, rawValue, propertyInfo.PropertyType) + : DeserializeValueAs(serializer, rawValue, typeof(object)); + + style.Add(propertyName, value); + } + + return style; + } + + private object DeserializeValueAs(JsonSerializer serializer, object value, Type type) + { + var json = JsonConvert.SerializeObject(value); + + using (var textReader = new StringReader(json)) + using (var jsonReader = new JsonTextReader(textReader)) + { + return serializer.Deserialize(jsonReader, type); + } + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(GuiControlStyle); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiJsonContractResolver.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiJsonContractResolver.cs new file mode 100644 index 000000000..3b2fe01d3 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiJsonContractResolver.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace MonoGame.Extended.Gui.Serialization +{ + public class GuiJsonContractResolver : DefaultContractResolver + { + protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) + { + var properties = base.CreateProperties(type, memberSerialization); + + if (type.GetTypeInfo().IsAbstract) //.IsSubclassOf(typeof(GuiControl))) + { + properties.Insert(0, new JsonProperty + { + PropertyType = typeof(string), + PropertyName = "Type", + Readable = true, + Writable = false, + ValueProvider = new JsonShortTypeNameProvider() + }); + } + + return properties; + } + + private class JsonShortTypeNameProvider : IValueProvider + { + public JsonShortTypeNameProvider() + { + } + + public void SetValue(object target, object value) + { + } + + public object GetValue(object target) + { + return target.GetType().Name; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiJsonSerializer.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiJsonSerializer.cs new file mode 100644 index 000000000..c36872b85 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiJsonSerializer.cs @@ -0,0 +1,26 @@ +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Serialization; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public sealed class GuiJsonSerializer : JsonSerializer + { + public GuiJsonSerializer(ContentManager contentManager) + { + var textureRegionService = new GuiTextureRegionService(); + Converters.Add(new Vector2JsonConverter()); + Converters.Add(new Size2JsonConverter()); + Converters.Add(new ColorJsonConverter()); + Converters.Add(new ThicknessJsonConverter()); + Converters.Add(new ContentManagerJsonConverter(contentManager, font => font.Name)); + Converters.Add(new GuiControlStyleJsonConverter()); + Converters.Add(new GuiTextureAtlasJsonConverter(contentManager, textureRegionService)); + Converters.Add(new GuiNinePatchRegion2DJsonConverter(textureRegionService)); + Converters.Add(new TextureRegion2DJsonConverter(textureRegionService)); + ContractResolver = new GuiJsonContractResolver(); + Formatting = Formatting.Indented; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiNinePatchRegion2DJsonConverter.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiNinePatchRegion2DJsonConverter.cs new file mode 100644 index 000000000..ea437541b --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiNinePatchRegion2DJsonConverter.cs @@ -0,0 +1,28 @@ +using System; +using MonoGame.Extended.Serialization; +using MonoGame.Extended.TextureAtlases; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public class GuiNinePatchRegion2DJsonConverter : NinePatchRegion2DJsonConverter + { + private readonly IGuiTextureRegionService _textureRegionService; + + public GuiNinePatchRegion2DJsonConverter(IGuiTextureRegionService textureRegionService) + : base(textureRegionService) + { + _textureRegionService = textureRegionService; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var ninePatch = base.ReadJson(reader, objectType, existingValue, serializer) as NinePatchRegion2D; + + if(ninePatch != null) + _textureRegionService.NinePatches.Add(ninePatch); + + return ninePatch; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiSkinJsonConverter.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiSkinJsonConverter.cs new file mode 100644 index 000000000..7a5e08b03 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiSkinJsonConverter.cs @@ -0,0 +1,60 @@ +using System; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public interface IGuiSkinService + { + GuiSkin Skin { get; set; } + } + + public class GuiSkinService : IGuiSkinService + { + public GuiSkin Skin { get; set; } + } + + public class GuiSkinJsonConverter : JsonConverter + { + private readonly ContentManager _contentManager; + private readonly IGuiSkinService _skinService; + + public GuiSkinJsonConverter(ContentManager contentManager, IGuiSkinService skinService) + { + _contentManager = contentManager; + _skinService = skinService; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.ValueType == typeof(string)) + { + var assetName = (string) reader.Value; + var skinSerializer = new GuiJsonSerializer(_contentManager); + + // TODO: Load this using the ContentManager instead. + using (var stream = TitleContainer.OpenStream(assetName)) + using (var streamReader = new StreamReader(stream)) + using (var jsonReader = new JsonTextReader(streamReader)) + { + var skin = skinSerializer.Deserialize(jsonReader); + _skinService.Skin = skin; + return skin; + } + } + + throw new InvalidOperationException("This converter can only convert from a string"); + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(GuiSkin); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiTextureAtlasJsonConverter.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiTextureAtlasJsonConverter.cs new file mode 100644 index 000000000..ed3fe4d26 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiTextureAtlasJsonConverter.cs @@ -0,0 +1,29 @@ +using System; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Serialization; +using MonoGame.Extended.TextureAtlases; +using Newtonsoft.Json; + +namespace MonoGame.Extended.Gui.Serialization +{ + public class GuiTextureAtlasJsonConverter : ContentManagerJsonConverter + { + private readonly IGuiTextureRegionService _textureRegionService; + + public GuiTextureAtlasJsonConverter(ContentManager contentManager, IGuiTextureRegionService textureRegionService) + : base(contentManager, atlas => atlas.Name) + { + _textureRegionService = textureRegionService; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var textureAtlas = base.ReadJson(reader, objectType, existingValue, serializer) as TextureAtlas; + + if (textureAtlas != null) + _textureRegionService.TextureAtlases.Add(textureAtlas); + + return textureAtlas; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/Serialization/GuiTextureRegionService.cs b/Source/MonoGame.Extended.Gui/Serialization/GuiTextureRegionService.cs new file mode 100644 index 000000000..86262186e --- /dev/null +++ b/Source/MonoGame.Extended.Gui/Serialization/GuiTextureRegionService.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.Linq; +using MonoGame.Extended.Serialization; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.Gui.Serialization +{ + public interface IGuiTextureRegionService : ITextureRegionService + { + IList TextureAtlases { get; } + IList NinePatches { get; } + } + + public class GuiTextureRegionService : IGuiTextureRegionService + { + public GuiTextureRegionService() + { + TextureAtlases = new List(); + NinePatches = new List(); + } + + public IList TextureAtlases { get; } + public IList NinePatches { get; } + + public TextureRegion2D GetTextureRegion(string name) + { + var ninePatch = NinePatches.FirstOrDefault(p => p.Name == name); + + if (ninePatch != null) + return ninePatch; + + return TextureAtlases + .Select(textureAtlas => textureAtlas.GetRegion(name)) + .FirstOrDefault(region => region != null); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Gui/packages.config b/Source/MonoGame.Extended.Gui/packages.config new file mode 100644 index 000000000..43f6cc686 --- /dev/null +++ b/Source/MonoGame.Extended.Gui/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input.nuspec b/Source/MonoGame.Extended.Input.nuspec new file mode 100644 index 000000000..5c4824832 --- /dev/null +++ b/Source/MonoGame.Extended.Input.nuspec @@ -0,0 +1,33 @@ + + + + + MonoGame.Extended.Input + $version$ + + An event based input system to MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Input + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended input event based listener + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Input/ExtendedPlayerIndex.cs b/Source/MonoGame.Extended.Input/ExtendedPlayerIndex.cs new file mode 100644 index 000000000..a153f02de --- /dev/null +++ b/Source/MonoGame.Extended.Input/ExtendedPlayerIndex.cs @@ -0,0 +1,32 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Input +{ + /// Player index enumeration with slots for 8 players + public enum ExtendedPlayerIndex + { + /// First player + One = PlayerIndex.One, + + /// Second player + Two = PlayerIndex.Two, + + /// Third player + Three = PlayerIndex.Three, + + /// Fourth player + Four = PlayerIndex.Four, + + /// Fifth player + Five, + + /// Sixth player + Six, + + /// Seventh player + Seven, + + /// Eigth player + Eight + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/GamePadEventArgs.cs b/Source/MonoGame.Extended.Input/InputListeners/GamePadEventArgs.cs similarity index 66% rename from Source/MonoGame.Extended/InputListeners/GamePadEventArgs.cs rename to Source/MonoGame.Extended.Input/InputListeners/GamePadEventArgs.cs index ced422eea..9b113c6d7 100644 --- a/Source/MonoGame.Extended/InputListeners/GamePadEventArgs.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/GamePadEventArgs.cs @@ -2,15 +2,15 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { /// - /// This class contains all information resulting from events fired by - /// . + /// This class contains all information resulting from events fired by + /// . /// public class GamePadEventArgs : EventArgs { - internal GamePadEventArgs(GamePadState previousState, GamePadState currentState, + public GamePadEventArgs(GamePadState previousState, GamePadState currentState, TimeSpan elapsedTime, PlayerIndex playerIndex, Buttons? button = null, float triggerState = 0, Vector2? thumbStickState = null) { @@ -25,38 +25,38 @@ public class GamePadEventArgs : EventArgs } /// - /// The index of the controller. + /// The index of the controller. /// public PlayerIndex PlayerIndex { get; private set; } /// - /// The state of the controller in the previous update. + /// The state of the controller in the previous update. /// public GamePadState PreviousState { get; private set; } /// - /// The state of the controller in this update. + /// The state of the controller in this update. /// public GamePadState CurrentState { get; private set; } /// - /// The button that triggered this event, if appliable. + /// The button that triggered this event, if appliable. /// public Buttons Button { get; private set; } /// - /// The time elapsed since last event. + /// The time elapsed since last event. /// public TimeSpan ElapsedTime { get; private set; } /// - /// If a TriggerMoved event, displays the responsible trigger's position. + /// If a TriggerMoved event, displays the responsible trigger's position. /// public float TriggerState { get; private set; } /// - /// If a ThumbStickMoved event, displays the responsible stick's position. + /// If a ThumbStickMoved event, displays the responsible stick's position. /// public Vector2 ThumbStickState { get; private set; } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/GamePadListener.cs b/Source/MonoGame.Extended.Input/InputListeners/GamePadListener.cs similarity index 59% rename from Source/MonoGame.Extended/InputListeners/GamePadListener.cs rename to Source/MonoGame.Extended.Input/InputListeners/GamePadListener.cs index 152095a17..b7ea79b39 100644 --- a/Source/MonoGame.Extended/InputListeners/GamePadListener.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/GamePadListener.cs @@ -3,16 +3,61 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { /// - /// This is a listener that exposes several events for easier handling of gamepads. - /// In order to initialise it, call the method - /// with a object. + /// This is a listener that exposes several events for easier handling of gamepads. /// public class GamePadListener : InputListener { - internal GamePadListener(GamePadListenerSettings settings) + private static readonly bool[] _gamePadConnections = new bool[4]; + + // These buttons are not to be evaluated normally, but with the debounce filter + // in their respective methods. + private readonly Buttons[] _excludedButtons = + { + Buttons.LeftTrigger, Buttons.RightTrigger, + Buttons.LeftThumbstickDown, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickRight, + Buttons.LeftThumbstickLeft, + Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, + Buttons.RightThumbstickDown + }; + + private GamePadState _currentState; + //private int _lastPacketNumber; + // Implementation doesn't work, see explanation in CheckAllButtons(). + private GameTime _gameTime; + private Buttons _lastButton; + private Buttons _lastLeftStickDirection; + private Buttons _lastRightStickDirection; + private GamePadState _lastThumbStickState; + + private GamePadState _lastTriggerState; + + private float _leftCurVibrationStrength; + private bool _leftStickDown; + private bool _leftTriggerDown; + private bool _leftVibrating; + private GameTime _previousGameTime; + private GamePadState _previousState; + private int _repeatedButtonTimer; + private float _rightCurVibrationStrength; + private bool _rightStickDown; + private bool _rightTriggerDown; + private bool _rightVibrating; + private TimeSpan _vibrationDurationLeft; + private TimeSpan _vibrationDurationRight; + private TimeSpan _vibrationStart; + + private float _vibrationStrengthLeft; + private float _vibrationStrengthRight; + + public GamePadListener() + : this(new GamePadListenerSettings()) + { + } + + public GamePadListener(GamePadListenerSettings settings) { PlayerIndex = settings.PlayerIndex; VibrationEnabled = settings.VibrationEnabled; @@ -24,86 +69,51 @@ internal GamePadListener(GamePadListenerSettings settings) TriggerDownTreshold = settings.TriggerDownTreshold; RepeatInitialDelay = settings.RepeatInitialDelay; RepeatDelay = settings.RepeatDelay; - + _previousGameTime = new GameTime(); _previousState = GamePadState.Default; } /// - /// This event fires whenever a controller connects or disconnects. In order - /// for it to work, the property must - /// be set to true. - /// - public static event EventHandler ControllerConnectionChanged; - - /// - /// This event fires whenever a button changes from the Up - /// to the Down state. - /// - public event EventHandler ButtonDown; - - /// - /// This event fires whenever a button changes from the Down - /// to the Up state. - /// - public event EventHandler ButtonUp; - - /// - /// This event fires repeatedly whenever a button is held sufficiently - /// long. Use this for things like menu navigation. - /// - public event EventHandler ButtonRepeated; - - /// - /// This event fires whenever a thumbstick changes position. - /// The parameter governing the sensitivity of this functionality - /// is . - /// - public event EventHandler ThumbStickMoved; - - /// - /// This event fires whenever a trigger changes position. - /// The parameter governing the sensitivity of this functionality - /// is . - /// - public event EventHandler TriggerMoved; - - /// - /// If set to true, the static event - /// will fire when any controller changes in connectivity status. - /// This functionality requires that you have one actively updating - /// . + /// If set to true, the static event + /// will fire when any controller changes in connectivity status. + /// + /// This functionality requires that you have one actively updating + /// . + /// /// public static bool CheckControllerConnections { get; set; } /// - /// The index of the controller. + /// The index of the controller. /// public PlayerIndex PlayerIndex { get; } /// - /// When a button is held down, the interval in which - /// ButtonRepeated fires. Value in milliseconds. + /// When a button is held down, the interval in which + /// ButtonRepeated fires. Value in milliseconds. /// public int RepeatDelay { get; } /// - /// The amount of time a button has to be held down - /// in order to fire ButtonRepeated the first time. - /// Value in milliseconds. + /// The amount of time a button has to be held down + /// in order to fire ButtonRepeated the first time. + /// Value in milliseconds. /// public int RepeatInitialDelay { get; } /// - /// Whether vibration is enabled for this controller. + /// Whether vibration is enabled for this controller. /// public bool VibrationEnabled { get; set; } /// - /// General setting for the strength of the left motor. - /// This motor has a slow, deep, powerful rumble. - /// This setting will modify all future vibrations - /// through this listener. + /// General setting for the strength of the left motor. + /// This motor has a slow, deep, powerful rumble. + /// + /// This setting will modify all future vibrations + /// through this listener. + /// /// public float VibrationStrengthLeft { @@ -113,10 +123,12 @@ public float VibrationStrengthLeft } /// - /// General setting for the strength of the right motor. - /// This motor has a snappy, quick, high-pitched rumble. - /// This setting will modify all future vibrations - /// through this listener. + /// General setting for the strength of the right motor. + /// This motor has a snappy, quick, high-pitched rumble. + /// + /// This setting will modify all future vibrations + /// through this listener. + /// /// public float VibrationStrengthRight { @@ -126,93 +138,109 @@ public float VibrationStrengthRight } /// - /// The treshold of movement that has to be met in order - /// for the listener to fire an event with the trigger's - /// updated position. - /// In essence this defines the event's - /// resolution. - /// At a value of 0 this will fire every time - /// the trigger's position is not 0f. + /// The treshold of movement that has to be met in order + /// for the listener to fire an event with the trigger's + /// updated position. + /// + /// In essence this defines the event's + /// resolution. + /// + /// At a value of 0 this will fire every time + /// the trigger's position is not 0f. /// public float TriggerDeltaTreshold { get; } /// - /// The treshold of movement that has to be met in order - /// for the listener to fire an event with the thumbstick's - /// updated position. - /// In essence this defines the event's - /// resolution. - /// At a value of 0 this will fire every time - /// the thumbstick's position is not {x:0, y:0}. + /// The treshold of movement that has to be met in order + /// for the listener to fire an event with the thumbstick's + /// updated position. + /// + /// In essence this defines the event's + /// resolution. + /// + /// At a value of 0 this will fire every time + /// the thumbstick's position is not {x:0, y:0}. /// public float ThumbStickDeltaTreshold { get; } /// - /// How deep the triggers have to be depressed in order to - /// register as a ButtonDown event. + /// How deep the triggers have to be depressed in order to + /// register as a ButtonDown event. /// public float TriggerDownTreshold { get; } /// - /// How deep the triggers have to be depressed in order to - /// register as a ButtonDown event. + /// How deep the triggers have to be depressed in order to + /// register as a ButtonDown event. /// public float ThumbstickDownTreshold { get; } - private static readonly bool[] _gamePadConnections = new bool[4]; + /// + /// This event fires whenever a controller connects or disconnects. + /// + /// In order + /// for it to work, the property must + /// be set to true. + /// + /// + public static event EventHandler ControllerConnectionChanged; - private float _vibrationStrengthLeft; - private float _vibrationStrengthRight; + /// + /// This event fires whenever a button changes from the Up + /// to the Down state. + /// + public event EventHandler ButtonDown; - private GamePadState _currentState; - private GamePadState _previousState; - //private int _lastPacketNumber; - // Implementation doesn't work, see explanation in CheckAllButtons(). - private GameTime _gameTime; - private GameTime _previousGameTime; - private Buttons _lastButton; - private int _repeatedButtonTimer; + /// + /// This event fires whenever a button changes from the Down + /// to the Up state. + /// + public event EventHandler ButtonUp; - private GamePadState _lastTriggerState; - private GamePadState _lastThumbStickState; - private bool _leftTriggerDown; - private bool _rightTriggerDown; - private bool _leftStickDown; - private bool _rightStickDown; - private Buttons _lastRightStickDirection; - private Buttons _lastLeftStickDirection; + /// + /// This event fires repeatedly whenever a button is held sufficiently + /// long. Use this for things like menu navigation. + /// + public event EventHandler ButtonRepeated; - private float _leftCurVibrationStrength; - private float _rightCurVibrationStrength; - private TimeSpan _vibrationStart; - private TimeSpan _vibrationDurationLeft; - private TimeSpan _vibrationDurationRight; - private bool _leftVibrating; - private bool _rightVibrating; + /// + /// This event fires whenever a thumbstick changes position. + /// + /// The parameter governing the sensitivity of this functionality + /// is . + /// + /// + public event EventHandler ThumbStickMoved; - // These buttons are not to be evaluated normally, but with the debounce filter - // in their respective methods. - private readonly Buttons[] _excludedButtons = - { - Buttons.LeftTrigger, Buttons.RightTrigger, - Buttons.LeftThumbstickDown, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickLeft, - Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown - }; + /// + /// This event fires whenever a trigger changes position. + /// + /// The parameter governing the sensitivity of this functionality + /// is . + /// + /// + public event EventHandler TriggerMoved; /// - /// Send a vibration command to the controller. - /// Returns true if the operation succeeded. - /// Motor values that are unset preserve - /// their current vibration strength and duration. - /// Note: Vibration currently only works on select platforms, - /// like Monogame.Windows. + /// Send a vibration command to the controller. + /// Returns true if the operation succeeded. + /// + /// Motor values that are unset preserve + /// their current vibration strength and duration. + /// + /// Note: Vibration currently only works on select platforms, + /// like Monogame.Windows. /// /// Duration of the vibration in milliseconds. - /// The strength of the left motor. - /// This motor has a slow, deep, powerful rumble. - /// The strength of the right motor. - /// This motor has a snappy, quick, high-pitched rumble. + /// + /// The strength of the left motor. + /// This motor has a slow, deep, powerful rumble. + /// + /// + /// The strength of the right motor. + /// This motor has a snappy, quick, high-pitched rumble. + /// /// Returns true if the operation succeeded. public bool Vibrate(int durationMs, float leftStrength = float.NegativeInfinity, float rightStrength = float.NegativeInfinity) @@ -228,8 +256,8 @@ public float VibrationStrengthRight if (float.IsNegativeInfinity(rightStrength)) rstrength = _rightCurVibrationStrength; - var success = GamePad.SetVibration(PlayerIndex, lstrength * VibrationStrengthLeft, - rstrength * VibrationStrengthRight); + var success = GamePad.SetVibration(PlayerIndex, lstrength*VibrationStrengthLeft, + rstrength*VibrationStrengthRight); if (success) { _leftVibrating = true; @@ -237,17 +265,23 @@ public float VibrationStrengthRight if (leftStrength > 0) _vibrationDurationLeft = new TimeSpan(0, 0, 0, 0, durationMs); - else if (lstrength > 0) - _vibrationDurationLeft -= _gameTime.TotalGameTime - _vibrationStart; else - _leftVibrating = false; + { + if (lstrength > 0) + _vibrationDurationLeft -= _gameTime.TotalGameTime - _vibrationStart; + else + _leftVibrating = false; + } if (rightStrength > 0) _vibrationDurationRight = new TimeSpan(0, 0, 0, 0, durationMs); - else if (rstrength > 0) - _vibrationDurationRight -= _gameTime.TotalGameTime - _vibrationStart; else - _rightVibrating = false; + { + if (rstrength > 0) + _vibrationDurationRight -= _gameTime.TotalGameTime - _vibrationStart; + else + _rightVibrating = false; + } _vibrationStart = _gameTime.TotalGameTime; @@ -263,7 +297,7 @@ private void CheckAllButtons() // ...At least, that's the theory. It doesn't seem to be implemented. Disabled for now. //if (_lastPacketNumber == _currentState.PacketNumber) // return; - foreach (Buttons button in Enum.GetValues(typeof (Buttons))) + foreach (Buttons button in Enum.GetValues(typeof(Buttons))) { if (_excludedButtons.Contains(button)) break; @@ -296,15 +330,17 @@ private void CheckTriggers(Func getButtonState, Buttons but _rightTriggerDown = true; else _leftTriggerDown = true; - } - else if (prevdown && curstate < debounce) + else { - RaiseButtonUp(button); - if (button == Buttons.RightTrigger) - _rightTriggerDown = false; - else - _leftTriggerDown = false; + if (prevdown && (curstate < debounce)) + { + RaiseButtonUp(button); + if (button == Buttons.RightTrigger) + _rightTriggerDown = false; + else + _leftTriggerDown = false; + } } var prevstate = getButtonState(_lastTriggerState); @@ -312,14 +348,17 @@ private void CheckTriggers(Func getButtonState, Buttons but { if (Math.Abs(prevstate - curstate) >= TriggerDeltaTreshold) { - TriggerMoved.Raise(this, MakeArgs(button, triggerstate: curstate)); + TriggerMoved?.Invoke(this, MakeArgs(button, curstate)); _lastTriggerState = _currentState; } } - else if (prevstate > TriggerDeltaTreshold) + else { - TriggerMoved.Raise(this, MakeArgs(button, triggerstate: curstate)); - _lastTriggerState = _currentState; + if (prevstate > TriggerDeltaTreshold) + { + TriggerMoved?.Invoke(this, MakeArgs(button, curstate)); + _lastTriggerState = _currentState; + } } } @@ -361,22 +400,28 @@ private void CheckThumbSticks(Func getButtonState, Button else _leftStickDown = true; } - else if (prevdown && curVector.Length() < debounce) - { - RaiseButtonUp(prevdir); - if (button == Buttons.RightStick) - _rightStickDown = false; - else - _leftStickDown = false; - } - else if (prevdown && curdown && curdir != prevdir) + else { - RaiseButtonUp(prevdir); - if (right) - _lastRightStickDirection = curdir; + if (prevdown && (curVector.Length() < debounce)) + { + RaiseButtonUp(prevdir); + if (button == Buttons.RightStick) + _rightStickDown = false; + else + _leftStickDown = false; + } else - _lastLeftStickDirection = curdir; - RaiseButtonDown(curdir); + { + if (prevdown && curdown && (curdir != prevdir)) + { + RaiseButtonUp(prevdir); + if (right) + _lastRightStickDirection = curdir; + else + _lastLeftStickDirection = curdir; + RaiseButtonDown(curdir); + } + } } var prevVector = getButtonState(_lastThumbStickState); @@ -384,16 +429,20 @@ private void CheckThumbSticks(Func getButtonState, Button { if (Vector2.Distance(curVector, prevVector) >= ThumbStickDeltaTreshold) { - ThumbStickMoved.Raise(this, MakeArgs(button, thumbStickState: curVector)); + ThumbStickMoved?.Invoke(this, MakeArgs(button, thumbStickState: curVector)); _lastThumbStickState = _currentState; } - } else if (prevVector.Length() > ThumbStickDeltaTreshold) + } + else { - ThumbStickMoved.Raise(this, MakeArgs(button, thumbStickState: curVector)); - _lastThumbStickState = _currentState; + if (prevVector.Length() > ThumbStickDeltaTreshold) + { + ThumbStickMoved?.Invoke(this, MakeArgs(button, thumbStickState: curVector)); + _lastThumbStickState = _currentState; + } } } - + internal static void CheckConnections() { if (!CheckControllerConnections) @@ -401,10 +450,11 @@ internal static void CheckConnections() foreach (PlayerIndex index in Enum.GetValues(typeof(PlayerIndex))) { - if (GamePad.GetState(index).IsConnected ^ _gamePadConnections[(int) index]) // We need more XORs in this world + if (GamePad.GetState(index).IsConnected ^ _gamePadConnections[(int) index]) + // We need more XORs in this world { _gamePadConnections[(int) index] = !_gamePadConnections[(int) index]; - ControllerConnectionChanged.Raise(null, + ControllerConnectionChanged?.Invoke(null, new GamePadEventArgs(GamePadState.Default, GamePad.GetState(index), TimeSpan.Zero, index)); } } @@ -412,13 +462,13 @@ internal static void CheckConnections() private void CheckVibrate() { - if (_leftVibrating && _vibrationStart + _vibrationDurationLeft < _gameTime.TotalGameTime) - Vibrate(0, leftStrength: 0); - if (_rightVibrating && _vibrationStart + _vibrationDurationRight < _gameTime.TotalGameTime) + if (_leftVibrating && (_vibrationStart + _vibrationDurationLeft < _gameTime.TotalGameTime)) + Vibrate(0, 0); + if (_rightVibrating && (_vibrationStart + _vibrationDurationRight < _gameTime.TotalGameTime)) Vibrate(0, rightStrength: 0); } - internal override void Update(GameTime gameTime) + public override void Update(GameTime gameTime) { _gameTime = gameTime; _currentState = GamePad.GetState(PlayerIndex); @@ -431,7 +481,8 @@ internal override void Update(GameTime gameTime) _previousGameTime = gameTime; _previousState = _currentState; } - private GamePadEventArgs MakeArgs(Buttons? button, + + private GamePadEventArgs MakeArgs(Buttons? button, float triggerstate = 0, Vector2? thumbStickState = null) { var elapsedTime = _gameTime.TotalGameTime - _previousGameTime.TotalGameTime; @@ -441,15 +492,15 @@ internal override void Update(GameTime gameTime) private void RaiseButtonDown(Buttons button) { - ButtonDown.Raise(this, MakeArgs(button)); - ButtonRepeated.Raise(this, MakeArgs(button)); + ButtonDown?.Invoke(this, MakeArgs(button)); + ButtonRepeated?.Invoke(this, MakeArgs(button)); _lastButton = button; _repeatedButtonTimer = 0; } private void RaiseButtonUp(Buttons button) { - ButtonUp.Raise(this, MakeArgs(button)); + ButtonUp?.Invoke(this, MakeArgs(button)); _lastButton = 0; } @@ -457,19 +508,22 @@ private void CheckRepeatButton() { _repeatedButtonTimer += _gameTime.ElapsedGameTime.Milliseconds; - if(_repeatedButtonTimer < RepeatInitialDelay || _lastButton == 0) + if ((_repeatedButtonTimer < RepeatInitialDelay) || (_lastButton == 0)) return; if (_repeatedButtonTimer < RepeatInitialDelay + RepeatDelay) { - ButtonRepeated.Raise(this, MakeArgs(_lastButton)); + ButtonRepeated?.Invoke(this, MakeArgs(_lastButton)); _repeatedButtonTimer = RepeatDelay + RepeatInitialDelay; } - else if (_repeatedButtonTimer > RepeatInitialDelay + RepeatDelay*2) + else { - ButtonRepeated.Raise(this, MakeArgs(_lastButton)); - _repeatedButtonTimer = RepeatDelay + RepeatInitialDelay; + if (_repeatedButtonTimer > RepeatInitialDelay + RepeatDelay*2) + { + ButtonRepeated?.Invoke(this, MakeArgs(_lastButton)); + _repeatedButtonTimer = RepeatDelay + RepeatInitialDelay; + } } } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/GamePadListenerSettings.cs b/Source/MonoGame.Extended.Input/InputListeners/GamePadListenerSettings.cs new file mode 100644 index 000000000..8c36e4c5d --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/GamePadListenerSettings.cs @@ -0,0 +1,134 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Input.InputListeners +{ + /// + /// This is a class that contains settings to be used to initialise a . + /// + /// + public class GamePadListenerSettings : InputListenerSettings + { + public GamePadListenerSettings() + : this(PlayerIndex.One) + { + } + + /// + /// This is a class that contains settings to be used to initialise a . + /// Note: There are a number of extra settings that are settable properties. + /// + /// The index of the controller the listener will be tied to. + /// Whether vibration is enabled on the controller. + /// + /// General setting for the strength of the left motor. + /// This motor has a slow, deep, powerful rumble. + /// This setting will modify all future vibrations + /// through this listener. + /// + /// + /// General setting for the strength of the right motor. + /// This motor has a snappy, quick, high-pitched rumble. + /// This setting will modify all future vibrations + /// through this listener. + /// + public GamePadListenerSettings(PlayerIndex playerIndex, bool vibrationEnabled = true, + float vibrationStrengthLeft = 1.0f, float vibrationStrengthRight = 1.0f) + { + PlayerIndex = playerIndex; + VibrationEnabled = vibrationEnabled; + VibrationStrengthLeft = vibrationStrengthLeft; + VibrationStrengthRight = vibrationStrengthRight; + TriggerDownTreshold = 0.15f; + ThumbstickDownTreshold = 0.5f; + RepeatInitialDelay = 500; + RepeatDelay = 50; + } + + /// + /// The index of the controller. + /// + public PlayerIndex PlayerIndex { get; set; } + + /// + /// When a button is held down, the interval in which + /// ButtonRepeated fires. Value in milliseconds. + /// + public int RepeatDelay { get; set; } + + /// + /// The amount of time a button has to be held down + /// in order to fire ButtonRepeated the first time. + /// Value in milliseconds. + /// + public int RepeatInitialDelay { get; set; } + + + /// + /// Whether vibration is enabled for this controller. + /// + public bool VibrationEnabled { get; set; } + + /// + /// General setting for the strength of the left motor. + /// This motor has a slow, deep, powerful rumble. + /// + /// This setting will modify all future vibrations + /// through this listener. + /// + /// + public float VibrationStrengthLeft { get; set; } + + /// + /// General setting for the strength of the right motor. + /// This motor has a snappy, quick, high-pitched rumble. + /// + /// This setting will modify all future vibrations + /// through this listener. + /// + /// + public float VibrationStrengthRight { get; set; } + + /// + /// The treshold of movement that has to be met in order + /// for the listener to fire an event with the trigger's + /// updated position. + /// + /// In essence this defines the event's + /// resolution. + /// + /// At a value of 0 this will fire every time + /// the trigger's position is not 0f. + /// + public float TriggerDeltaTreshold { get; set; } + + /// + /// The treshold of movement that has to be met in order + /// for the listener to fire an event with the thumbstick's + /// updated position. + /// + /// In essence this defines the event's + /// resolution. + /// + /// At a value of 0 this will fire every time + /// the thumbstick's position is not {x:0, y:0}. + /// + public float ThumbStickDeltaTreshold { get; set; } + + /// + /// How deep the triggers have to be depressed in order to + /// register as a ButtonDown event. + /// + public float TriggerDownTreshold { get; set; } + + /// + /// How deep the triggers have to be depressed in order to + /// register as a ButtonDown event. + /// + public float ThumbstickDownTreshold { get; private set; } + + public override GamePadListener CreateListener() + { + return new GamePadListener(this); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/IInputService.cs b/Source/MonoGame.Extended.Input/InputListeners/IInputService.cs new file mode 100644 index 000000000..86573c6cf --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/IInputService.cs @@ -0,0 +1,13 @@ +namespace MonoGame.Extended.InputListeners +{ + public interface IInputService + { + KeyboardListener GuiKeyboardListener { get; } + + MouseListener GuiMouseListener { get; } + + GamePadListener GuiGamePadListener { get; } + + TouchListener GuiTouchListener { get; } + } +} diff --git a/Source/MonoGame.Extended.Input/InputListeners/InputListener.cs b/Source/MonoGame.Extended.Input/InputListeners/InputListener.cs new file mode 100644 index 000000000..82c78bb48 --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/InputListener.cs @@ -0,0 +1,15 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Input.InputListeners +{ + public abstract class InputListener + { + protected InputListener() + { + } + + //public ViewportAdapter ViewportAdapter { get; set; } + + public abstract void Update(GameTime gameTime); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/InputListenerComponent.cs b/Source/MonoGame.Extended.Input/InputListeners/InputListenerComponent.cs new file mode 100644 index 000000000..302f6b5d9 --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/InputListenerComponent.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Input.InputListeners +{ + public class InputListenerComponent : GameComponent, IUpdate + { + private readonly List _listeners; + + public InputListenerComponent(Game game) + : base(game) + { + _listeners = new List(); + } + + public InputListenerComponent(Game game, params InputListener[] listeners) + : base(game) + { + _listeners = new List(listeners); + } + + public IList Listeners => _listeners; + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + if (Game.IsActive) + { + foreach (var listener in _listeners) + listener.Update(gameTime); + } + + GamePadListener.CheckConnections(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/InputListenerSettings.cs b/Source/MonoGame.Extended.Input/InputListeners/InputListenerSettings.cs similarity index 50% rename from Source/MonoGame.Extended/InputListeners/InputListenerSettings.cs rename to Source/MonoGame.Extended.Input/InputListeners/InputListenerSettings.cs index f73aab68d..468a30b88 100644 --- a/Source/MonoGame.Extended/InputListeners/InputListenerSettings.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/InputListenerSettings.cs @@ -1,8 +1,8 @@ -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { public abstract class InputListenerSettings where T : InputListener { - internal abstract T CreateListener(); + public abstract T CreateListener(); } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/KeyboardEventArgs.cs b/Source/MonoGame.Extended.Input/InputListeners/KeyboardEventArgs.cs new file mode 100644 index 000000000..d6d01ab2f --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/KeyboardEventArgs.cs @@ -0,0 +1,119 @@ +using System; +using Microsoft.Xna.Framework.Input; + +namespace MonoGame.Extended.Input.InputListeners +{ + public class KeyboardEventArgs : EventArgs + { + public KeyboardEventArgs(Keys key, KeyboardState keyboardState) + { + Key = key; + + Modifiers = KeyboardModifiers.None; + + if (keyboardState.IsKeyDown(Keys.LeftControl) || keyboardState.IsKeyDown(Keys.RightControl)) + Modifiers |= KeyboardModifiers.Control; + + if (keyboardState.IsKeyDown(Keys.LeftShift) || keyboardState.IsKeyDown(Keys.RightShift)) + Modifiers |= KeyboardModifiers.Shift; + + if (keyboardState.IsKeyDown(Keys.LeftAlt) || keyboardState.IsKeyDown(Keys.RightAlt)) + Modifiers |= KeyboardModifiers.Alt; + } + + public Keys Key { get; } + public KeyboardModifiers Modifiers { get; } + + public char? Character => ToChar(Key, Modifiers); + + private static char? ToChar(Keys key, KeyboardModifiers modifiers = KeyboardModifiers.None) + { + var isShiftDown = (modifiers & KeyboardModifiers.Shift) == KeyboardModifiers.Shift; + + if (key == Keys.A) return isShiftDown ? 'A' : 'a'; + if (key == Keys.B) return isShiftDown ? 'B' : 'b'; + if (key == Keys.C) return isShiftDown ? 'C' : 'c'; + if (key == Keys.D) return isShiftDown ? 'D' : 'd'; + if (key == Keys.E) return isShiftDown ? 'E' : 'e'; + if (key == Keys.F) return isShiftDown ? 'F' : 'f'; + if (key == Keys.G) return isShiftDown ? 'G' : 'g'; + if (key == Keys.H) return isShiftDown ? 'H' : 'h'; + if (key == Keys.I) return isShiftDown ? 'I' : 'i'; + if (key == Keys.J) return isShiftDown ? 'J' : 'j'; + if (key == Keys.K) return isShiftDown ? 'K' : 'k'; + if (key == Keys.L) return isShiftDown ? 'L' : 'l'; + if (key == Keys.M) return isShiftDown ? 'M' : 'm'; + if (key == Keys.N) return isShiftDown ? 'N' : 'n'; + if (key == Keys.O) return isShiftDown ? 'O' : 'o'; + if (key == Keys.P) return isShiftDown ? 'P' : 'p'; + if (key == Keys.Q) return isShiftDown ? 'Q' : 'q'; + if (key == Keys.R) return isShiftDown ? 'R' : 'r'; + if (key == Keys.S) return isShiftDown ? 'S' : 's'; + if (key == Keys.T) return isShiftDown ? 'T' : 't'; + if (key == Keys.U) return isShiftDown ? 'U' : 'u'; + if (key == Keys.V) return isShiftDown ? 'V' : 'v'; + if (key == Keys.W) return isShiftDown ? 'W' : 'w'; + if (key == Keys.X) return isShiftDown ? 'X' : 'x'; + if (key == Keys.Y) return isShiftDown ? 'Y' : 'y'; + if (key == Keys.Z) return isShiftDown ? 'Z' : 'z'; + + if (((key == Keys.D0) && !isShiftDown) || (key == Keys.NumPad0)) return '0'; + if (((key == Keys.D1) && !isShiftDown) || (key == Keys.NumPad1)) return '1'; + if (((key == Keys.D2) && !isShiftDown) || (key == Keys.NumPad2)) return '2'; + if (((key == Keys.D3) && !isShiftDown) || (key == Keys.NumPad3)) return '3'; + if (((key == Keys.D4) && !isShiftDown) || (key == Keys.NumPad4)) return '4'; + if (((key == Keys.D5) && !isShiftDown) || (key == Keys.NumPad5)) return '5'; + if (((key == Keys.D6) && !isShiftDown) || (key == Keys.NumPad6)) return '6'; + if (((key == Keys.D7) && !isShiftDown) || (key == Keys.NumPad7)) return '7'; + if (((key == Keys.D8) && !isShiftDown) || (key == Keys.NumPad8)) return '8'; + if (((key == Keys.D9) && !isShiftDown) || (key == Keys.NumPad9)) return '9'; + + if ((key == Keys.D0) && isShiftDown) return ')'; + if ((key == Keys.D1) && isShiftDown) return '!'; + if ((key == Keys.D2) && isShiftDown) return '@'; + if ((key == Keys.D3) && isShiftDown) return '#'; + if ((key == Keys.D4) && isShiftDown) return '$'; + if ((key == Keys.D5) && isShiftDown) return '%'; + if ((key == Keys.D6) && isShiftDown) return '^'; + if ((key == Keys.D7) && isShiftDown) return '&'; + if ((key == Keys.D8) && isShiftDown) return '*'; + if ((key == Keys.D9) && isShiftDown) return '('; + + if (key == Keys.Space) return ' '; + if (key == Keys.Tab) return '\t'; + if (key == Keys.Enter) return (char) 13; + if (key == Keys.Back) return (char) 8; + + if (key == Keys.Add) return '+'; + if (key == Keys.Decimal) return '.'; + if (key == Keys.Divide) return '/'; + if (key == Keys.Multiply) return '*'; + if (key == Keys.OemBackslash) return '\\'; + if ((key == Keys.OemComma) && !isShiftDown) return ','; + if ((key == Keys.OemComma) && isShiftDown) return '<'; + if ((key == Keys.OemOpenBrackets) && !isShiftDown) return '['; + if ((key == Keys.OemOpenBrackets) && isShiftDown) return '{'; + if ((key == Keys.OemCloseBrackets) && !isShiftDown) return ']'; + if ((key == Keys.OemCloseBrackets) && isShiftDown) return '}'; + if ((key == Keys.OemPeriod) && !isShiftDown) return '.'; + if ((key == Keys.OemPeriod) && isShiftDown) return '>'; + if ((key == Keys.OemPipe) && !isShiftDown) return '\\'; + if ((key == Keys.OemPipe) && isShiftDown) return '|'; + if ((key == Keys.OemPlus) && !isShiftDown) return '='; + if ((key == Keys.OemPlus) && isShiftDown) return '+'; + if ((key == Keys.OemMinus) && !isShiftDown) return '-'; + if ((key == Keys.OemMinus) && isShiftDown) return '_'; + if ((key == Keys.OemQuestion) && !isShiftDown) return '/'; + if ((key == Keys.OemQuestion) && isShiftDown) return '?'; + if ((key == Keys.OemQuotes) && !isShiftDown) return '\''; + if ((key == Keys.OemQuotes) && isShiftDown) return '"'; + if ((key == Keys.OemSemicolon) && !isShiftDown) return ';'; + if ((key == Keys.OemSemicolon) && isShiftDown) return ':'; + if ((key == Keys.OemTilde) && !isShiftDown) return '`'; + if ((key == Keys.OemTilde) && isShiftDown) return '~'; + if (key == Keys.Subtract) return '-'; + + return null; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/KeyboardListener.cs b/Source/MonoGame.Extended.Input/InputListeners/KeyboardListener.cs similarity index 76% rename from Source/MonoGame.Extended/InputListeners/KeyboardListener.cs rename to Source/MonoGame.Extended.Input/InputListeners/KeyboardListener.cs index 7e3d768aa..4d9f5c1fc 100644 --- a/Source/MonoGame.Extended/InputListeners/KeyboardListener.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/KeyboardListener.cs @@ -3,37 +3,38 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { public class KeyboardListener : InputListener { - internal KeyboardListener() + private bool _isInitial; + private TimeSpan _lastPressTime; + + private Keys _previousKey; + private KeyboardState _previousState; + + public KeyboardListener() : this(new KeyboardListenerSettings()) { } - internal KeyboardListener(KeyboardListenerSettings settings) + public KeyboardListener(KeyboardListenerSettings settings) { InitialDelay = settings.InitialDelayMilliseconds; RepeatDelay = settings.RepeatDelayMilliseconds; } - - private Keys _previousKey; - private TimeSpan _lastPressTime; - private bool _isInitial; - private KeyboardState _previousState; + + public int InitialDelay { get; } + public int RepeatDelay { get; } public event EventHandler KeyTyped; public event EventHandler KeyPressed; public event EventHandler KeyReleased; - public int InitialDelay { get; } - public int RepeatDelay { get; } - - internal override void Update(GameTime gameTime) + public override void Update(GameTime gameTime) { var currentState = Keyboard.GetState(); - + RaisePressedEvents(gameTime, currentState); RaiseReleasedEvents(currentState); RaiseRepeatEvents(gameTime, currentState); @@ -45,7 +46,7 @@ private void RaisePressedEvents(GameTime gameTime, KeyboardState currentState) { if (!currentState.IsKeyDown(Keys.LeftAlt) && !currentState.IsKeyDown(Keys.RightAlt)) { - var pressedKeys = Enum.GetValues(typeof (Keys)) + var pressedKeys = Enum.GetValues(typeof(Keys)) .Cast() .Where(key => currentState.IsKeyDown(key) && _previousState.IsKeyUp(key)); @@ -53,10 +54,10 @@ private void RaisePressedEvents(GameTime gameTime, KeyboardState currentState) { var args = new KeyboardEventArgs(key, currentState); - KeyPressed.Raise(this, args); + KeyPressed?.Invoke(this, args); if (args.Character.HasValue) - KeyTyped.Raise(this, args); + KeyTyped?.Invoke(this, args); _previousKey = key; _lastPressTime = gameTime.TotalGameTime; @@ -67,24 +68,27 @@ private void RaisePressedEvents(GameTime gameTime, KeyboardState currentState) private void RaiseReleasedEvents(KeyboardState currentState) { - var releasedKeys = Enum.GetValues(typeof (Keys)) + var releasedKeys = Enum.GetValues(typeof(Keys)) .Cast() .Where(key => currentState.IsKeyUp(key) && _previousState.IsKeyDown(key)); foreach (var key in releasedKeys) - KeyReleased.Raise(this, new KeyboardEventArgs(key, currentState)); + KeyReleased?.Invoke(this, new KeyboardEventArgs(key, currentState)); } private void RaiseRepeatEvents(GameTime gameTime, KeyboardState currentState) { var elapsedTime = (gameTime.TotalGameTime - _lastPressTime).TotalMilliseconds; - if (currentState.IsKeyDown(_previousKey) && ((_isInitial && elapsedTime > InitialDelay) || (!_isInitial && elapsedTime > RepeatDelay))) + if (currentState.IsKeyDown(_previousKey) && + (_isInitial && elapsedTime > InitialDelay || !_isInitial && elapsedTime > RepeatDelay)) { var args = new KeyboardEventArgs(_previousKey, currentState); + KeyPressed?.Invoke(this, args); + if (args.Character.HasValue) - KeyTyped.Raise(this, args); + KeyTyped?.Invoke(this, args); _lastPressTime = gameTime.TotalGameTime; _isInitial = false; diff --git a/Source/MonoGame.Extended/InputListeners/KeyboardListenerSettings.cs b/Source/MonoGame.Extended.Input/InputListeners/KeyboardListenerSettings.cs similarity index 79% rename from Source/MonoGame.Extended/InputListeners/KeyboardListenerSettings.cs rename to Source/MonoGame.Extended.Input/InputListeners/KeyboardListenerSettings.cs index 40e548023..6f284d6bb 100644 --- a/Source/MonoGame.Extended/InputListeners/KeyboardListenerSettings.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/KeyboardListenerSettings.cs @@ -1,4 +1,4 @@ -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { public class KeyboardListenerSettings : InputListenerSettings { @@ -11,7 +11,7 @@ public KeyboardListenerSettings() public int InitialDelayMilliseconds { get; set; } public int RepeatDelayMilliseconds { get; set; } - internal override KeyboardListener CreateListener() + public override KeyboardListener CreateListener() { return new KeyboardListener(this); } diff --git a/Source/MonoGame.Extended/InputListeners/KeyboardModifiers.cs b/Source/MonoGame.Extended.Input/InputListeners/KeyboardModifiers.cs similarity index 71% rename from Source/MonoGame.Extended/InputListeners/KeyboardModifiers.cs rename to Source/MonoGame.Extended.Input/InputListeners/KeyboardModifiers.cs index d99af078e..de59905a2 100644 --- a/Source/MonoGame.Extended/InputListeners/KeyboardModifiers.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/KeyboardModifiers.cs @@ -1,6 +1,6 @@ using System; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { [Flags] public enum KeyboardModifiers @@ -9,5 +9,5 @@ public enum KeyboardModifiers Shift = 2, Alt = 4, None = 0 - }; + } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/MouseButton.cs b/Source/MonoGame.Extended.Input/InputListeners/MouseButton.cs similarity index 61% rename from Source/MonoGame.Extended/InputListeners/MouseButton.cs rename to Source/MonoGame.Extended.Input/InputListeners/MouseButton.cs index 99b0672de..e29360819 100644 --- a/Source/MonoGame.Extended/InputListeners/MouseButton.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/MouseButton.cs @@ -1,5 +1,8 @@ -namespace MonoGame.Extended.InputListeners +using System; + +namespace MonoGame.Extended.Input.InputListeners { + [Flags] public enum MouseButton { None, @@ -8,5 +11,5 @@ public enum MouseButton Right, XButton1, XButton2 - }; + } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/MouseEventArgs.cs b/Source/MonoGame.Extended.Input/InputListeners/MouseEventArgs.cs similarity index 66% rename from Source/MonoGame.Extended/InputListeners/MouseEventArgs.cs rename to Source/MonoGame.Extended.Input/InputListeners/MouseEventArgs.cs index 54b27abec..c7cbc525a 100644 --- a/Source/MonoGame.Extended/InputListeners/MouseEventArgs.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/MouseEventArgs.cs @@ -3,26 +3,25 @@ using Microsoft.Xna.Framework.Input; using MonoGame.Extended.ViewportAdapters; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { public class MouseEventArgs : EventArgs { - internal MouseEventArgs(ViewportAdapter viewportAdapter, TimeSpan time, MouseState previousState, MouseState currentState, + public MouseEventArgs(ViewportAdapter viewportAdapter, TimeSpan time, MouseState previousState, + MouseState currentState, MouseButton button = MouseButton.None) { PreviousState = previousState; CurrentState = currentState; - Position = viewportAdapter != null - ? viewportAdapter.PointToScreen(currentState.X, currentState.Y) - : new Point(currentState.X, currentState.Y); + Position = viewportAdapter?.PointToScreen(currentState.X, currentState.Y) + ?? new Point(currentState.X, currentState.Y); Button = button; ScrollWheelValue = currentState.ScrollWheelValue; ScrollWheelDelta = currentState.ScrollWheelValue - previousState.ScrollWheelValue; Time = time; } - // not sure if we want the time to be part of the public API? - internal TimeSpan Time { get; private set; } + public TimeSpan Time { get; private set; } public MouseState PreviousState { get; } public MouseState CurrentState { get; } @@ -33,4 +32,4 @@ public class MouseEventArgs : EventArgs public Vector2 DistanceMoved => CurrentState.Position.ToVector2() - PreviousState.Position.ToVector2(); } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/MouseListener.cs b/Source/MonoGame.Extended.Input/InputListeners/MouseListener.cs similarity index 70% rename from Source/MonoGame.Extended/InputListeners/MouseListener.cs rename to Source/MonoGame.Extended.Input/InputListeners/MouseListener.cs index 4ec1d2b2b..e71a67f38 100644 --- a/Source/MonoGame.Extended/InputListeners/MouseListener.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/MouseListener.cs @@ -1,38 +1,56 @@ using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.ViewportAdapters; -namespace MonoGame.Extended.InputListeners +namespace MonoGame.Extended.Input.InputListeners { + /// + /// Handles mouse input. + /// + /// + /// Due to nature of the listener, even when game is not in focus, listener will continue to be updated. + /// To avoid that, manual pause of Update() method is required whenever game loses focus. + /// To avoid having to do it manually, register listener to + /// public class MouseListener : InputListener { - internal MouseListener() + private MouseState _currentState; + private bool _dragging; + private GameTime _gameTime; + private bool _hasDoubleClicked; + private MouseEventArgs _mouseDownArgs; + private MouseEventArgs _previousClickArgs; + private MouseState _previousState; + + public MouseListener() + : this(new MouseListenerSettings()) + { + } + + public MouseListener(ViewportAdapter viewportAdapter) : this(new MouseListenerSettings()) { + ViewportAdapter = viewportAdapter; } - internal MouseListener(MouseListenerSettings settings) + public MouseListener(MouseListenerSettings settings) { + ViewportAdapter = settings.ViewportAdapter; DoubleClickMilliseconds = settings.DoubleClickMilliseconds; DragThreshold = settings.DragThreshold; } + public ViewportAdapter ViewportAdapter { get; } + public int DoubleClickMilliseconds { get; } public int DragThreshold { get; } /// - /// Returns true if the mouse has moved between the current and previous frames. + /// Returns true if the mouse has moved between the current and previous frames. /// /// true if the mouse has moved; otherwise, false. - public bool HasMouseMoved => _previousState.X != _currentState.X || _previousState.Y != _currentState.Y; - - private MouseState _currentState; - private MouseState _previousState; - private GameTime _gameTime; - private MouseEventArgs _previousClickArgs; - private MouseEventArgs _mouseDownArgs; - private bool _hasDoubleClicked; - private bool _dragging; + public bool HasMouseMoved => (_previousState.X != _currentState.X) || (_previousState.Y != _currentState.Y); public event EventHandler MouseDown; public event EventHandler MouseUp; @@ -46,12 +64,12 @@ internal MouseListener(MouseListenerSettings settings) private void CheckButtonPressed(Func getButtonState, MouseButton button) { - if (getButtonState(_currentState) == ButtonState.Pressed && - getButtonState(_previousState) == ButtonState.Released) + if ((getButtonState(_currentState) == ButtonState.Pressed) && + (getButtonState(_previousState) == ButtonState.Released)) { var args = new MouseEventArgs(ViewportAdapter, _gameTime.TotalGameTime, _previousState, _currentState, button); - MouseDown.Raise(this, args); + MouseDown?.Invoke(this, args); _mouseDownArgs = args; if (_previousClickArgs != null) @@ -61,7 +79,7 @@ private void CheckButtonPressed(Func getButtonState, Mo if (clickMilliseconds <= DoubleClickMilliseconds) { - MouseDoubleClicked.Raise(this, args); + MouseDoubleClicked?.Invoke(this, args); _hasDoubleClicked = true; } @@ -72,8 +90,8 @@ private void CheckButtonPressed(Func getButtonState, Mo private void CheckButtonReleased(Func getButtonState, MouseButton button) { - if (getButtonState(_currentState) == ButtonState.Released && - getButtonState(_previousState) == ButtonState.Pressed) + if ((getButtonState(_currentState) == ButtonState.Released) && + (getButtonState(_previousState) == ButtonState.Pressed)) { var args = new MouseEventArgs(ViewportAdapter, _gameTime.TotalGameTime, _previousState, _currentState, button); @@ -85,16 +103,16 @@ private void CheckButtonReleased(Func getButtonState, M if (clickMovement < DragThreshold) { if (!_hasDoubleClicked) - MouseClicked.Raise(this, args); + MouseClicked?.Invoke(this, args); } else // If the mouse has moved between mouse down and mouse up { - MouseDragEnd.Raise(this, args); + MouseDragEnd?.Invoke(this, args); _dragging = false; } } - MouseUp.Raise(this, args); + MouseUp?.Invoke(this, args); _hasDoubleClicked = false; _previousClickArgs = args; @@ -103,17 +121,15 @@ private void CheckButtonReleased(Func getButtonState, M private void CheckMouseDragged(Func getButtonState, MouseButton button) { - if (getButtonState(_currentState) == ButtonState.Pressed && - getButtonState(_previousState) == ButtonState.Pressed) + if ((getButtonState(_currentState) == ButtonState.Pressed) && + (getButtonState(_previousState) == ButtonState.Pressed)) { var args = new MouseEventArgs(ViewportAdapter, _gameTime.TotalGameTime, _previousState, _currentState, button); if (_mouseDownArgs.Button == args.Button) { if (_dragging) - { - MouseDrag.Raise(this, args); - } + MouseDrag?.Invoke(this, args); else { // Only start to drag based on DragThreshold @@ -122,14 +138,14 @@ private void CheckMouseDragged(Func getButtonState, Mou if (clickMovement > DragThreshold) { _dragging = true; - MouseDragStart.Raise(this, args); + MouseDragStart?.Invoke(this, args); } } } } } - internal override void Update(GameTime gameTime) + public override void Update(GameTime gameTime) { _gameTime = gameTime; _currentState = Mouse.GetState(); @@ -149,7 +165,8 @@ internal override void Update(GameTime gameTime) // Check for any sort of mouse movement. if (HasMouseMoved) { - MouseMoved.Raise(this, new MouseEventArgs(ViewportAdapter, gameTime.TotalGameTime, _previousState, _currentState)); + MouseMoved?.Invoke(this, + new MouseEventArgs(ViewportAdapter, gameTime.TotalGameTime, _previousState, _currentState)); CheckMouseDragged(s => s.LeftButton, MouseButton.Left); CheckMouseDragged(s => s.MiddleButton, MouseButton.Middle); @@ -160,7 +177,10 @@ internal override void Update(GameTime gameTime) // Handle mouse wheel events. if (_previousState.ScrollWheelValue != _currentState.ScrollWheelValue) - MouseWheelMoved.Raise(this, new MouseEventArgs(ViewportAdapter, gameTime.TotalGameTime, _previousState, _currentState)); + { + MouseWheelMoved?.Invoke(this, + new MouseEventArgs(ViewportAdapter, gameTime.TotalGameTime, _previousState, _currentState)); + } _previousState = _currentState; } @@ -170,4 +190,4 @@ private static int DistanceBetween(Point a, Point b) return Math.Abs(a.X - b.X) + Math.Abs(a.Y - b.Y); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/MouseListenerSettings.cs b/Source/MonoGame.Extended.Input/InputListeners/MouseListenerSettings.cs similarity index 67% rename from Source/MonoGame.Extended/InputListeners/MouseListenerSettings.cs rename to Source/MonoGame.Extended.Input/InputListeners/MouseListenerSettings.cs index c5b0a339a..1c0ca3df5 100644 --- a/Source/MonoGame.Extended/InputListeners/MouseListenerSettings.cs +++ b/Source/MonoGame.Extended.Input/InputListeners/MouseListenerSettings.cs @@ -1,4 +1,6 @@ -namespace MonoGame.Extended.InputListeners +using MonoGame.Extended.ViewportAdapters; + +namespace MonoGame.Extended.Input.InputListeners { public class MouseListenerSettings : InputListenerSettings { @@ -11,8 +13,9 @@ public MouseListenerSettings() public int DragThreshold { get; set; } public int DoubleClickMilliseconds { get; set; } + public ViewportAdapter ViewportAdapter { get; set; } - internal override MouseListener CreateListener() + public override MouseListener CreateListener() { return new MouseListener(this); } diff --git a/Source/MonoGame.Extended.Input/InputListeners/TouchEventArgs.cs b/Source/MonoGame.Extended.Input/InputListeners/TouchEventArgs.cs new file mode 100644 index 000000000..8172885ba --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/TouchEventArgs.cs @@ -0,0 +1,39 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input.Touch; +using MonoGame.Extended.ViewportAdapters; + +namespace MonoGame.Extended.Input.InputListeners +{ + public class TouchEventArgs : EventArgs + { + public TouchEventArgs(ViewportAdapter viewportAdapter, TimeSpan time, TouchLocation location) + { + ViewportAdapter = viewportAdapter; + RawTouchLocation = location; + Time = time; + Position = viewportAdapter?.PointToScreen((int)location.Position.X, (int)location.Position.Y) + ?? location.Position.ToPoint(); + } + + public ViewportAdapter ViewportAdapter { get; } + public TouchLocation RawTouchLocation { get; } + public TimeSpan Time { get; } + public Point Position { get; } + + public override bool Equals(object other) + { + var args = other as TouchEventArgs; + + if (args == null) + return false; + + return ReferenceEquals(this, args) || RawTouchLocation.Id.Equals(args.RawTouchLocation.Id); + } + + public override int GetHashCode() + { + return RawTouchLocation.Id.GetHashCode(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/TouchListener.cs b/Source/MonoGame.Extended.Input/InputListeners/TouchListener.cs new file mode 100644 index 000000000..2a89cc9ba --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/TouchListener.cs @@ -0,0 +1,57 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input.Touch; +using MonoGame.Extended.ViewportAdapters; + +namespace MonoGame.Extended.Input.InputListeners +{ + public class TouchListener : InputListener + { + public TouchListener() + : this(new TouchListenerSettings()) + { + } + + public TouchListener(ViewportAdapter viewportAdapter) + : this(new TouchListenerSettings()) + { + ViewportAdapter = viewportAdapter; + } + + public TouchListener(TouchListenerSettings settings) + { + ViewportAdapter = settings.ViewportAdapter; + } + + public ViewportAdapter ViewportAdapter { get; set; } + + public event EventHandler TouchStarted; + public event EventHandler TouchEnded; + public event EventHandler TouchMoved; + public event EventHandler TouchCancelled; + + public override void Update(GameTime gameTime) + { + var touchCollection = TouchPanel.GetState(); + + foreach (var touchLocation in touchCollection) + { + switch (touchLocation.State) + { + case TouchLocationState.Pressed: + TouchStarted?.Invoke(this, new TouchEventArgs(ViewportAdapter, gameTime.TotalGameTime, touchLocation)); + break; + case TouchLocationState.Moved: + TouchMoved?.Invoke(this, new TouchEventArgs(ViewportAdapter, gameTime.TotalGameTime, touchLocation)); + break; + case TouchLocationState.Released: + TouchEnded?.Invoke(this, new TouchEventArgs(ViewportAdapter, gameTime.TotalGameTime, touchLocation)); + break; + case TouchLocationState.Invalid: + TouchCancelled?.Invoke(this, new TouchEventArgs(ViewportAdapter, gameTime.TotalGameTime, touchLocation)); + break; + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/InputListeners/TouchListenerSettings.cs b/Source/MonoGame.Extended.Input/InputListeners/TouchListenerSettings.cs new file mode 100644 index 000000000..6d42b42b6 --- /dev/null +++ b/Source/MonoGame.Extended.Input/InputListeners/TouchListenerSettings.cs @@ -0,0 +1,18 @@ +using MonoGame.Extended.ViewportAdapters; + +namespace MonoGame.Extended.Input.InputListeners +{ + public class TouchListenerSettings : InputListenerSettings + { + public TouchListenerSettings() + { + } + + public ViewportAdapter ViewportAdapter { get; set; } + + public override TouchListener CreateListener() + { + return new TouchListener(this); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/MonoGame.Extended.Input.csproj b/Source/MonoGame.Extended.Input/MonoGame.Extended.Input.csproj new file mode 100644 index 000000000..62e5db794 --- /dev/null +++ b/Source/MonoGame.Extended.Input/MonoGame.Extended.Input.csproj @@ -0,0 +1,72 @@ + + + + + 10.0 + Debug + AnyCPU + {49C87598-994C-49B5-BBB3-7FFC342635D3} + Library + MonoGame.Extended.Input + MonoGame.Extended.Input + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Input/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Input/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9e6acf1d7 --- /dev/null +++ b/Source/MonoGame.Extended.Input/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Input")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Input")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Input/packages.config b/Source/MonoGame.Extended.Input/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Input/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui.nuspec b/Source/MonoGame.Extended.NuclexGui.nuspec new file mode 100644 index 000000000..c7d03a912 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui.nuspec @@ -0,0 +1,35 @@ + + + + + MonoGame.Extended.NuclexGui + $version$ + + A port of the Nuclex GUI system (https://nuclexframework.codeplex.com/) to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.NuclexGui + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended nuclex gui + + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiButtonControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiButtonControl.cs new file mode 100644 index 000000000..49b9a7a02 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiButtonControl.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + public class GuiButtonControl : GuiPressableControl + { + /// Text that will be shown on the button + public string Text; + + public Texture2D Texture; + public Rectangle SourceRectangle; + + /// Will be triggered when the button is pressed + public event EventHandler Pressed; + + /// Called when the button is pressed + protected override void OnPressed() + { + if (Pressed != null) + Pressed(this, EventArgs.Empty); + } + + public GuiButtonControl() : base() + { + SourceRectangle = new Rectangle(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiChoiceControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiChoiceControl.cs new file mode 100644 index 000000000..f67d5005f --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiChoiceControl.cs @@ -0,0 +1,65 @@ +using System; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Control displaying an exclusive choice the user can select + /// + /// The choice control is equivalent to a radio button - if more than one + /// choice control is on a dialog, only one can be selected at a time. + /// To have several choice groups on a dialog, use panels to group them. + /// + public class GuiChoiceControl : GuiPressableControl + { + /// Whether the choice is currently selected + public bool Selected; + + /// Text that will be shown on the button + public string Text; + + /// Determines where text or image will be shown relative to control + public GuiPressableDescriptionPosition DescriptionPosition; + + /// Will be triggered when the choice is changed + public event EventHandler Changed; + + /// Called when the button is pressed + protected override void OnPressed() + { + if (!Selected) + { + Selected = true; + + // Unselect all sibling choice controls in the same container + UnselectSiblings(); + + OnChanged(); + } + } + + /// Triggers the changed event + protected virtual void OnChanged() + { + if (Changed != null) + Changed(this, EventArgs.Empty); + } + + /// Disables all sibling choices on the same level + private void UnselectSiblings() + { + // Disable any other choices in the same frame + if (Parent != null) + { + var siblings = Parent.Children; + for (var index = 0; index < siblings.Count; ++index) + { + var control = siblings[index] as GuiChoiceControl; + if ((control != null) && (control != this) && control.Selected) + { + control.Selected = false; + control.OnChanged(); + } + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiCloseWindowButtonControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiCloseWindowButtonControl.cs new file mode 100644 index 000000000..1bedbd76a --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiCloseWindowButtonControl.cs @@ -0,0 +1,7 @@ +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Control for the X button in the top right corner of a window + public class GuiCloseWindowButtonControl : GuiButtonControl + { + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiDraggableControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiDraggableControl.cs new file mode 100644 index 000000000..5eb28a7f9 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiDraggableControl.cs @@ -0,0 +1,93 @@ +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + // Always move in absolute (offset) coordinates? + // Or always move in fractional coordinates? + // + // Preferring b), because I restores the user's display to the exact + // state it was if the resolution is changed, including that fact that + // lower resolutions would cause the windows to go off-screen. + // + // However, b) would mean a call to GetAbsolutePosition() each frame. + // Which isn't so bad, but... avoidable with a) + + // Properties: + // Boundaries (for constraining a control to a region) + // Moveable (turn moveability on or off) + + /// Control the user can drag around with the mouse + public abstract class GuiDraggableControl : GuiControl + { + /// Whether the control is currently being dragged + private bool _beingDragged; + + /// Whether the control can be dragged + private bool _enableDragging; + + /// X coordinate at which the control was picked up + private float _pickupX; + + /// Y coordinate at which the control was picked up + private float _pickupY; + + /// Initializes a new draggable control + public GuiDraggableControl() + { + EnableDragging = true; + } + + /// Initializes a new draggable control + /// Whether the control can obtain the input focus + public GuiDraggableControl(bool canGetFocus) : base(canGetFocus) + { + EnableDragging = true; + } + + /// Whether the control can be dragged with the mouse + protected bool EnableDragging + { + get { return _enableDragging; } + set + { + _enableDragging = value; + _beingDragged &= value; + } + } + + /// Called when the mouse position is updated + /// X coordinate of the mouse cursor on the GUI + /// Y coordinate of the mouse cursor on the GUI + protected override void OnMouseMoved(float x, float y) + { + if (_beingDragged) + { + // Adjust the control's position within the container + Bounds.FractionalOffset(x - _pickupX, y - _pickupY); + } + else + { + // Remember the current mouse position so we know where the user picked + // up the control when a drag operation begins + _pickupX = x; + _pickupY = y; + } + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + protected override void OnMousePressed(MouseButton button) + { + if (button == MouseButton.Left) + _beingDragged = _enableDragging; + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + protected override void OnMouseReleased(MouseButton button) + { + if (button == MouseButton.Left) + _beingDragged = false; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiHorizontalSliderControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiHorizontalSliderControl.cs new file mode 100644 index 000000000..10b467355 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiHorizontalSliderControl.cs @@ -0,0 +1,40 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Horizontal slider that can be moved using the mouse + public class GuiHorizontalSliderControl : GuiSliderControl + { + /// Obtains the region covered by the slider's thumb + /// The region covered by the slider's thumb + protected override RectangleF GetThumbRegion() + { + var bounds = GetAbsoluteBounds(); + + if (ThumbLocator != null) + return ThumbLocator.GetThumbPosition(bounds, ThumbPosition, ThumbSize); + var thumbWidth = bounds.Width*ThumbSize; + var thumbX = (bounds.Width - thumbWidth)*ThumbPosition; + + return new RectangleF(thumbX, 0, thumbWidth, bounds.Height); + } + + /// Moves the thumb to the specified location + /// Location the thumb will be moved to + protected override void MoveThumb(float x, float y) + { + var bounds = GetAbsoluteBounds(); + + var thumbWidth = bounds.Width*ThumbSize; + var maxX = bounds.Width - thumbWidth; + + // Prevent divide-by-zero if the thumb fills out the whole rail + if (maxX > 0.0f) + ThumbPosition = MathHelper.Clamp(x/maxX, 0.0f, 1.0f); + else + ThumbPosition = 0.0f; + + OnMoved(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiInputControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiInputControl.cs new file mode 100644 index 000000000..ab7c05144 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiInputControl.cs @@ -0,0 +1,293 @@ +using System; +using System.Text; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Control through which the user can enter text + /// + /// + /// Through this control, users can be asked to enter an arbitrary string + /// of characters, their name for example. Desktop users can enter text through + /// their normal keyboard where Windows' own key translation is used to + /// support regional settings and custom keyboard layouts. + /// + /// + /// XBox 360 users will open the virtual keyboard when the input box gets + /// the input focus and can add characters by selecting them from the virtual + /// keyboard's character matrix. + /// + /// + public class GuiInputControl : GuiControl, IWritable + { + /// Position of the cursor within the text + private int _caretPosition; + + /// Tick count at the time the caret was last moved + private int _lastCaretMovementTicks; + + /// X coordinate of the last known mouse position + private float _mouseX; + + /// Y coordinate of the last known mouse position + private float _mouseY; + + /// Array used to store characters before they are appended + private readonly char[ /*1*/] _singleCharArray; + + /// Text the user has entered into the text input control + private readonly StringBuilder _text; + + /// Whether user interaction with the control is allowed + public bool Enabled; + + /// Description to be displayed in the on-screen keyboard + public string GuideDescription; + + /// Title to be displayed in the on-screen keyboard + public string GuideTitle; + + /// + /// Can be set by renderers to enable cursor positioning by the mouse + /// + public IOpeningLocator OpeningLocator; + + /// Initializes a new text input control + public GuiInputControl() + { + _singleCharArray = new char[1]; + _text = new StringBuilder(64); + + Enabled = true; + GuideTitle = "Text Entry"; + GuideDescription = "Please enter the text for this input field"; + } + + /// Position of the cursor within the text + public int CaretPosition + { + get { return _caretPosition; } + set + { + if ((value < 0) || (value > Text.Length)) + throw new ArgumentException("Invalid caret position", "CaretPosition"); + + _caretPosition = value; + } + } + + /// Whether the control currently has the input focus + public bool HasFocus => (Screen != null) && + ReferenceEquals(Screen.FocusedControl, this); + + /// Elapsed milliseconds since the user last moved the caret + /// + /// This is an unusual property for an input box to have. It is retrieved by + /// the renderer and could be used for several purposes, such as lighting up + /// a control when text is entered to provide better visual tracking or + /// preventing the cursor from blinking whilst the user is typing. + /// + public int MillisecondsSinceLastCaretMovement => Environment.TickCount - _lastCaretMovementTicks; + + /// Text that is being displayed on the control + public string Text + { + get { return _text.ToString(); } + set + { + _text.Remove(0, _text.Length); + _text.Append(value); + + // Cursor index is in openings between letters, including before first + // and after last letter, so text.Length is a valid position. + if (_caretPosition > _text.Length) + _caretPosition = _text.Length; + } + } + + /// Called when the user has entered a character + /// Character that has been entered + void IWritable.OnCharacterEntered(char character) + { + OnCharacterEntered(character); + } + + /// Whether the control can currently obtain the input focus + bool IFocusable.CanGetFocus => Enabled; + + /// Title to be displayed in the on-screen keyboard + string IWritable.GuideTitle => GuideTitle; + + /// Description to be displayed in the on-screen keyboard + string IWritable.GuideDescription => GuideDescription; + + /// Called when the user has entered a character + /// Character that has been entered + protected virtual void OnCharacterEntered(char character) + { + // For some reason, Windows translates Backspace to a character :) + if (character != '\b') + { + UpdateLastCaretMovementTicks(); + + // There's no single-character overload on the XBox 360... + _singleCharArray[0] = character; + _text.Insert(_caretPosition, _singleCharArray); + ++_caretPosition; + } + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + /// + /// True if the key press was handles by the control, otherwise false. + /// + /// + /// If the control indicates that it didn't handle the key press, it will not + /// receive the associated key release notification. + /// + protected override bool OnKeyPressed(Keys keyCode) + { + // We only accept keys if we have the focus. If the notification is sent in search + // for a key handler without the input box being focused, we will not respond to + // the key press in order to not sabotage shortcut keys for other controls. + if (!HasFocus) + return false; + + switch (keyCode) + { + // Backspace: erase the character left of the caret + case Keys.Back: + { + if (_caretPosition > 0) + { + UpdateLastCaretMovementTicks(); + + _text.Remove(_caretPosition - 1, 1); + --_caretPosition; + } + break; + } + + // Delete: erase the character right of the caret + case Keys.Delete: + { + if (_caretPosition < _text.Length) + { + UpdateLastCaretMovementTicks(); + + _text.Remove(_caretPosition, 1); + } + break; + } + + // Cursor left: move the caret to the left by one character + case Keys.Left: + { + if (_caretPosition > 0) + { + UpdateLastCaretMovementTicks(); + + --_caretPosition; + } + break; + } + + // Cursor right: move the caret to the right by one character + case Keys.Right: + { + if (_caretPosition < _text.Length) + { + UpdateLastCaretMovementTicks(); + + ++_caretPosition; + } + break; + } + + // Home: place the caret before the first character + case Keys.Home: + { + UpdateLastCaretMovementTicks(); + _caretPosition = 0; + break; + } + + // Home: place the caret behind the last character + case Keys.End: + { + UpdateLastCaretMovementTicks(); + _caretPosition = _text.Length; + break; + } + + // Keys that can be used to navigate the dialog + case Keys.Tab: + case Keys.Up: + case Keys.Down: + case Keys.Enter: + { + return false; + } + } + + return true; + } + + /// Called when the mouse position is updated + /// X coordinate of the mouse cursor on the control + /// Y coordinate of the mouse cursor on the control + protected override void OnMouseMoved(float x, float y) + { + _mouseX = x; + _mouseY = y; + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + protected override void OnMousePressed(MouseButton button) + { + if (button == MouseButton.Left) + { + if (OpeningLocator != null) + { + var absoluteBounds = GetAbsoluteBounds(); + var absolutePosition = new Vector2(absoluteBounds.X + _mouseX, absoluteBounds.Y + _mouseY); + _caretPosition = OpeningLocator.GetClosestOpening(absoluteBounds, Text, absolutePosition); + } + else + { + // Nope, our renderer is being secretive + MoveCaretToEnd(); + } + } + } + + /// Handles user text input by a physical keyboard + /// Character that has been entered + internal void ProcessCharacter(char character) + { + // This notifications always concerns ourselves because it is only sent + // to the focused control + OnCharacterEntered(character); + } + + /// Moves the caret to the end of the text + private void MoveCaretToEnd() + { + UpdateLastCaretMovementTicks(); + _caretPosition = _text.Length; + } + + /// Updates the tick count when the caret was last moved + /// + /// Used to prevent the caret from blinking when + /// + private void UpdateLastCaretMovementTicks() + { + _lastCaretMovementTicks = Environment.TickCount; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiListControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiListControl.cs new file mode 100644 index 000000000..52595aa3f --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiListControl.cs @@ -0,0 +1,269 @@ +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Collections; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// How the list lets the user select items + public enum ListSelectionMode + { + /// The user is not allowed to select an item + None, + + /// The user can select only one item + Single, + + /// The user can pick any number of items + Multi + } + + /// List showing a sequence of items + public class GuiListControl : GuiControl, IFocusable + { + /// Items contained in the list + private readonly ObservableCollection _items; + + /// + /// Row locator through which the list can detect which row the mouse has + /// been pressed down on + /// + private IListRowLocator _listRowLocator; + + /// Last known Y coordinate of the mouse + private float _mouseY; + + /// Items currently selected in the list + private readonly ObservableCollection _selectedItems; + + /// How the list lets the user select from its items + private ListSelectionMode _selectionMode; + + /// Slider the lists uses to scroll through its items + private readonly GuiVerticalSliderControl _slider; + + public GuiListControl() + { + _items = new ObservableCollection(); + _items.Cleared += ItemsCleared; + _items.ItemAdded += ItemAdded; + _items.ItemRemoved += ItemRemoved; + + _selectedItems = new ObservableCollection(); + _selectedItems.Cleared += SelectionCleared; + _selectedItems.ItemAdded += SelectionAdded; + _selectedItems.ItemRemoved += SelectionRemoved; + + _slider = new GuiVerticalSliderControl(); + _slider.Bounds = new UniRectangle( + new UniScalar(1.0f, -20.0f), new UniScalar(0.0f, 0.0f), + new UniScalar(0.0f, 20.0f), new UniScalar(1.0f, 0.0f) + ); + Children.Add(_slider); + } + + /// How the user can select items in the list + public ListSelectionMode SelectionMode + { + get { return _selectionMode; } + set { _selectionMode = value; } + } + + /// Slider the list uses to scroll through its items + public GuiVerticalSliderControl Slider => _slider; + + /// Items being displayed in the list + public IList Items => _items; + + /// Indices of the items current selected in the list + public IList SelectedItems => _selectedItems; + + /// + /// Can be set by renderers to enable selection of list items by mouse + /// + public IListRowLocator ListRowLocator + { + get { return _listRowLocator; } + set + { + if (value != _listRowLocator) + { + _listRowLocator = value; + UpdateSlider(); + } + } + } + + /// Whether the control can currently obtain the input focus + bool IFocusable.CanGetFocus => true; + + /// Triggered when the selected items in list have changed + public event EventHandler SelectionChanged; + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + /// + /// If this method states that a mouse press is processed by returning + /// true, that means the control did something with it and the mouse press + /// should not be acted upon by any other listener. + /// + protected override void OnMousePressed(MouseButton button) + { + if (_listRowLocator != null) + { + var row = _listRowLocator.GetRow(GetAbsoluteBounds(), _slider.ThumbPosition, _items.Count, _mouseY); + if ((row >= 0) && (row < _items.Count)) + OnRowClicked(row); + } + } + + /// Called when the user has clicked on a row in the list + /// Row the user has clicked on + /// + /// The default behavior of the list control in multi select mode is to + /// toggle items that are clicked between selected and unselected. If you + /// need different behavior (for example, dragging a selected region or + /// selecting sequences of items by holding the shift key), you can override + /// this method and handle the selection behavior yourself. + /// + protected virtual void OnRowClicked(int row) + { + switch (_selectionMode) + { + // The user isn't allowed to select items in the list + case ListSelectionMode.None: + { + break; + } + + // Only a single item can be selected at a time + case ListSelectionMode.Single: + { + if (_selectedItems.Count == 1) + { + if (_selectedItems[0] == row) + break; // do not fire the SelectionChanged event + + _selectedItems[0] = row; + } + else + { + _selectedItems.Clear(); + _selectedItems.Add(row); + } + OnSelectionChanged(); + + break; + } + + // Any number of items can be selected + case ListSelectionMode.Multi: + { + if (!_selectedItems.Remove(row)) + _selectedItems.Add(row); + OnSelectionChanged(); + break; + } + } + } + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + protected override void OnMouseWheel(float ticks) + { + const float itemsPerTick = 1.0f; + + if (_listRowLocator != null) + { + var bounds = GetAbsoluteBounds(); + + float totalitems = _items.Count; + var itemsInView = bounds.Height/_listRowLocator.GetRowHeight(bounds); + var scrollableItems = totalitems - itemsInView; + + _slider.ThumbPosition -= itemsPerTick/scrollableItems*ticks; + _slider.ThumbPosition = MathHelper.Clamp(_slider.ThumbPosition, 0.0f, 1.0f); + } + } + + /// Called when the mouse position is updated + /// X coordinate of the mouse cursor on the control + /// Y coordinate of the mouse cursor on the control + protected override void OnMouseMoved(float x, float y) + { + _mouseY = y; + } + + /// Called when the selected items in the list have changed + protected virtual void OnSelectionChanged() + { + if (SelectionChanged != null) + SelectionChanged(this, EventArgs.Empty); + } + + /// Called when an item is removed from the items list + /// List the item has been removed from + /// Contains the item that has been removed + private void ItemRemoved(object sender, ItemEventArgs arguments) + { + UpdateSlider(); + } + + /// Called when an item is added to the items list + /// List the item has been added to + /// Contains the item that has been added + private void ItemAdded(object sender, ItemEventArgs arguments) + { + UpdateSlider(); + } + + /// Called when the items list is about to clear itself + /// Items list that is about to clear itself + /// Not used + private void ItemsCleared(object sender, EventArgs arguments) + { + UpdateSlider(); + } + + /// Called when an entry is added to the list of selected items + /// List to which an item was added to + /// Contains the added item + private void SelectionAdded(object sender, ItemEventArgs arguments) + { + OnSelectionChanged(); + } + + /// + /// Called when an entry is removed from the list of selected items + /// + /// List from which an item was removed + /// Contains the removed item + private void SelectionRemoved(object sender, ItemEventArgs arguments) + { + OnSelectionChanged(); + } + + /// Called when the selected items list is about to clear itself + /// List that is about to clear itself + /// Not Used + private void SelectionCleared(object sender, EventArgs arguments) + { + OnSelectionChanged(); + } + + /// Updates the size and position of the list's slider + private void UpdateSlider() + { + if ((Screen != null) && (_listRowLocator != null)) + { + var bounds = GetAbsoluteBounds(); + + float totalitems = _items.Count; + var itemsInView = bounds.Height/_listRowLocator.GetRowHeight(bounds); + + _slider.ThumbSize = Math.Min(1.0f, itemsInView/totalitems); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiOptionControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiOptionControl.cs new file mode 100644 index 000000000..0e671e9b1 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiOptionControl.cs @@ -0,0 +1,34 @@ +using System; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Control displaying an option the user can toggle on and off + public class GuiOptionControl : GuiPressableControl + { + /// Whether the option is currently selected + public bool Selected; + + /// Text that will be shown on the button + public string Text; + + /// Determines where text or image will be shown relative to control + public GuiPressableDescriptionPosition DescriptionPosition; + + /// Will be triggered when the choice is changed + public event EventHandler Changed; + + /// Called when the button is pressed + protected override void OnPressed() + { + Selected = !Selected; + OnChanged(); + } + + /// Triggers the changed event + protected virtual void OnChanged() + { + if (Changed != null) + Changed(this, EventArgs.Empty); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiSliderControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiSliderControl.cs new file mode 100644 index 000000000..3a8bb714d --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiSliderControl.cs @@ -0,0 +1,118 @@ +using System; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Base class for a slider that can be moved using the mouse + /// + /// Implements the common functionality for a slider moving either the direction + /// of the X or the Y axis (but not both). Derive any scroll bar-like controls + /// from this class to simplify their implementation. + /// + public abstract class GuiSliderControl : GuiControl + { + /// Whether the mouse cursor is hovering over the thumb + private bool _mouseOverThumb; + + /// X coordinate at which the thumb was picked up + private float _pickupX; + + /// Y coordinate at which the thumb was picked up + private float _pickupY; + + /// Whether the slider's thumb is currently in the depressed state + private bool _pressedDown; + + /// Can be set by renderers to allow the control to locate its thumb + public IThumbLocator ThumbLocator; + + /// Position of the thumb within the slider (0.0 .. 1.0) + public float ThumbPosition; + + /// Fraction of the slider filled by the thumb (0.0 .. 1.0) + public float ThumbSize; + + /// Initializes a new slider control + public GuiSliderControl() + { + ThumbPosition = 0.0f; + ThumbSize = 1.0f; + } + + /// whether the mouse is currently hovering over the thumb + public bool MouseOverThumb => _mouseOverThumb; + + /// Whether the pressable control is in the depressed state + public virtual bool ThumbDepressed => _pressedDown && _mouseOverThumb; + + /// Triggered when the slider has been moved + public event EventHandler Moved; + + /// Moves the thumb to the specified location + /// Location the thumb will be moved to + protected abstract void MoveThumb(float x, float y); + + /// Obtains the region covered by the slider's thumb + /// The region covered by the slider's thumb + protected abstract RectangleF GetThumbRegion(); + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + protected override void OnMousePressed(MouseButton button) + { + if (button == MouseButton.Left) + { + var thumbRegion = GetThumbRegion(); + if (thumbRegion.Contains(new Point2(_pickupX, _pickupY))) + { + _pressedDown = true; + + _pickupX -= thumbRegion.X; + _pickupY -= thumbRegion.Y; + } + } + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + protected override void OnMouseReleased(MouseButton button) + { + if (button == MouseButton.Left) + _pressedDown = false; + } + + /// Called when the mouse position is updated + /// X coordinate of the mouse cursor on the control + /// Y coordinate of the mouse cursor on the control + protected override void OnMouseMoved(float x, float y) + { + if (_pressedDown) + { + //RectangleF bounds = GetAbsoluteBounds(); + MoveThumb(x - _pickupX, y - _pickupY); + } + else + { + _pickupX = x; + _pickupY = y; + } + + _mouseOverThumb = GetThumbRegion().Contains(new Point2(x, y)); + } + + /// + /// Called when the mouse has left the control and is no longer hovering over it + /// + protected override void OnMouseLeft() + { + _mouseOverThumb = false; + } + + /// Fires the slider's Moved event + protected virtual void OnMoved() + { + if (Moved != null) + Moved(this, EventArgs.Empty); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiVerticalSliderControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiVerticalSliderControl.cs new file mode 100644 index 000000000..3f3ded0d9 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiVerticalSliderControl.cs @@ -0,0 +1,40 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// Vertical slider that can be moved using the mouse + public class GuiVerticalSliderControl : GuiSliderControl + { + /// Obtains the region covered by the slider's thumb + /// The region covered by the slider's thumb + protected override RectangleF GetThumbRegion() + { + var bounds = GetAbsoluteBounds(); + + if (ThumbLocator != null) + return ThumbLocator.GetThumbPosition(bounds, ThumbPosition, ThumbSize); + var thumbHeight = bounds.Height*ThumbSize; + var thumbY = (bounds.Height - thumbHeight)*ThumbPosition; + + return new RectangleF(0, thumbY, bounds.Width, thumbHeight); + } + + /// Moves the thumb to the specified location + /// X coordinate for the new left border of the thumb + /// Y coordinate for the new upper border of the thumb + protected override void MoveThumb(float x, float y) + { + var bounds = GetAbsoluteBounds(); + + var thumbHeight = bounds.Height*ThumbSize; + var maxY = bounds.Height - thumbHeight; + + // Prevent divide-by-zero if the thumb fills out the whole rail + if (maxY > 0.0f) + ThumbPosition = MathHelper.Clamp(y/maxY, 0.0f, 1.0f); + else ThumbPosition = 0.0f; + + OnMoved(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiWindowControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiWindowControl.cs new file mode 100644 index 000000000..9e7160333 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/GuiWindowControl.cs @@ -0,0 +1,31 @@ +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// A window for hosting other controls + public class GuiWindowControl : GuiDraggableControl + { + /// Text in the title bar of the window + public string Title; + + /// Initializes a new window control + public GuiWindowControl() : base(true) + { + } + + /// Whether the window is currently open + public bool IsOpen => Screen != null; + + /// Whether the window can be dragged with the mouse + public new bool EnableDragging + { + get { return base.EnableDragging; } + set { base.EnableDragging = value; } + } + + /// Closes the window + public void Close() + { + if (IsOpen) + Parent.Children.Remove(this); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IListRowLocator.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IListRowLocator.cs new file mode 100644 index 000000000..aee5ed959 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IListRowLocator.cs @@ -0,0 +1,38 @@ + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// + /// Interface which can be established between a control and its renderer to + /// allow a list control to locate the list row the cursor is in + /// + /// + /// A renderer can implement this interface and assign it to a control that + /// it renders so the control can ask the renderer for extended informations + /// regarding the look of its text. If this interface is provided, certain + /// controls will be able to correctly place the caret in user-editable text + /// when they are clicked by the mouse. + /// + public interface IListRowLocator + { + /// Calculates the list row the cursor is in + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// + /// Position of the thumb in the list's slider + /// + /// + /// Number of items contained in the list + /// + /// Vertical position of the cursor + /// The row the cursor is over + int GetRow(RectangleF bounds, float thumbPosition, int itemCount, float y); + + /// Determines the height of a row displayed in the list + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// The height of a single row in the list + float GetRowHeight(RectangleF bounds); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IOpeningLocator.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IOpeningLocator.cs new file mode 100644 index 000000000..2f453475b --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IOpeningLocator.cs @@ -0,0 +1,32 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// + /// Interface which can be established between a control and its renderer to + /// allow the control to locate openings between letters + /// + /// + /// A renderer can implement this interface and assign it to a control that + /// it renders so the control can ask the renderer for extended informations + /// regarding the look of its text. If this interface is provided, certain + /// controls will be able to correctly place the caret in user-editable text + /// when they are clicked by the mouse. + /// + public interface IOpeningLocator + { + /// + /// Calculates which opening between two letters is closest to a position + /// + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// Text in which the nearest opening will be located + /// + /// Position to which the closest opening will be found, + /// should be in absolute coordinates + /// + /// The index of the opening closest to the provided position + int GetClosestOpening(RectangleF bounds, string text, Vector2 position); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IThumbLocator.cs b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IThumbLocator.cs new file mode 100644 index 000000000..75348c19f --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/Desktop/IThumbLocator.cs @@ -0,0 +1,28 @@ + +namespace MonoGame.Extended.NuclexGui.Controls.Desktop +{ + /// + /// Interface which can be established between a control and its renderer to + /// allow a slider control to locate its thumb + /// + /// + /// A renderer can implement this interface and assign it to a control that + /// it renders so the control can ask the renderer for extended informations + /// regarding the look of its text. If this interface is provided, certain + /// controls will be able to correctly place the caret in user-editable text + /// when they are clicked by the mouse. + /// + public interface IThumbLocator + { + /// + /// Calculates the position of the thumb on a slider + /// + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// Relative position of the thumb (0.0 .. 1.0) + /// Relative size of the thumb (0.0 .. 1.0) + /// The region covered by the slider's thumb + RectangleF GetThumbPosition(RectangleF bounds, float thumbPosition, float thumbSize); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControl.cs new file mode 100644 index 000000000..33a48e9a3 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControl.cs @@ -0,0 +1,360 @@ +using System; +using System.Collections.ObjectModel; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.NuclexGui.Input; + +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Represents an element in the user interface + /// + /// + /// Controls are always arranged in a tree where each control except the one at + /// the root of the tree has exactly one owner (the one at the root has no owner). + /// The design actively prevents you from assigning a control as child to + /// multiple parents. + /// + /// + /// The controls in the Nuclex.UserInterface library are fully independent of + /// their graphical representation. That means you can construct a dialog + /// without even having a graphics device in place, that you can move your + /// dialogs between different graphics devices and that you do not have to + /// even think about graphics device resets and similar trouble. + /// + /// + public partial class GuiControl + { + /// Whether this control can obtain the input focus + private readonly bool _affectsOrdering; + + /// Child controls belonging to this control + /// + /// Child controls are any controls that belong to this control. They don't + /// neccessarily need to be situated in this control's client area, but + /// their positioning will be relative to the parent's location. + /// + private readonly ParentingControlCollection _children; + + /// Name of the control instance (for programmatic identification) + private string _name; + + /// Control this control is contained in + private GuiControl _parent; + + /// GUI instance this control has been added to. Can be null. + private GuiScreen _screen; + + /// Initializes a new control + public GuiControl() : this(false) + { + } + + /// Initializes a new control + /// + /// Whether the control comes to the top of the hierarchy when clicked + /// + /// + /// + /// The parameter should be set for windows + /// and other free-floating panels which exist in parallel and which the user + /// might want to put on top of their siblings by clicking them. If the user + /// clicks on a child control of such a panel/window control, the panel/window + /// control will also be moved into the foreground. + /// + /// + /// It should not be set for normal controls which usually have no overlap, + /// like buttons. Otherwise, a button placed on the desktop could overdraw a + /// window when the button is clicked. The behavior would be well-defined and + /// controlled, but the user probably doesn't expect this ;-) + /// + /// + protected GuiControl(bool affectsOrdering) + { + _affectsOrdering = affectsOrdering; + + _children = new ParentingControlCollection(this); + } + + /// Location and extents of the control + public UniRectangle Bounds { get; set; } + + /// Children of the control + public Collection Children => _children; + + /// + /// True if clicking the control or its children moves the control into + /// the foreground of the drawing hierarchy + /// + public bool AffectsOrdering => _affectsOrdering; + + /// Parent control this control is contained in + /// + /// Can be null, but this is only the case for free-floating controls that have + /// not been added into a Gui. The only control that really keeps this field + /// set to null whilst the Gui is active is the root control in the Gui class. + /// + public GuiControl Parent => _parent; + + /// Name that can be used to uniquely identify the control + /// + /// This name acts as an unique identifier for a control. It primarily serves + /// as a means to programmatically identify the control and as a debugging aid. + /// Duplicate names are not allowed and will result in an exception being + /// thrown, the only exception is when the control's name is set to null. + /// + public string Name + { + get { return _name; } + set + { + // Don't do anything if we're given the same name we already have. This + // is not a pure performance optimization, it also prevents the control + // from reporting an name collision with itself in this special case :) + if (value != _name) + { + // Look for name collisions with our siblings + var parent = Parent; + if (parent != null) + { + if (parent._children.IsNameTaken(value)) + throw new InvalidOperationException("Another control is already using this name"); + } + + // Everything seems to be ok, accept the new name + _name = value; + } + } + } + + /// GUI instance this control belongs to. Can be null. + internal GuiScreen Screen => _screen; + + /// Control the mouse is currently over + protected internal GuiControl MouseOverControl => _mouseOverControl; + + /// Control that currently captured incoming input + protected internal GuiControl ActivatedControl => _activatedControl; + + /// Moves the control into the foreground + public void BringToFront() + { + // Doing nothing if we don't have a parent is okay since in that case, + // we're the root and we're the frontmost control in any case. If the user + // calls BringToFront() on a control before he integrates it into the GUI + // tree, this is expected behavior and only logical. + var control = this; + while (!ReferenceEquals(control._parent, null)) + { + var siblings = control._parent._children; + siblings.MoveToStart(siblings.IndexOf(control)); + + control = control._parent; + } + } + + /// Obtains the absolute boundaries of the control in screen coordinates + /// The control's absolute screen coordinate boundaries + /// + /// This method resolves the unified coordinates into absolute screen coordinates + /// that can be used to do hit-testing and rendering. The control is required to + /// be part of a GUI hierarchy that is assigned to a screen for this to work + /// since otherwise, there's no absolute coordinate frame into which the + /// unified coordinates could be resolved. + /// + public RectangleF GetAbsoluteBounds() + { + // Is this the topmost control in the hierarchy (the desktop control)? + if (ReferenceEquals(_parent, null)) + { + // Make sure the control is attached to a screen, otherwise, it's a free + // control not living in any GUI hierarchy and thus, does not have + // absolute bounds yet. + if (ReferenceEquals(_screen, null)) + { + throw new InvalidOperationException( + "Obtaining absolute bounds requires the control to be part of a screen" + ); + } + + // Transform the unified coordinate bounds into absolute pixel coordinates + // for the screen's dimensions + return Bounds.ToOffset(_screen.Width, _screen.Height); + } + // Control is the child of another control + + // Recursively determine the bounds of the parent control until we end up + // at the desktop control (or not, if this is a free living hierarchy, in + // which case the exception above will be triggered as soon as the top of + // the hierarchy is reached) + var parentBounds = _parent.GetAbsoluteBounds(); + + // Determine the controls absolute position based on the absolute + // dimensions and position of the parent control + var controlBounds = Bounds.ToOffset(parentBounds.Width, parentBounds.Height); + controlBounds.Offset(parentBounds.X, parentBounds.Y); + + // Done, controlBounds now contains the absolute screen coordinates of + // the control's boundaries. + return controlBounds; + } + + /// Called when an input command was sent to the control + /// Input command that has been triggered + /// Whether the command has been processed by the control + protected virtual bool OnCommand(Command command) + { + return false; + } + + /// Called when a button on the gamepad has been pressed + /// Button that has been pressed + /// True if the button press was handled by the control, otherwise false. + /// + /// If the control indicates that it didn't handle the key press, it will not + /// receive the associated key release notification. + /// + protected virtual bool OnButtonPressed(Buttons button) + { + return false; + } + + /// Called when a button on the gamepad has been released + /// Button that has been released + protected virtual void OnButtonReleased(Buttons button) + { + } + + /// Called when the mouse position is updated + /// X coordinate of the mouse cursor on the control + /// Y coordinate of the mouse cursor on the control + protected virtual void OnMouseMoved(float x, float y) + { + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + /// Whether the control has processed the mouse press + /// + /// If this method states that a mouse press is processed by returning + /// true, that means the control did something with it and the mouse press + /// should not be acted upon by any other listener. + /// + protected virtual void OnMousePressed(MouseButton button) + { + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + protected virtual void OnMouseReleased(MouseButton button) + { + } + + /// + /// Called when the mouse has left the control and is no longer hovering over it + /// + protected virtual void OnMouseLeft() + { + } + + /// + /// Called when the mouse has entered the control and is now hovering over it + /// + protected virtual void OnMouseEntered() + { + } + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + protected virtual void OnMouseWheel(float ticks) + { + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + /// + /// True if the key press was handled by the control, otherwise false. + /// + /// + /// If the control indicates that it didn't handle the key press, it will not + /// receive the associated key release notification. This means that if you + /// return false from this method, you should under no circumstances do anything + /// with the information - you will not know when the key is released again + /// and another control might pick it up, causing a second key response. + /// + protected virtual bool OnKeyPressed(Keys keyCode) + { + return false; + } + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + protected virtual void OnKeyReleased(Keys keyCode) + { + } + + /// Called when a command was sent to the control + /// Command to be injected + /// Whether the command has been processed + internal bool ProcessCommand(Command command) + { + switch (command) + { + // These are not supported on the control level + case Command.SelectPrevious: + case Command.SelectNext: + { + return false; + } + + // These can be handled by user code if he so wishes + case Command.Up: + case Command.Down: + case Command.Left: + case Command.Right: + case Command.Accept: + case Command.Cancel: + { + return OnCommand(command); + } + + // Value not contained in enumation - should not be happening! + default: + { + throw new ArgumentException("Invalid command", "command"); + } + } + } + + /// Assigns a new parent to the control + /// New parent to assign to the control + internal void SetParent(GuiControl parent) + { + _parent = parent; + + // Have we been assigned to a parent? + if (_parent != null) + { + // If this ownership change transferred us to a different gui, we will + // have to migrate our visual and also the visuals of all our children. + if (!ReferenceEquals(_screen, parent._screen)) + SetScreen(parent._screen); + } + else + { + // No parent, we're now officially an orphan ;) + + // Orphans don't have screens! + SetScreen(null); + } + } + + /// Assigns a new GUI to the control + /// New GUI to assign to the control + internal void SetScreen(GuiScreen gui) + { + _screen = gui; + + _children.SetScreen(gui); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlEventArgs.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlEventArgs.cs new file mode 100644 index 000000000..c67804117 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlEventArgs.cs @@ -0,0 +1,21 @@ +using System; + +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Event argument class that carries a control instance + public class ControlEventArgs : EventArgs + { + /// Control that will be accessible to the event subscribers + private readonly GuiControl _control; + + /// Initializes a new control event args instance + /// Control to provide to the subscribers of the event + public ControlEventArgs(GuiControl control) + { + _control = control; + } + + /// Control that has been provided for the event + public GuiControl Control => _control; + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlInput.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlInput.cs new file mode 100644 index 000000000..70b7f4f34 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiControlInput.cs @@ -0,0 +1,460 @@ +using System.Diagnostics; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls +{ + public partial class GuiControl + { + /// Control the mouse was pressed down on + private GuiControl _activatedControl; + + /// Number of game pad buttons being held down + private int _heldButtonCount; + + /// Number of keyboard keys being held down + private int _heldKeyCount; + + /// Mouse buttons the user is holding down over the control + private MouseButton _heldMouseButtons; + + /// Control the mouse is currently hovering over + private GuiControl _mouseOverControl; + + /// Whether any keys, mouse buttons or game pad buttons are beind held pressed + private bool AnyKeysOrButtonsPressed => (_heldMouseButtons != 0) || (_heldKeyCount > 0) || (_heldButtonCount > 0); + + /// Called when a button on the game pad has been pressed + /// Button that has been pressed + /// + /// True if the button press was processed by the control and future game pad + /// input belongs to the control until all buttons are released again + /// + internal bool ProcessButtonPress(Buttons button) + { + // If there's an activated control (one being held down by the mouse or having + // accepted a previous button press), this control will get the button press + // delivered, whether it wants to or not. + if (_activatedControl != null) + { + ++_heldButtonCount; + + // If one of our children is the activated control, pass on the message + if (_activatedControl != this) + _activatedControl.ProcessButtonPress(button); + else + OnButtonPressed(button); + + // We're already activated, so this button press is accepted in any case + return true; + } + + // A button has been pressed but no control is activated currently. This means we + // have to look for a control which feels responsible for the button press, + // starting with ourselves. + + // Does the user code in our derived class feel responsible for this button? + // If so, we're the new activated control and the button has been handled. + if (OnButtonPressed(button)) + { + _activatedControl = this; + ++_heldButtonCount; + return true; + } + + // Nope, we have to ask our children to find a control that feels responsible. + var encounteredOrderingControl = false; + foreach (var child in _children) + { + // We only process one child that has the affectsOrdering field set. This + // ensures that key presses will not be delivered to windows sitting behind + // another window. Other siblings that are not windows are asked still, so + // a bunch of buttons on the desktop would be asked in addition to a window. + if (child._affectsOrdering) + { + if (encounteredOrderingControl) + continue; + + encounteredOrderingControl = true; + } + + // Does this child feel responsible for the button press? + if (child.ProcessButtonPress(button)) + { + _activatedControl = child; + ++_heldButtonCount; + return true; + } + } + + // Neither we nor any of our children felt responsible for the button. Give up. + return false; + } + + /// Called when a button on the game pad has been released + /// Button that has been released + internal void ProcessButtonRelease(Buttons button) + { + // If we're the top level control, we will receive button presses and their related + // releases even if nobody was interested in the button presses. Thus, we silently + // ignore those presses we didn't accept. + if (_heldButtonCount == 0) + return; + + // If we receive a release, we must have a control on which the mouse + // was pressed (possibly even ourselves) + Debug.Assert( + _activatedControl != null, + "ProcessButtonRelease() had no control a button was pressed on; " + + "ProcessButtonRelease() was called on a control instance, but the control " + + "did not register a prior button press for itself or any of its child controls" + ); + + --_heldButtonCount; + if (_activatedControl != this) + _activatedControl.ProcessButtonRelease(button); + else + OnButtonReleased(button); + + // If no more keys buttons are being held down, clear the activated control + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// + /// Called when the mouse has left the control and is no longer hovering over it + /// + internal void ProcessMouseLeave() + { + // Because the mouse has left us, if we have a mouse-over control, it also + // cannot be over one of our children Children leaving the parent container + // are not supported by design and for consistency, the behavior is tweaked + // so the children are left when the parent is left - this avoids strange + // behavior like being able to select a control if entering it with the mouse + // from the container side but being unable to select it if entering from + // the outside. + if (_mouseOverControl != null) + { + if (_mouseOverControl != this) + _mouseOverControl.ProcessMouseLeave(); + else + OnMouseLeft(); + + _mouseOverControl = null; + } + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + /// Whether the control has processed the mouse press + internal bool ProcessMousePress(MouseButton button) + { + // We remember the control the mouse was pressed over and won't replace it for + // as long as the mouse is being held down. This ensures the mouse release + // notification is always delivered to a control, even if the mouse is released + // after moving it away from the control. + if (_activatedControl == null) + { + _activatedControl = _mouseOverControl; + + // If we received an initial mouse press outside of our control area, + // someone is feeding us notifications we shouldn't be receiving. The best + // thing we can do is ignore this notification. This is a normal situation + // for the top level control which does the input filtering. + if (_activatedControl == null) + return false; + + // If we're a control that can appear on top of or below our siblings in + // the z order, bring us into foreground since the user just clicked on us. + if (_activatedControl != this) + { + if (_activatedControl._affectsOrdering) + _children.MoveToStart(_children.IndexOf(_activatedControl)); + } + } + + // Add the buttons to the list of mouse buttons being held down. This is used + // to track when we should clear the mouse-over control again. + _heldMouseButtons |= button; + + // If the mouse is over another control, pass on the mouse press. + if (_activatedControl != this) + return _activatedControl.ProcessMousePress(button); + // Otherwise, the mouse press applies to us + + // If this control can take the input focus, make it the focused control + if (_screen != null) + { + var focusable = this as IFocusable; + if ((focusable != null) && focusable.CanGetFocus) + _screen.FocusedControl = this; + } + + // Deliver the notification to the control deriving from us + OnMousePressed(button); + return true; + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + internal void ProcessMouseRelease(MouseButton button) + { + // When the mouse is clicked on game window's border and the user drags it + // into the GUI area, we will get a rogue mouse release message without + // the related mouse press. We ignore such rogue mouse release messages. + if ((_heldMouseButtons & button) != button) + return; + + // If we receive a release, we must have a control on which the mouse + // was pressed (possibly even ourselves) + Debug.Assert( + _activatedControl != null, + "ProcessMouseRelease() had no control the mouse was pressed on; " + + "ProcessMouseRelease() was called on a control instance, but the control " + + "did not register a prior mouse press over itself or any of its child controls" + ); + + // Remove the button from the list of mouse buttons being held down. This + // allows us to see when we can clear the mouse-press control. + _heldMouseButtons &= ~button; + + // If the mouse was held over one of our childs, pass on the notification + if (_activatedControl != this) + _activatedControl.ProcessMouseRelease(button); + else + OnMouseReleased(button); + + // If no more mouse buttons are being held down, clear the mouse-press control + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// Processes mouse movement notifications + /// Absolute width of the control's container + /// Absolute height of the control's container + /// Absolute X position of the mouse within the container + /// Absolute Y position of the mouse within the container + internal void ProcessMouseMove(float containerWidth, float containerHeight, float x, float y) + { + // Calculate the absolute pixel position and size of this control + var size = Bounds.Size.ToOffset(containerWidth, containerHeight); + + // If a mouse button is being held down, the mouse movement notification is + // delivered to the control the mouse was pressed on first. This guarantees that + // windows can be dragged even if the mouse was close to the window border and + // leaves the window during dragging. + if (_activatedControl != null) + { + var mouseX = x - Bounds.Location.X.ToOffset(containerWidth); + var mouseY = y - Bounds.Location.Y.ToOffset(containerHeight); + + // Deliver the mouse move notifcation (either to our own user code or + // to the control the mouse of hovering over) + if (_activatedControl != this) + _activatedControl.ProcessMouseMove(size.X, size.Y, mouseX, mouseY); + else + OnMouseMoved(mouseX, mouseY); + } + + // Calculate the absolute mouse position. We cannot reuse the value calculated + // in the mouse-press handling code because the control could have been moved when + // we called OnMouseMoved() - a typical use case for draggable controls. + x -= Bounds.Location.X.ToOffset(containerWidth); + y -= Bounds.Location.Y.ToOffset(containerHeight); + + // Check whether the mouse is hovering over one of our children and if so, + // pass on the mouse movement notification to the child. + foreach (var control in _children) + { + var childBounds = control.Bounds.ToOffset(size.X, size.Y); + + // Is the mouse over this child? + if (childBounds.Contains(new Point2(x, y))) + { + SwitchMouseOverControl(control); + + // Hand over the mouse movement data to the child control the mouse is + // hovering over. If this is the mouse-press control, do nothing because + // we already delivered the movement notification out of order. + if (_mouseOverControl != _activatedControl) + _mouseOverControl.ProcessMouseMove(size.X, size.Y, x, y); + + // We got our mouse-over control, end processing. + return; + } + } + + // The mouse was over none of our children, so it must be hovering over us, + // unless we're the control being pressed down, in which case we'd also be + // getting mouse movement data outside of our boundaries. In this case, we + // only should become the mouse-over control is actually over us. + if ( + (x >= 0.0f) && (x < size.X) && + (y >= 0.0f) && (y < size.Y) + ) + { + SwitchMouseOverControl(this); + + // If we weren't pressed, we didn't deliver the out-of-order update to + // our implementation. Send our implementation a normal ordered update. + if (_activatedControl == null) + OnMouseMoved(x, y); + } + else + { + // redundant - our parent handles this - but convenient for unit tests + ProcessMouseLeave(); + } + } + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + internal void ProcessMouseWheel(float ticks) + { + // If the mouse is being held down on a control, give it any mouse wheel + // messages. This enables some exotic uses for the mouse wheel, such as holding + // an object with the mouse button and scaling it with the wheel at the same time. + if (_activatedControl != null) + { + if (_activatedControl != this) + { + _activatedControl.ProcessMouseWheel(ticks); + return; + } + } + + // If the mouse wheel has been used normally, send the wheel notifications to + // the control the mouse is over. + if (_mouseOverControl != null) + { + if (_mouseOverControl != this) + { + _mouseOverControl.ProcessMouseWheel(ticks); + return; + } + } + + // We're the control the mouse is over, let the user code handle + // the mouse wheel rotation + OnMouseWheel(ticks); + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + /// Whether the key press is due to the user holding down a key + internal bool ProcessKeyPress(Keys keyCode, bool repetition) + { + // If there's an activated control (one being held down by the mouse or having + // accepted a previous key press), this control will get the key press delivered, + // whether it wants to or not. We don't want to track for each key which control + // is currently processing it. ;-) + if (_activatedControl != null) + { + if (!repetition) + ++_heldKeyCount; + + // If one of our children is the activated control, pass on the message + if (_activatedControl != this) + _activatedControl.ProcessKeyPress(keyCode, repetition); + else + OnKeyPressed(keyCode); // We're the activated control + + return true; // Ignore user code and always accept the key press + } + + // A key has been pressed but no control is activated currently. This means we + // have to look for a control which feels responsible for the key press, starting + // with ourselves. + + // Does the user code in our derived class feel responsible for this key? + // If so, we're the new activated control and the key has been handled. + if (OnKeyPressed(keyCode)) + { + _activatedControl = this; + ++_heldKeyCount; + return true; + } + + // Nope, we have to ask our children (and they, potentially recursively, theirs) + // to find a control that feels responsible. + var encounteredOrderingControl = false; + for (var index = 0; index < _children.Count; ++index) + { + var child = _children[index]; + + // We only process one child that has the affectsOrdering field set. This + // ensures that key presses will not be delivered to windows sitting behind + // another window. Other siblings that are not windows are asked still. + if (child._affectsOrdering) + { + if (encounteredOrderingControl) + continue; + else + encounteredOrderingControl = true; + } + + // Does this child feel responsible for the key press? + if (child.ProcessKeyPress(keyCode, repetition)) + { + _activatedControl = child; + ++_heldKeyCount; + return true; + } + } + + // Neither we nor any of our children felt responsible for the key. Give up. + return false; + } + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + internal void ProcessKeyRelease(Keys keyCode) + { + // Any key release should have an associated key press, otherwise, someone + // delivered notifications to us we should not have received. + Debug.Assert( + _heldKeyCount > 0, + "ProcessKeyRelease() called more often then ProcessKeyPress(); " + + "ProcessKeyRelease() was called more often the ProcessKeyPress() has been " + + "called with the repetition parameter set to false" + ); + + // If we receive a release, we must have a control on which the mouse + // was pressed (possibly even ourselves) + Debug.Assert( + _activatedControl != null, + "ProcessKeyRelease() had no control a key was pressed on; " + + "ProcessKeyRelease() was called on a control instance, but the control " + + "did not register a prior key press for itself or any of its child controls" + ); + + --_heldKeyCount; + if (_activatedControl != this) + _activatedControl.ProcessKeyRelease(keyCode); + else + OnKeyReleased(keyCode); + + // If no more keys buttons are being held down, clear the activated control + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// Switches the mouse over control to a different control + /// New control the mouse is hovering over + private void SwitchMouseOverControl(GuiControl newMouseOverControl) + { + if (_mouseOverControl != newMouseOverControl) + { + // Tell the previous mouse-over control that the mouse is no longer + // hovering over it + if (_mouseOverControl != null) + _mouseOverControl.ProcessMouseLeave(); + + _mouseOverControl = newMouseOverControl; + + // Inform the new mouse-over control that the mouse is now over it + newMouseOverControl.OnMouseEntered(); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiDesktopControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiDesktopControl.cs new file mode 100644 index 000000000..6fc8b5cae --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiDesktopControl.cs @@ -0,0 +1,33 @@ +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Control used to represent the desktop + public class GuiDesktopControl : GuiControl + { + /// Initializes a new control + public GuiDesktopControl() + { + } + + /// True if the mouse is currently hovering over a GUI element + public bool IsMouseOverGui + { + get + { + if (MouseOverControl == null) + return false; + return !ReferenceEquals(MouseOverControl, this); + } + } + + /// Whether the GUI holds ownership of the input devices + public bool IsInputCaptured + { + get + { + if (ActivatedControl == null) + return false; + return !ReferenceEquals(ActivatedControl, this); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiLabelControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiLabelControl.cs new file mode 100644 index 000000000..eb67ff61c --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiLabelControl.cs @@ -0,0 +1,21 @@ +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Control that draws a block of text + public class GuiLabelControl : GuiControl + { + /// Text to be rendered in the control's frame + public string Text; + + /// Initializes a new label control with an empty string + public GuiLabelControl() : this(string.Empty) + { + } + + /// Initializes a new label control + /// Text to be printed at the location of the label control + public GuiLabelControl(string text) + { + Text = text; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiPressableControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiPressableControl.cs new file mode 100644 index 000000000..c5b2e469d --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiPressableControl.cs @@ -0,0 +1,277 @@ +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// + /// Determines where the text or image describing control will be located. + /// Used primarily for radio button and checkbox. + /// + public enum GuiPressableDescriptionPosition + { + North, + South, + West, + East + } + + /// User interface element the user can push down + public abstract class GuiPressableControl : GuiControl, IFocusable + { + /// Whether the mouse is hovering over the command + private bool _mouseHovering; + + /// Whether the command is pressed down using the game pad shortcut + private bool _pressedDownByGamepadShortcut; + + /// Whether the command is pressed down using the space key + private bool _pressedDownByKeyboard; + + /// Whether the command is pressed down using the keyboard shortcut + private bool _pressedDownByKeyboardShortcut; + + /// Whether the command is pressed down using the mouse + private bool _pressedDownByMouse; + + /// Whether the user can interact with the choice + public bool Enabled; + + /// Button that can be pressed to activate this command + public Buttons? ShortcutButton; + + /// Initializes a new command control + public GuiPressableControl() + { + Enabled = true; + } + + /// Whether the mouse pointer is hovering over the control + public bool MouseHovering => _mouseHovering; + + /// Whether the pressable control is in the depressed state + public virtual bool Depressed + { + get + { + var mousePressed = _mouseHovering && _pressedDownByMouse; + return + mousePressed || + _pressedDownByKeyboard || + _pressedDownByKeyboardShortcut || + _pressedDownByGamepadShortcut; + } + } + + /// Whether the control currently has the input focus + public bool HasFocus => (Screen != null) && + ReferenceEquals(Screen.FocusedControl, this); + + /// Whether the control can currently obtain the input focus + bool IFocusable.CanGetFocus => Enabled; + + /// + /// Called when the mouse has entered the control and is now hovering over it + /// + protected override void OnMouseEntered() + { + _mouseHovering = true; + } + + /// + /// Called when the mouse has left the control and is no longer hovering over it + /// + protected override void OnMouseLeft() + { + // Intentionally not calling OnActivated() here because the user has moved + // the mouse away from the command while holding the mouse button down - + // a common trick under windows to last-second-abort the clicking of a button + _mouseHovering = false; + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + protected override void OnMousePressed(MouseButton button) + { + if (Enabled) + { + if (button == MouseButton.Left) + _pressedDownByMouse = true; + } + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + protected override void OnMouseReleased(MouseButton button) + { + if (button == MouseButton.Left) + { + _pressedDownByMouse = false; + + // Only trigger the pressed event if the mouse was released over the control. + // The user can move the mouse cursor away from the control while still holding + // the mouse button down to do the well-known last-second-abort. + if (_mouseHovering && Enabled) + { + if (!Depressed) + OnPressed(); + } + } + } + + /// Called when a button on the gamepad has been pressed + /// Button that has been pressed + /// + /// True if the button press was handled by the control, otherwise false. + /// + protected override bool OnButtonPressed(Buttons button) + { + if (ShortcutButton.HasValue) + { + if (button == ShortcutButton.Value) + { + _pressedDownByGamepadShortcut = true; + return true; + } + } + + return false; + } + + /// Called when a button on the gamepad has been released + /// Button that has been released + protected override void OnButtonReleased(Buttons button) + { + if (ShortcutButton.HasValue) + { + if (_pressedDownByGamepadShortcut) + { + if (button == ShortcutButton.Value) + { + _pressedDownByGamepadShortcut = false; + if (!Depressed) + OnPressed(); + } + } + } + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + /// + /// True if the key press was handled by the control, otherwise false. + /// + protected override bool OnKeyPressed(Keys keyCode) + { + if (ShortcutButton.HasValue) + { + if (keyCode == KeyFromButton(ShortcutButton.Value)) + { + _pressedDownByKeyboardShortcut = true; + return true; + } + } + if (HasFocus) + { + if (keyCode == Keys.Space) + { + _pressedDownByKeyboard = true; + return true; + } + } + + return false; + } + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + protected override void OnKeyReleased(Keys keyCode) + { + if (_pressedDownByKeyboardShortcut) + { + if (ShortcutButton.HasValue) + { + if (keyCode == KeyFromButton(ShortcutButton.Value)) + { + _pressedDownByKeyboardShortcut = false; + if (!Depressed) + OnPressed(); + } + } + } + if (_pressedDownByKeyboard) + { + if (keyCode == Keys.Space) + { + _pressedDownByKeyboard = false; + if (!Depressed) + OnPressed(); + } + } + } + + /// Called when the control is pressed + /// + /// If you were to implement a button, for example, you could trigger a 'Pressed' + /// event here are call a user-provided delegate, depending on your design. + /// + protected virtual void OnPressed() + { + } + + /// Looks up the equivalent key to the gamepad button + /// + /// Gamepad button for which the equivalent key on the keyboard will be found + /// + /// The key that is equivalent to the specified gamepad button + private static Keys KeyFromButton(Buttons button) + { + switch (button) + { + case Buttons.A: + { + return Keys.A; + } + case Buttons.B: + { + return Keys.B; + } + case Buttons.Back: + { + return Keys.Back; + } + case Buttons.LeftShoulder: + { + return Keys.L; + } + case Buttons.LeftStick: + { + return Keys.LeftControl; + } + case Buttons.RightShoulder: + { + return Keys.R; + } + case Buttons.RightStick: + { + return Keys.RightControl; + } + case Buttons.Start: + { + return Keys.Enter; + } + case Buttons.X: + { + return Keys.X; + } + case Buttons.Y: + { + return Keys.Y; + } + default: + { + return Keys.None; + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/GuiProgressControl.cs b/Source/MonoGame.Extended.NuclexGui/Controls/GuiProgressControl.cs new file mode 100644 index 000000000..9482fefd9 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/GuiProgressControl.cs @@ -0,0 +1,9 @@ +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Visual indicator for the progress of some operation + public class GuiProgressControl : GuiControl + { + /// The displayed progress in the range between 0.0 and 1.0 + public float Progress; + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/IFocusable.cs b/Source/MonoGame.Extended.NuclexGui/Controls/IFocusable.cs new file mode 100644 index 000000000..6753acfc7 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/IFocusable.cs @@ -0,0 +1,18 @@ +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Interface for controls which can obtain the input focus + /// + /// Implement this interface in any control which can obtain the input focus. + /// + public interface IFocusable + { + /// Whether the control can currently obtain the input focus + /// + /// Usually returns true. For controls that can be disabled to disallow user + /// interaction, false can be returned to prevent the control from being + /// traversed when the user presses the tab key or uses the cursor / game pad + /// to select a control. + /// + bool CanGetFocus { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/IWritable.cs b/Source/MonoGame.Extended.NuclexGui/Controls/IWritable.cs new file mode 100644 index 000000000..397b19c00 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/IWritable.cs @@ -0,0 +1,26 @@ +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// + /// Interface for controls that can be written into using the keyboard + /// + public interface IWritable : IFocusable + { + /// Title to be displayed in the on-screen keyboard + string GuideTitle { get; } + + /// Description to be displayed in the on-screen keyboard + string GuideDescription { get; } + + /// Text currently contained in the control + /// + /// Called before the on-screen keyboard is displayed to get the text currently + /// contained in the control and after the on-screen keyboard has been + /// acknowledged to assign the edited text to the control + /// + string Text { get; set; } + + /// Called when the user has entered a character + /// Character that has been entered + void OnCharacterEntered(char character); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Controls/ParentingControlCollection.cs b/Source/MonoGame.Extended.NuclexGui/Controls/ParentingControlCollection.cs new file mode 100644 index 000000000..27bd6fb11 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Controls/ParentingControlCollection.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.ObjectModel; + +namespace MonoGame.Extended.NuclexGui.Controls +{ + /// Collection of GUI controls + /// + /// This class is for internal use only. Do not expose it to the user. If it was + /// exposed, the user might decide to use it for storing his own controls, causing + /// exceptions because the collection tries to parent the controls which are already + /// belonging to another collection. + /// + internal class ParentingControlCollection : Collection + { + /// Parent control to assign to all controls in this collection. + private readonly GuiControl _parent; + + /// GUI this control is currently assigned to. Can be null. + private GuiScreen _screen; + + /// Initializes a new parenting control collection. + /// Parent control to assign to all children. + public ParentingControlCollection(GuiControl parent) + { + _parent = parent; + } + + /// Clears all elements from the collection + protected override void ClearItems() + { + for (var index = 0; index < Count; ++index) + UnassignParent(base[index]); + + base.ClearItems(); + } + + /// Inserts a new element into the collection + /// Index at which to insert the element + /// Item to be inserted + protected override void InsertItem(int index, GuiControl item) + { + EnsureIntegrity(item); + + base.InsertItem(index, item); + AssignParent(item); + } + + /// Removes an element from the collection + /// Index of the element to remove + protected override void RemoveItem(int index) + { + UnassignParent(base[index]); + base.RemoveItem(index); + } + + /// Takes over a new element that is directly assigned + /// Index of the element that was assigned + /// New item + protected override void SetItem(int index, GuiControl item) + { + EnsureIntegrity(item); + + UnassignParent(base[index]); + AssignParent(item); + } + + /// Switches the control to a specific GUI + /// Screen that owns the control from now on + internal void SetScreen(GuiScreen screen) + { + _screen = screen; + + for (var index = 0; index < Count; ++index) + base[index].SetScreen(screen); + } + + /// Moves the specified control to the start of the list. + /// Index of the control that will be moved to the start of the list. + internal void MoveToStart(int controlIndex) + { + var control = base[controlIndex]; + + // We explicitely circumvent the additional logic for adding and removing items + // in this collection since we're only relocating an item. Removal and readdition + // have no risk of causing an exception in a normal collection, otherwise the + // rollback attempt would be futile anyway since it would mean to repeat exactly + // what has caused failed: adding an item ;) + RemoveAt(controlIndex); + Insert(0, control); + } + + /// Checks whether the provided name is already taken by a control. + /// Id that will be checked. + /// True if the id is already taken; otherwise false. + internal bool IsNameTaken(string name) + { + // Empty names are an exception and will not be checked for duplicates. + if (name == null) + return false; + + // Look for any controls with the provided name. This is a stupid sequential + // search, but given the typical number of controls in a Gui and the fact + // that this operation usually only happens once, there's no point in adding + // the overhead of managing a synchronized look-up dictionary here. + for (var index = 0; index < Count; ++index) + { + if (base[index].Name == name) + return true; + } + + // If we reach this point, no control is using the specified name. + return false; + } + + /// Gives up the parentage on the item provided. + /// Item to be unparented. + private void AssignParent(GuiControl item) + { + item.SetParent(_parent); + } + + /// Sets up the parentage on the specified item. + /// Item to be parented. + private void UnassignParent(GuiControl item) + { + item.SetParent(null); + } + + /// Determines whether the provided control is a parent of this control. + /// Control to check for parentage. + /// True if the control is one of our parents; otherwise false. + /// This method takes into account all ancestors up to the tree's root. + private bool IsParent(GuiControl control) + { + var parent = _parent; + while (parent != null) + { + // Check if one of parents is control we are looking for + if (ReferenceEquals(parent, control)) + return true; + + // Walk upwards in the tree + parent = parent.Parent; + } + + // Control is not in the tree + return false; + } + + /// Ensures the integrity of the parent/child relationships. + /// Control that is to become one of our childs. + private void EnsureIntegrity(GuiControl proposedChild) + { + // The item must not have a parent (otherwise, by being added to this collection, + // it would either be contained twice in the same collection or have two parents). + if (!ReferenceEquals(proposedChild.Parent, null)) + throw new InvalidOperationException("Control already is the child of another control"); + + // The item must not become its own parent. I cannot imagine this ever happenning + // unless someone deliberately tried to crash the GUI library :) + if (ReferenceEquals(_parent, proposedChild)) + throw new InvalidOperationException("Attempt to instate control as its own parent"); + + // The item also must not be any of our parent's parents (and so on). Otherwise, + // a stack overflow is likely to occur. + if (IsParent(proposedChild)) + throw new InvalidOperationException("Attempt to instate one of the control's parents as its child"); + + // We also do not allow a child control to have the same id as an existing + // control (with the exception of an empty name) + if (IsNameTaken(proposedChild.Name)) + { + throw new InvalidOperationException( + "The name of the added control has already been taken by another child"); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/GuiManager.cs b/Source/MonoGame.Extended.NuclexGui/GuiManager.cs new file mode 100644 index 000000000..b9e6609ae --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/GuiManager.cs @@ -0,0 +1,390 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.NuclexGui.Input; +using MonoGame.Extended.NuclexGui.Visuals; +using MonoGame.Extended.NuclexGui.Visuals.Flat; +using GameEventHandler = System.EventHandler; + +namespace MonoGame.Extended.NuclexGui +{ + // If an instance creates its own GUI visualizer (because the user didn't assign + // a custom one), it belongs to the instance and should be disposed. If the + // use does assign a custom visualizer, it shouldn't be disposed. + // But what if the user stores the current visualizer, then assigns a different + // one and assigns our's back? + + + public class GuiManager : IGameComponent, IUpdateable, IDrawable, IDisposable, IGuiService + { + /// Draw order rank relative to other game components + private int _drawOrder; + + /// Game service container the GUI has registered itself in + private readonly GameServiceContainer _gameServices; + + /// Graphics device servide the GUI uses + private IGraphicsDeviceService _graphicsDeviceService; + + /// Draws the GUI + private IGuiVisualizer _guiVisualizer; + + /// Captures user input for the XNA game + private IInputCapturer _inputCapturer; + + /// Input service the GUI uses + private IGuiInputService _inputService; + + /// The GUI screen representing the desktop + private GuiScreen _screen; + + /// The IGuiVisualizer under its IUpdateable interface, if implemented + private IUpdateable _updateableGuiVisualizer; + + /// The IInputCapturer under its IUpdateable interface, if implemented + private IUpdateable _updateableInputCapturer; + + /// Update order rank relative to other game components + private int _updateOrder; + + /// Whether the GUI should be drawn by Game.Draw() + private bool _visible = true; + + /// Initializes a new GUI manager using the XNA service container + /// + /// Game service container the GuiManager will register itself in and + /// to take the services it consumes from. + /// + /// The input service used by the GUI + public GuiManager(GameServiceContainer gameServices, IGuiInputService inputService) + { + _gameServices = gameServices; + _inputService = inputService; + + gameServices.AddService(typeof(IGuiService), this); + + // Do not look for the consumed services yet. XNA uses a two-stage + // initialization where in the first stage all managers register themselves + // before seeking out the services they use in the second stage, marked + // by a call to the Initialize() method. + } + + /// Initializes a new GUI manager without using the XNA service container + /// Graphics device service the GUI will be rendered with + /// Input service used to read data from the input devices + /// This constructor is provided for users of dependency injection frameworks. + public GuiManager(IGraphicsDeviceService graphicsDeviceService, IGuiInputService inputService) + { + _graphicsDeviceService = graphicsDeviceService; + _inputService = inputService; + } + + /// Initializes a new GUI manager using explicit services + /// Game service container the GuiManager will register itself in + /// Graphics device service the GUI will be rendered with + /// Input service used to read data from the input devices + /// + /// This constructor is provided for users of dependency injection frameworks + /// or if you just want to be more explicit in stating which manager consumes + /// what services. + /// + public GuiManager(GameServiceContainer gameServices, IGraphicsDeviceService graphicsDeviceService, IGuiInputService inputService) + : this(gameServices, inputService) + { + _graphicsDeviceService = graphicsDeviceService; + _inputService = inputService; + } + + /// Input capturer that collects data from the input devices + /// + /// The GuiManager will dispose its input capturer together with itself. If you + /// want to keep the input capturer, unset it before disposing the GuiManager. + /// If you want to replace the GuiManager's input capturer after it has constructed + /// the default one, you should dispose the GuiManager's default input capturer + /// after assigning your own. + /// + public IInputCapturer InputCapturer + { + get { return _inputCapturer; } + set + { + if (!ReferenceEquals(value, _inputCapturer)) + { + if (_inputCapturer != null) + _inputCapturer.InputReceiver = null; + + _inputCapturer = value; + _updateableInputCapturer = value as IUpdateable; + + if (_inputCapturer != null) + _inputCapturer.InputReceiver = _screen; + } + } + } + + /// Immediately releases all resources used the GUI manager + public void Dispose() + { + // Unregister the service if we have registered it before + if (_gameServices != null) + { + var registeredService = _gameServices.GetService(typeof(IGuiService)); + + if (ReferenceEquals(registeredService, this)) + _gameServices.RemoveService(typeof(IGuiService)); + } + + // Dispose the input capturer, if necessary + if (_inputCapturer != null) + { + var disposableInputCapturer = _inputCapturer as IDisposable; + + disposableInputCapturer?.Dispose(); + + _updateableInputCapturer = null; + _inputCapturer = null; + } + + // Dispose the GUI visualizer, if necessary + if (_guiVisualizer != null) + { + var disposableguiVisualizer = _guiVisualizer as IDisposable; + + disposableguiVisualizer?.Dispose(); + + _updateableGuiVisualizer = null; + _guiVisualizer = null; + } + } + + /// Fired when the DrawOrder property changes + public event GameEventHandler DrawOrderChanged; + + /// Fired when the Visible property changes + public event GameEventHandler VisibleChanged; + + /// Whether the GUI should be drawn during Game.Draw() + public bool Visible + { + get { return _visible; } + set + { + if (value != _visible) + { + _visible = value; + OnVisibleChanged(); + } + } + } + + /// + /// The order in which to draw this object relative to other objects. Objects + /// with a lower value are drawn first. + /// + public int DrawOrder + { + get { return _drawOrder; } + set + { + if (value != _drawOrder) + { + _drawOrder = value; + OnDrawOrderChanged(); + } + } + } + + /// Called when the drawable component needs to draw itself. + /// Provides a snapshot of the game's timing values + public void Draw(GameTime gameTime) + { + if (_guiVisualizer != null) + { + if (_screen != null) + _guiVisualizer.Draw(_screen); + } + } + + /// Handles second-stage initialization of the GUI manager + public void Initialize() + { + // Set up a default input capturer if none was assigned by the user. + // We only require an IInputService if the user doesn't use a custom input + // capturer (which could be based on any other input library) + if (_inputCapturer == null) + { + if (_inputService == null) + _inputService = GetInputService(_gameServices); + + //_inputCapturer = new Input.DefaultInputCapturer(_inputService); + _inputCapturer = new DefaultInputCapturer(_inputService); + + // If a screen was assigned to the GUI before the input capturer was + // created, then the input capturer hasn't been given the screen as its + // input sink yet. + if (_screen != null) + _inputCapturer.InputReceiver = _screen; + } + + // Set up a default GUI visualizer if none was assigned by the user. + // We only require an IGraphicsDeviceService if the user doesn't use a + // custom visualizer (which could be using any kind of rendering) + if (_guiVisualizer == null) + { + if (_graphicsDeviceService == null) + _graphicsDeviceService = GetGraphicsDeviceService(_gameServices); + + // Use a private service container. We know exactly what will be loaded from + // the content manager our default GUI visualizer creates and if the user is + // being funny, the graphics device service passed to the constructor might + // be different from the one registered in the game service container. + var services = new GameServiceContainer(); + services.AddService(typeof(IGraphicsDeviceService), _graphicsDeviceService); + + Visualizer = FlatGuiVisualizer.FromResource(services, + "MonoGame.Extended.NuclexGui.Resources.Skins.SuaveSkin.json"); + } + } + + /// Visualizer that draws the GUI onto the screen + /// + /// The GuiManager will dispose its visualizer together with itself. If you want + /// to keep the visualizer, unset it before disposing the GuiManager. If you want + /// to replace the GuiManager's visualizer after it has constructed the default + /// one, you should dispose the GuiManager's default visualizer after assigning + /// your own. + /// + public IGuiVisualizer Visualizer + { + get { return _guiVisualizer; } + set + { + _guiVisualizer = value; + _updateableGuiVisualizer = value as IUpdateable; + } + } + + /// GUI that is being rendered + /// + /// The GUI manager renders one GUI full-screen onto the primary render target + /// (the backbuffer). This property holds the GUI that is being managed by + /// the GUI manager component. You can replace it at any time, for example, + /// if the player opens or closes your ingame menu. + /// + public GuiScreen Screen + { + get { return _screen; } + set + { + _screen = value; + + // Someone could assign the screen before the component is initialized. + // If that happens, do nothing here, the Initialize() method will take care + // of assigning the screen to the input capturer once it is called. + if (_inputCapturer != null) + _inputCapturer.InputReceiver = _screen; + } + } + + /// Fired when the UpdateOrder property changes + public event GameEventHandler UpdateOrderChanged; + + /// Fired when the enabled property changes, which is never + event GameEventHandler IUpdateable.EnabledChanged + { + add { } + remove { } + } + + /// Whether the component should be updated during Game.Update() + bool IUpdateable.Enabled => true; + + /// + /// Indicates when the game component should be updated relative to other game + /// components. Lower values are updated first. + /// + public int UpdateOrder + { + get { return _updateOrder; } + set + { + if (value != _updateOrder) + { + _updateOrder = value; + OnUpdateOrderChanged(); + } + } + } + + /// Called when the component needs to update its state. + /// Provides a snapshot of the Game's timing values + public void Update(GameTime gameTime) + { + _updateableInputCapturer?.Update(gameTime); + _updateableGuiVisualizer?.Update(gameTime); + } + + /// Fires the UpdateOrderChanged event + protected void OnUpdateOrderChanged() + { + UpdateOrderChanged?.Invoke(this, EventArgs.Empty); + } + + /// Fires the DrawOrderChanged event + protected void OnDrawOrderChanged() + { + DrawOrderChanged?.Invoke(this, EventArgs.Empty); + } + + /// Fires the VisibleChanged event + protected void OnVisibleChanged() + { + VisibleChanged?.Invoke(this, EventArgs.Empty); + } + + /// Retrieves the input service from a service provider + /// Service provider the input service is retrieved from + /// The retrieved input service + private static IGuiInputService GetInputService(IServiceProvider serviceProvider) + { + var inputService = (IGuiInputService) serviceProvider.GetService(typeof(IGuiInputService)); + + if (inputService == null) + { + throw new InvalidOperationException( + "Using the GUI with the default input capturer requires the IInputService. " + + "Please either add the IInputService to Game.Services by using the " + + "Nuclex.Input.InputManager in your game or provide a custom IInputCapturer " + + "implementation for the GUI and assign it before GuiManager.Initialize() " + + "is called." + ); + } + + return inputService; + } + + /// Retrieves the graphics device service from a service provider + /// Service provider the graphics device service is retrieved from + /// The retrieved graphics device service + private static IGraphicsDeviceService GetGraphicsDeviceService( + IServiceProvider serviceProvider + ) + { + var graphicsDeviceService = + (IGraphicsDeviceService) serviceProvider.GetService(typeof(IGraphicsDeviceService)); + + if (graphicsDeviceService == null) + { + throw new InvalidOperationException( + "Using the GUI with the default visualizer requires the IGraphicsDeviceService. " + + "Please either add an IGraphicsDeviceService to Game.Services by using " + + "XNA's GraphicsDeviceManager in your game or provide a custom " + + "IGuiVisualizer implementation for the GUI and assign it before " + + "GuiManager.Initialize() is called." + ); + } + + return graphicsDeviceService; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/GuiScreen.cs b/Source/MonoGame.Extended.NuclexGui/GuiScreen.cs new file mode 100644 index 000000000..fb41a0018 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/GuiScreen.cs @@ -0,0 +1,614 @@ +using System; +using System.Collections; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; +using MonoGame.Extended.NuclexGui.Controls; +using MonoGame.Extended.NuclexGui.Input; +using MonoGame.Extended.NuclexGui.Support; + +namespace MonoGame.Extended.NuclexGui +{ + /// Manages the controls and their state on a GUI screen + /// + /// This class manages the global state of a distinct user interface. Unlike your + /// typical GUI library, the Nuclex.UserInterface library can handle any number of + /// simultaneously active user interfaces at the same time, making the library + /// suitable for usage on virtual ingame computers and multi-client environments + /// such as split-screen games or switchable graphical terminals. + /// + public class GuiScreen : IInputReceiver + { + /// Highest value in the Keys enumeration + private static readonly int _maxKeyboardKey = + (int) EnumHelper.GetHighestValue(); + + /// Control responsible for hosting the GUI's top-level controls + private readonly GuiDesktopControl _desktopControl; + + /// Child that currently has the input focus + /// + /// If this field is non-null, all keyboard input sent to the Gui is handed + /// over to the focused control. Otherwise, keyboard input is discarded. + /// + private readonly Support.WeakReference _focusedControl; + + /// Keys on the keyboard the user is currently holding down + private readonly BitArray _heldKeys; + + /// Control the user has activated through one of the input devices + private GuiControl _activatedControl; + + /// Buttons on the game pad the user is currently holding down + private Buttons _heldButtons; + + /// Number of keys being held down on the keyboard + private int _heldKeyCount; + + /// Mouse buttons currently being held down + private MouseButton _heldMouseButtons; + + /// Size of the GUI area in world units or pixels + private Vector2 _size; + + /// Initializes a new GUI + public GuiScreen() : this(0, 0) + { + } + + /// Initializes a new GUI + /// Width of the area the GUI can occupy + /// Height of the area the GUI can occupy + /// + /// Width and height should reflect the entire drawable area of your GUI. If you + /// want to limit the region which the GUI is allowed to use (eg. to only use the + /// safe area of a TV) please resize the desktop control accordingly! + /// + public GuiScreen(float width, float height) + { + Width = width; + Height = height; + + _heldKeys = new BitArray(_maxKeyboardKey + 1); + _heldButtons = 0; + + // By default, the desktop control will cover the whole drawing area + _desktopControl = new GuiDesktopControl + { + Bounds = new UniRectangle(new UniVector(0, 0), new UniVector(1, 1)) + }; + + _desktopControl.SetScreen(this); + + _focusedControl = new Support.WeakReference(null); + } + + /// Width of the screen in pixels + public float Width + { + get { return _size.X; } + set { _size.X = value; } + } + + /// Height of the screen in pixels + public float Height + { + get { return _size.Y; } + set { _size.Y = value; } + } + + /// Control responsible for hosting the GUI's top-level controls + public GuiControl Desktop => _desktopControl; + + /// + /// Whether any keys, mouse buttons or game pad buttons are beind held pressed + /// + private bool AnyKeysOrButtonsPressed => (_heldMouseButtons != 0) || + (_heldKeyCount > 0) || + (_heldButtons != 0); + + /// Whether the GUI has currently captured the input devices + /// + /// + /// When you mix GUIs and gameplay (for example, in a strategy game where the GUI + /// manages the build menu and the remainder of the screen belongs to the game), + /// it is important to keep control of who currently owns the input devices. + /// + /// + /// Assume the player is drawing a selection rectangle around some units using + /// the mouse. He will press the mouse button outside any GUI elements, keep + /// holding it down and possibly drag over the GUI. Until the player lets go + /// of the mouse button, input exclusively belongs to the game. The same goes + /// vice versa, of course. + /// + /// + /// This property tells whether the GUI currently thinks that all input belongs + /// to it. If it is true, the game should not process any input. The GUI will + /// implement the input model as described here and respect the game's ownership + /// of the input devices if a mouse button is pressed outside of the GUI. To + /// correctly handle input device ownership, send all input to the GUI + /// regardless of this property's value, then check this property and if it + /// returns false let your game process the input. + /// + /// + public bool IsInputCaptured => _desktopControl.IsInputCaptured; + + /// True if the mouse is currently hovering over any GUI elements + /// + /// Useful if you mix gameplay with a GUI and use different mouse cursors + /// depending on the location of the mouse. As long as input is not captured + /// (see ) you can use this property to know + /// whether you should use the standard GUI mouse cursor or let your game + /// decide which cursor to use. + /// + public bool IsMouseOverGui => _desktopControl.IsMouseOverGui; + + /// Child control that currently has the input focus + public GuiControl FocusedControl + { + get + { + var current = _focusedControl.Target; + if ((current != null) && ReferenceEquals(current.Screen, this)) + return current; + return null; + } + set + { + var current = _focusedControl.Target; + if (!ReferenceEquals(value, current)) + { + _focusedControl.Target = value; + OnFocusChanged(value); + } + } + } + + /// Injects a command into the processor + /// Input command that will be injected + public void InjectCommand(Command command) + { + switch (command) + { + // Accept or cancel the current control + case Command.Accept: + case Command.Cancel: + { + var focusedControl = FocusedControl; + if (focusedControl == null) + return; // Also catches when focusedControl is not part of the tree + + focusedControl.ProcessCommand(command); + + break; + } + + // Change focus to another control + case Command.SelectPrevious: + case Command.SelectNext: + { + break; + } + + // Control specific. Changes focus if unhandled. + case Command.Up: + case Command.Down: + case Command.Left: + case Command.Right: + { + var focusedControl = FocusedControl; + if (focusedControl == null) + return; // Also catches when focusedControl is not part of the tree + + // First send the command to the focused control. If the control handles + // the command, there's nothing for us to do. Otherwise, use the directional + // commands for focus switching. + if (focusedControl.ProcessCommand(command)) + return; + + // These will be determined in the following code block + var nearestDistance = float.NaN; + GuiControl nearestControl = null; + { + // Determine the center of the focused control + var parentBounds = focusedControl.Parent.GetAbsoluteBounds(); + var focusedBounds = focusedControl.Bounds.ToOffset( + parentBounds.Width, parentBounds.Height + ); + + // Search all siblings of the focused control for the nearest control in the + // direction the command asks to move into + var siblings = focusedControl.Parent.Children; + foreach (var sibling in siblings) + { + // Only consider this sibling if it's focusable + if (!ReferenceEquals(sibling, focusedControl) && CanControlGetFocus(sibling)) + { + var siblingBounds = sibling.Bounds.ToOffset( + parentBounds.Width, parentBounds.Height + ); + + // Calculate the distance the control has in the direction focus is being + // changed to. If the control doesn't lie in that direction, NaN will + // be returned + var distance = GetDirectionalDistance( + ref focusedBounds, ref siblingBounds, command + ); + if (float.IsNaN(nearestDistance) || (distance < nearestDistance)) + { + nearestControl = sibling; + nearestDistance = distance; + } + } + } + } // beauty scope + + // Search completed, if we found a candidate, change focus to it + if (!float.IsNaN(nearestDistance)) + FocusedControl = nearestControl; + + break; + } + } + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + public void InjectKeyPress(Keys keyCode) + { + var repetition = _heldKeys.Get((int) keyCode); + + // If a control is activated, it will receive any input notifications + if (_activatedControl != null) + { + _activatedControl.ProcessKeyPress(keyCode, repetition); + if (!repetition) + { + ++_heldKeyCount; + _heldKeys.Set((int) keyCode, true); + } + return; + } + + // No control is activated, try the focused control before searching + // the entire tree for a responder. + var focusedControl = _focusedControl.Target; + if (focusedControl != null) + { + if (focusedControl.ProcessKeyPress(keyCode, false)) + { + _activatedControl = focusedControl; + if (!repetition) + { + ++_heldKeyCount; + _heldKeys.Set((int) keyCode, true); + } + return; + } + } + + // Focused control didn't process the notification, now let the desktop + // control traverse the entire control tree is earch for a handler. + if (_desktopControl.ProcessKeyPress(keyCode, false)) + { + _activatedControl = _desktopControl; + if (!repetition) + { + ++_heldKeyCount; + _heldKeys.Set((int) keyCode, true); + } + } + else + { + switch (keyCode) + { + case Keys.Up: + { + InjectCommand(Command.Up); + break; + } + case Keys.Down: + { + InjectCommand(Command.Down); + break; + } + case Keys.Left: + { + InjectCommand(Command.Left); + break; + } + case Keys.Right: + { + InjectCommand(Command.Right); + break; + } + case Keys.Enter: + { + InjectCommand(Command.Accept); + break; + } + case Keys.Escape: + { + InjectCommand(Command.Cancel); + break; + } + } + } + } + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + public void InjectKeyRelease(Keys keyCode) + { + if (!_heldKeys.Get((int) keyCode)) + return; + --_heldKeyCount; + _heldKeys.Set((int) keyCode, false); + + // If a control signed responsible for the earlier key press, it will now + // receive the release notification. + _activatedControl?.ProcessKeyRelease(keyCode); + + // Reset the activated control if the user has released all buttons on all + // input devices. + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// Handle user text input by a physical or virtual keyboard + /// Character that has been entered + public void InjectCharacter(char character) + { + // Send the text to the currently focused control in the GUI + var focusedControl = _focusedControl.Target; + var writable = focusedControl as IWritable; + writable?.OnCharacterEntered(character); + } + + /// Called when a button on the gamepad has been pressed + /// Button that has been pressed + public void InjectButtonPress(Buttons button) + { + var newHeldButtons = _heldButtons | button; + if (newHeldButtons == _heldButtons) + return; + _heldButtons = newHeldButtons; + + // If a control is activated, it will receive any input notifications + if (_activatedControl != null) + { + _activatedControl.ProcessButtonPress(button); + return; + } + + // No control is activated, try the focused control before searching + // the entire tree for a responder. + var focusedControl = _focusedControl.Target; + if (focusedControl != null) + { + if (focusedControl.ProcessButtonPress(button)) + { + _activatedControl = focusedControl; + return; + } + } + + // Focused control didn't process the notification, now let the desktop + // control traverse the entire control tree is earch for a handler. + if (_desktopControl.ProcessButtonPress(button)) + _activatedControl = _desktopControl; + } + + /// Called when a button on the gamepad has been released + /// Button that has been released + public void InjectButtonRelease(Buttons button) + { + if ((_heldButtons & button) == 0) + return; + _heldButtons &= ~button; + + // If a control signed responsible for the earlier button press, it will now + // receive the release notification. + _activatedControl?.ProcessButtonRelease(button); + + // Reset the activated control if the user has released all buttons on all + // input devices. + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// Injects a mouse position update into the GUI + /// X coordinate of the mouse cursor within the screen + /// Y coordinate of the mouse cursor within the screen + public void InjectMouseMove(float x, float y) + { + _desktopControl.ProcessMouseMove(_size.X, _size.Y, x, y); + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + public void InjectMousePress(MouseButton button) + { + _heldMouseButtons |= button; + + // If a control is activated, it will receive any input notifications + if (_activatedControl != null) + { + _activatedControl.ProcessMousePress(button); + return; + } + + // No control was activated, so the desktop control becomes activated and + // is responsible for routing the input to the control under the mouse. + _activatedControl = _desktopControl; + _desktopControl.ProcessMousePress(button); + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + public void InjectMouseRelease(MouseButton button) + { + _heldMouseButtons &= ~button; + + // If a control signed responsible for the earlier mouse press, it will now + // receive the release notification. + _activatedControl?.ProcessMouseRelease(button); + + // Reset the activated control if the user has released all buttons on all + // input devices. + if (!AnyKeysOrButtonsPressed) + _activatedControl = null; + } + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + public void InjectMouseWheel(float ticks) + { + if (_activatedControl != null) + _activatedControl.ProcessMouseWheel(ticks); + else + _desktopControl.ProcessMouseWheel(ticks); + } + + /// Triggered when the control in focus changes + public event EventHandler FocusChanged; + + /// Triggers the FocusChanged event + /// Control that has gotten the input focus + private void OnFocusChanged(GuiControl focusedControl) + { + FocusChanged?.Invoke(this, new ControlEventArgs(focusedControl)); + } + + /// + /// Determines the distance of one rectangle to the other, also taking direction + /// into account + /// + /// Boundaries of the base rectangle + /// Boundaries of the other rectangle + /// Direction into which distance will be determined + /// + /// The direction of the other rectangle of NaN if it didn't lie in that direction + /// + private static float GetDirectionalDistance( + ref RectangleF ownBounds, ref RectangleF otherBounds, Command direction + ) + { + float closestPointX, closestPointY; + float distance; + + var isVertical = + (direction == Command.Up) || + (direction == Command.Down); + + if (isVertical) + { + var ownCenterX = ownBounds.X + ownBounds.Width/2.0f; + + // Take an imaginary line through the other control's center, perpendicular + // to the specified direction. Then locate the closest point on that line + // to our own center. + closestPointX = Math.Min(Math.Max(ownCenterX, otherBounds.Left), otherBounds.Right); + closestPointY = otherBounds.Y + otherBounds.Height/2.0f; + + // Find out whether we need to check the diagonal quadrant boundary + var leavesLeft = closestPointX < ownBounds.Left; + var leavesRight = closestPointX > ownBounds.Right; + + // + float sideY; + if (direction == Command.Up) + { + sideY = ownBounds.Top; + if ((closestPointY > sideY) && (leavesLeft || leavesRight)) + return float.NaN; + distance = sideY - closestPointY; + } + else + { + sideY = ownBounds.Bottom; + if ((closestPointY < sideY) && (leavesLeft || leavesRight)) + return float.NaN; + distance = closestPointY - sideY; + } + + var distanceY = Math.Abs(sideY - closestPointY); + if (leavesLeft) + { + var distanceX = Math.Abs(ownBounds.Left - closestPointX); + if (distanceX > distanceY) + return float.NaN; + } + else + { + if (leavesRight) + { + var distanceX = Math.Abs(closestPointX - ownBounds.Right); + if (distanceX > distanceY) + return float.NaN; + } + } + } + else + { + var ownCenterY = ownBounds.Y + ownBounds.Height/2.0f; + + // Take an imaginary line through the other control's center, perpendicular + // to the specified direction. Then locate the closest point on that line + // to our own center. + closestPointX = otherBounds.X + otherBounds.Width/2.0f; + closestPointY = Math.Min(Math.Max(ownCenterY, otherBounds.Top), otherBounds.Bottom); + + // Find out whether we need to check the diagonal quadrant boundary + var leavesTop = closestPointY < ownBounds.Top; + var leavesBottom = closestPointY > ownBounds.Bottom; + + float sideX; + if (direction == Command.Left) + { + sideX = ownBounds.Left; + if ((closestPointX > sideX) && (leavesTop || leavesBottom)) + return float.NaN; + distance = sideX - closestPointX; + } + else + { + sideX = ownBounds.Right; + if ((closestPointX < sideX) && (leavesTop || leavesBottom)) + return float.NaN; + distance = closestPointX - sideX; + } + + var distanceX = Math.Abs(sideX - closestPointX); + if (leavesTop) + { + var distanceY = Math.Abs(ownBounds.Top - closestPointY); + if (distanceY > distanceX) + return float.NaN; + } + else + { + if (leavesBottom) + { + var distanceY = Math.Abs(closestPointY - ownBounds.Bottom); + if (distanceY > distanceX) + return float.NaN; + } + } + } + + return distance < 0.0f ? float.NaN : distance; + } + + /// Determines whether a control can obtain the input focus + /// Control that will be checked for focusability + /// True if the specified control can obtain the input focus + private static bool CanControlGetFocus(GuiControl control) + { + var focusableControl = control as IFocusable; + if (focusableControl != null) + return focusableControl.CanGetFocus; + return false; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/IGuiInputService.cs b/Source/MonoGame.Extended.NuclexGui/IGuiInputService.cs new file mode 100644 index 000000000..47cd999cb --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/IGuiInputService.cs @@ -0,0 +1,28 @@ +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui +{ + public interface IGuiInputService + { + KeyboardListener KeyboardListener { get; } + MouseListener MouseListener { get; } + GamePadListener GamePadListener { get; } + TouchListener TouchListener { get; } + } + + public class GuiInputService : IGuiInputService + { + public GuiInputService(InputListenerComponent inputListener) + { + inputListener.Listeners.Add(KeyboardListener = new KeyboardListener()); + inputListener.Listeners.Add(MouseListener = new MouseListener()); + inputListener.Listeners.Add(GamePadListener = new GamePadListener()); + inputListener.Listeners.Add(TouchListener = new TouchListener()); + } + + public KeyboardListener KeyboardListener { get; } + public MouseListener MouseListener { get; } + public GamePadListener GamePadListener { get; } + public TouchListener TouchListener { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/IGuiService.cs b/Source/MonoGame.Extended.NuclexGui/IGuiService.cs new file mode 100644 index 000000000..7c84d2a3f --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/IGuiService.cs @@ -0,0 +1,22 @@ +using MonoGame.Extended.NuclexGui.Visuals; + +namespace MonoGame.Extended.NuclexGui +{ + /// Game-wide interface for the GUI manager component + public interface IGuiService + { + /// GUI that is being rendered + /// + /// The GUI manager renders one GUI full-screen onto the primary render target + /// (the backbuffer). This property holds the GUI that is being managed by + /// the GUI manager component. You can replace it at any time, for example, + /// if the player opens or closes your ingame menu. + /// + GuiScreen Screen { get; set; } + + /// + /// Responsible for creating a visual representation of the GUI on the screen + /// + IGuiVisualizer Visualizer { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Input/Command.cs b/Source/MonoGame.Extended.NuclexGui/Input/Command.cs new file mode 100644 index 000000000..982f8bade --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Input/Command.cs @@ -0,0 +1,44 @@ +namespace MonoGame.Extended.NuclexGui.Input +{ + /// Input commands that can be sent to a control + /// + /// + /// The Nuclex GUI library is designed to work even when none of the usual + /// input devices are available. In this case, the entire GUI is controlled + /// through command keys, which might for example directly be linked to + /// the buttons of a gamepad. + /// + /// + /// It is, of course, still the responsibility of the developer to design + /// GUIs in a simple and easy to navigate style. When building GUIs that + /// are intended be used without a mouse, it is best not to use complex + /// controls like lists or text input boxes. + /// + /// + public enum Command + { + /// Accept the current selection (Ok button, Enter key) + Accept, + + /// Cancel the current selection (Cancel button, Escape key) + Cancel, + + /// Advance focus to the next control (Tab key) + SelectNext, + + /// Advance focus to the previous control (Shift+Tab key) + SelectPrevious, + + /// Go up or focus control above (Cursor Up key) + Up, + + /// Go down or focus control below (Cursor Down key) + Down, + + /// Go left or focus control left (Cursor Left key) + Left, + + /// Go right or focus control right (Cursor Right key) + Right + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Input/DefaultInputCapturer.cs b/Source/MonoGame.Extended.NuclexGui/Input/DefaultInputCapturer.cs new file mode 100644 index 000000000..b0b2a8460 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Input/DefaultInputCapturer.cs @@ -0,0 +1,277 @@ +using System; +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Input +{ + public class DefaultInputCapturer : IInputCapturer, IDisposable + { + private bool _disposedValue; // To detect redundant calls + private readonly GamePadListener _gamePadListener; + + /// Current receiver of input events + /// + /// Always valid. If no input receiver is assigned, this field will be set + /// to a dummy receiver. + /// + private IInputReceiver _inputReceiver; + + /// Input service the capturer is currently subscribed to + private IGuiInputService _inputService; + + private readonly KeyboardListener _keyboardListener; + private readonly MouseListener _mouseListener; + + /// Initializes a new input capturer, taking the input service from a service provider + /// Service provider the input capturer will take the input service from + public DefaultInputCapturer(IServiceProvider serviceProvider) : this(GetInputService(serviceProvider)) + { + } + + /// Initializes a new input capturer using the specified input service + /// Input service the capturer will subscribe to + public DefaultInputCapturer(IGuiInputService inputService) + { + _inputService = inputService; + _inputReceiver = new DummyInputReceiver(); + + _keyboardListener = inputService.KeyboardListener; + _mouseListener = inputService.MouseListener; + _gamePadListener = inputService.GamePadListener; + + SubscribeInputDevices(); + } + + // ~MainInputCapturer() { + // // Do not change this code. Put cleanup code in Dispose(bool disposing) above. + // Dispose(false); + // } + + // This code added to correctly implement the disposable pattern. + public void Dispose() + { + // Do not change this code. Put cleanup code in Dispose(bool disposing) above. + Dispose(true); + // GC.SuppressFinalize(this); + } + + /// Input receiver any captured input will be sent to + public IInputReceiver InputReceiver + { + get + { + if (ReferenceEquals(_inputReceiver, DummyInputReceiver.Default)) + return null; + return _inputReceiver; + } + set + { + if (value == null) + _inputReceiver = DummyInputReceiver.Default; + else + _inputReceiver = value; + } + } + + protected virtual void Dispose(bool disposing) + { + if (!_disposedValue) + { + if (disposing) + { + if (_inputService != null) + { + UnsubscribeInputDevices(); + _inputService = null; + } + } + + _disposedValue = true; + } + } + + private void SubscribeInputDevices() + { + _keyboardListener.KeyPressed += KeyboardListener_KeyPressed; + _keyboardListener.KeyReleased += KeyboardListener_KeyReleased; + _keyboardListener.KeyTyped += KeyboardListener_KeyTyped; + + _mouseListener.MouseDown += MouseListener_MouseDown; + _mouseListener.MouseUp += MouseListener_MouseUp; + _mouseListener.MouseMoved += MouseListener_MouseMoved; + _mouseListener.MouseWheelMoved += MouseListener_MouseWheelMoved; + + _gamePadListener.ButtonDown += GamePadListener_ButtonDown; + _gamePadListener.ButtonUp += GamePadListener_ButtonUp; + } + + private void UnsubscribeInputDevices() + { + _keyboardListener.KeyPressed -= KeyboardListener_KeyPressed; + _keyboardListener.KeyReleased -= KeyboardListener_KeyReleased; + _keyboardListener.KeyTyped -= KeyboardListener_KeyTyped; + + _mouseListener.MouseDown -= MouseListener_MouseDown; + _mouseListener.MouseUp -= MouseListener_MouseUp; + _mouseListener.MouseMoved -= MouseListener_MouseMoved; + _mouseListener.MouseWheelMoved -= MouseListener_MouseWheelMoved; + + _gamePadListener.ButtonDown -= GamePadListener_ButtonDown; + _gamePadListener.ButtonUp -= GamePadListener_ButtonUp; + } + + private void KeyboardListener_KeyPressed(object sender, KeyboardEventArgs e) + { + _inputReceiver.InjectKeyPress(e.Key); + } + + private void KeyboardListener_KeyReleased(object sender, KeyboardEventArgs e) + { + _inputReceiver.InjectKeyRelease(e.Key); + } + + private void KeyboardListener_KeyTyped(object sender, KeyboardEventArgs e) + { + _inputReceiver.InjectCharacter(e.Character.GetValueOrDefault()); + } + + private void MouseListener_MouseDown(object sender, MouseEventArgs e) + { + _inputReceiver.InjectMousePress(e.Button); + } + + private void MouseListener_MouseUp(object sender, MouseEventArgs e) + { + _inputReceiver.InjectMouseRelease(e.Button); + } + + private void MouseListener_MouseMoved(object sender, MouseEventArgs e) + { + _inputReceiver.InjectMouseMove(e.Position.X, e.Position.Y); + } + + private void MouseListener_MouseWheelMoved(object sender, MouseEventArgs e) + { + _inputReceiver.InjectMouseWheel(e.ScrollWheelDelta); + } + + private void GamePadListener_ButtonDown(object sender, GamePadEventArgs e) + { + if ((e.Button & Buttons.DPadUp) != 0) + _inputReceiver.InjectCommand(Command.Up); + else + { + if ((e.Button & Buttons.DPadDown) != 0) + _inputReceiver.InjectCommand(Command.Down); + else + { + if ((e.Button & Buttons.DPadLeft) != 0) + _inputReceiver.InjectCommand(Command.Left); + else + { + if ((e.Button & Buttons.DPadRight) != 0) + _inputReceiver.InjectCommand(Command.Right); + else + _inputReceiver.InjectButtonPress(e.Button); + } + } + } + } + + private void GamePadListener_ButtonUp(object sender, GamePadEventArgs e) + { + _inputReceiver.InjectButtonRelease(e.Button); + } + + /// Retrieves the input service from a service provider + /// + /// Service provider the service is taken from + /// + /// The input service stored in the service provider + private static IGuiInputService GetInputService(IServiceProvider serviceProvider) + { + var inputService = (IGuiInputService) serviceProvider.GetService(typeof(IGuiInputService)); + + if (inputService == null) + { + throw new InvalidOperationException( + "Using the GUI with the DefaultInputCapturer requires the IInputService. " + + "Please either add the IInputService to Game.Services by using the " + + "Nuclex.Input.InputManager in your game or provide a custom IInputCapturer " + + "implementation for the GUI and assign it before GuiManager.Initialize() " + + "is called." + ); + } + + return inputService; + } + + /// Dummy receiver for input events + private class DummyInputReceiver : IInputReceiver + { + /// Default instance of the dummy receiver + public static readonly DummyInputReceiver Default = new DummyInputReceiver(); + + /// Injects an input command into the input receiver + /// Input command to be injected + public void InjectCommand(Command command) + { + } + + /// Called when a button on the gamepad has been pressed + /// Button that has been pressed + public void InjectButtonPress(Buttons button) + { + } + + /// Called when a button on the gamepad has been released + /// Button that has been released + public void InjectButtonRelease(Buttons button) + { + } + + /// Injects a mouse position update into the receiver + /// New X coordinate of the mouse cursor on the screen + /// New Y coordinate of the mouse cursor on the screen + public void InjectMouseMove(float x, float y) + { + } + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + public void InjectMousePress(MouseButton button) + { + } + + /// Called when a mouse button has been released again + /// Index of the button that has been released + public void InjectMouseRelease(MouseButton button) + { + } + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + public void InjectMouseWheel(float ticks) + { + } + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + public void InjectKeyPress(Keys keyCode) + { + } + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + public void InjectKeyRelease(Keys keyCode) + { + } + + /// Handle user text input by a physical or virtual keyboard + /// Character that has been entered + public void InjectCharacter(char character) + { + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Input/IInputCapturer.cs b/Source/MonoGame.Extended.NuclexGui/Input/IInputCapturer.cs new file mode 100644 index 000000000..3e7a476fc --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Input/IInputCapturer.cs @@ -0,0 +1,12 @@ +namespace MonoGame.Extended.NuclexGui.Input +{ + /// + /// Interface for input capturers that monitor user input and forward it to + /// a freely settable input receiver + /// + public interface IInputCapturer + { + /// Input receiver any captured input will be sent to + IInputReceiver InputReceiver { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Input/IInputReceiver.cs b/Source/MonoGame.Extended.NuclexGui/Input/IInputReceiver.cs new file mode 100644 index 000000000..51188d22a --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Input/IInputReceiver.cs @@ -0,0 +1,82 @@ +using Microsoft.Xna.Framework.Input; +using MonoGame.Extended.Input.InputListeners; + +namespace MonoGame.Extended.NuclexGui.Input +{ + /// Interface for classes that can process user input + /// + /// This interface is implemented by any class that can process user input. + /// Normally, user input is directly fed into the class + /// which manages the global state of an isolated GUI system. It is also possible, + /// though not recommended, to use this interface for sending input directly + /// to a control, for example, to simulate text input for an input box. + /// + public interface IInputReceiver + { + /// Injects an input command into the input receiver + /// Input command to be injected + /// + /// + /// If the GUI is run without the usual GUI input methods (eg. when a GUI is + /// displayed on a gaming console), this is the sole way to feed input to + /// the controls. + /// + /// + /// By default, normal key presses will generate a command in addition to the + /// KeyPress itself, so unless a control does something very special, it + /// should respond to this method only and leave the KeyPress method alone ;) + /// + /// + void InjectCommand(Command command); + + /// Called when a button on the gamepad has been pressed + /// Button that has been pressed + void InjectButtonPress(Buttons button); + + /// Called when a button on the gamepad has been released + /// Button that has been released + void InjectButtonRelease(Buttons button); + + /// Injects a mouse position update into the receiver + /// New X coordinate of the mouse cursor on the screen + /// New Y coordinate of the mouse cursor on the screen + /// + /// When the mouse leaves the valid region (eg. if the game runs in windowed mode + /// and the mouse cursor is moved outside of the window), a final mouse move + /// notification is generated with the coordinates -1, -1 + /// + void InjectMouseMove(float x, float y); + + /// Called when a mouse button has been pressed down + /// Index of the button that has been pressed + void InjectMousePress(MouseButton button); + + /// Called when a mouse button has been released again + /// Index of the button that has been released + void InjectMouseRelease(MouseButton button); + + /// Called when the mouse wheel has been rotated + /// Number of ticks that the mouse wheel has been rotated + void InjectMouseWheel(float ticks); + + /// Called when a key on the keyboard has been pressed down + /// Code of the key that was pressed + /// + /// Only handle this if you need it for some special purpose. For standard commands + /// like confirmation and cancellation, simply respond to InjectCommand() + /// + void InjectKeyPress(Keys keyCode); + + /// Called when a key on the keyboard has been released again + /// Code of the key that was released + /// + /// Only handle this if you need it for some special purpose. For standard commands + /// like confirmation and cancellation, simply respond to InjectCommand() + /// + void InjectKeyRelease(Keys keyCode); + + /// Handle user text input by a physical or virtual keyboard + /// Character that has been entered + void InjectCharacter(char character); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/MonoGame.Extended.NuclexGui.csproj b/Source/MonoGame.Extended.NuclexGui/MonoGame.Extended.NuclexGui.csproj new file mode 100644 index 000000000..17e5a69da --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/MonoGame.Extended.NuclexGui.csproj @@ -0,0 +1,138 @@ + + + + + 10.0 + Debug + AnyCPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA} + Library + MonoGame.Extended.NuclexGui + MonoGame.Extended.NuclexGui + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + 6 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll + + + + + + + + {49c87598-994c-49b5-bbb3-7ffc342635d3} + MonoGame.Extended.Input + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.NuclexGui/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9095fbf6c --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.NuclexGui")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.NuclexGui")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.NuclexGui/Resources/Skins/DefaultFont.xnb b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/DefaultFont.xnb new file mode 100644 index 000000000..6d7551b27 Binary files /dev/null and b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/DefaultFont.xnb differ diff --git a/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSheet.xnb b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSheet.xnb new file mode 100644 index 000000000..04ea810c1 Binary files /dev/null and b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSheet.xnb differ diff --git a/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSkin.json b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSkin.json new file mode 100644 index 000000000..c3936ce47 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/SuaveSkin.json @@ -0,0 +1,2048 @@ +{ + "name": "Suave", + "resources": { + "font": [ + { + "name": "title", + "contentPath": "TitleFont" + }, + { + "name": "default", + "contentPath": "DefaultFont" + } + ], + "bitmap": [ + { + "name": "controls", + "contentPath": "SuaveSheet" + } + ] + }, + "frames": [ + { + "name": "window", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 1, + "w": 5, + "h": 24 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 6, + "y": 1, + "w": 32, + "h": 24 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 38, + "y": 1, + "w": 5, + "h": 24 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 25, + "w": 5, + "h": 18, + "id": "borderw" + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 6, + "y": 25, + "w": 32, + "h": 18, + "id": "client" + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 38, + "y": 25, + "w": 5, + "h": 18, + "id": "bordere" + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 43, + "w": 5, + "h": 4, + "id": "bordersw" + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 6, + "y": 43, + "w": 32, + "h": 4, + "id": "borders" + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 38, + "y": 43, + "w": 5, + "h": 4, + "id": "borderse" + } + ], + "text": [ + { + "font": "title", + "hplacement": "left", + "vplacement": "top", + "xoffset": 8, + "yoffset": 3, + "color": "#ffffff" + } + ] + }, + { + "name": "label", + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "yoffset": 0, + "color": "#3F3F3F" + } + ] + }, + { + "name": "progress", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 92, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 93, + "y": 1, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 155, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 92, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 93, + "y": 2, + "w": 62, + "h": 21 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 155, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 92, + "y": 23, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 93, + "y": 23, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 155, + "y": 23, + "w": 1, + "h": 1 + } + ] + }, + { + "name": "progress.bar", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 92, + "y": 25, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 94, + "y": 25, + "w": 60, + "h": 2 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 154, + "y": 25, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 92, + "y": 27, + "w": 2, + "h": 19 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 94, + "y": 27, + "w": 60, + "h": 19 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 154, + "y": 27, + "w": 2, + "h": 19 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 92, + "y": 46, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 94, + "y": 46, + "w": 60, + "h": 2 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 154, + "y": 46, + "w": 2, + "h": 2 + } + ] + }, + { + "name": "button.disabled", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 48, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 48, + "w": 11, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 16, + "y": 48, + "w": 3, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 52, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 52, + "w": 11, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 16, + "y": 52, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 58, + "w": 4, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 58, + "w": 11, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 16, + "y": 58, + "w": 3, + "h": 3 + } + ], + "text": [ + { + "font": "default", + "hplacement": "center", + "vplacement": "center", + "yoffset": 0, + "color": "#3F3F3F" + } + ] + }, + { + "name": "button.normal", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 62, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 62, + "w": 11, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 16, + "y": 62, + "w": 3, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 66, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 66, + "w": 11, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 16, + "y": 66, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 72, + "w": 4, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 72, + "w": 11, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 16, + "y": 72, + "w": 3, + "h": 3 + } + ], + "text": [ + { + "font": "default", + "hplacement": "center", + "vplacement": "center", + "yoffset": 0, + "color": "#3F3F3F" + } + ] + }, + { + "name": "button.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 90, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 90, + "w": 11, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 16, + "y": 90, + "w": 3, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 94, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 94, + "w": 11, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 16, + "y": 94, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 100, + "w": 4, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 100, + "w": 11, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 16, + "y": 100, + "w": 3, + "h": 3 + } + ], + "text": [ + { + "font": "default", + "hplacement": "center", + "vplacement": "center", + "yoffset": 0, + "color": "#3F3F3F" + } + ] + }, + { + "name": "button.depressed", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 76, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 76, + "w": 11, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 16, + "y": 76, + "w": 3, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 80, + "w": 4, + "h": 7 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 80, + "w": 11, + "h": 7 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 16, + "y": 80, + "w": 3, + "h": 7 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 87, + "w": 4, + "h": 2 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 87, + "w": 11, + "h": 2 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 16, + "y": 87, + "w": 3, + "h": 2 + } + ], + "text": [ + { + "font": "default", + "hplacement": "center", + "vplacement": "center", + "xoffset": 1, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.off.disabled", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 62, + "y": 90, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#7f7f7f" + } + ] + }, + { + "name": "radio.off.depressed", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 62, + "y": 76, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.off.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 62, + "y": 62, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.off.normal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 62, + "y": 48, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.on.disabled", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 76, + "y": 90, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#7f7f7f" + } + ] + }, + { + "name": "radio.on.depressed", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 76, + "y": 76, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.on.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 76, + "y": 62, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "radio.on.normal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 76, + "y": 48, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.off.disabled", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 20, + "y": 90, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#7f7f7f" + } + ] + }, + { + "name": "check.off.normal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 20, + "y": 48, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.off.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 20, + "y": 62, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.off.depressed", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 20, + "y": 76, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.on.disabled", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 34, + "y": 90, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#7f7f7f" + } + ] + }, + { + "name": "check.on.normal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 34, + "y": 48, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.on.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 34, + "y": 62, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.on.depressed", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 34, + "y": 76, + "w": 13, + "h": 13 + } + ], + "text": [ + { + "font": "default", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 1, + "color": "#3F3F3F" + } + ] + }, + { + "name": "check.multi.disabled", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 48, + "y": 90, + "w": 13, + "h": 13 + } + ] + }, + { + "name": "check.multi.normal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 48, + "y": 48, + "w": 13, + "h": 13 + } + ] + }, + { + "name": "check.multi.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 48, + "y": 62, + "w": 13, + "h": 13 + } + ] + }, + { + "name": "check.multi.depressed", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 48, + "y": 76, + "w": 13, + "h": 13 + } + ] + }, + { + "name": "rail.vertical", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 62, + "y": 104, + "w": 15, + "h": 47 + } + ] + }, + { + "name": "slider.vertical.normal", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 78, + "y": 104, + "w": 5, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 83, + "y": 104, + "w": 6, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 89, + "y": 104, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 78, + "y": 108, + "w": 5, + "h": 40 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 83, + "y": 108, + "w": 6, + "h": 40 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 89, + "y": 108, + "w": 4, + "h": 40 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 78, + "y": 148, + "w": 5, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 83, + "y": 148, + "w": 6, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 89, + "y": 148, + "w": 4, + "h": 3 + } + ] + }, + { + "name": "slider.vertical.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 95, + "y": 104, + "w": 5, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 100, + "y": 104, + "w": 6, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 106, + "y": 104, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 95, + "y": 108, + "w": 5, + "h": 40 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 100, + "y": 108, + "w": 6, + "h": 40 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 106, + "y": 108, + "w": 4, + "h": 40 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 95, + "y": 148, + "w": 5, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 100, + "y": 148, + "w": 6, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 106, + "y": 148, + "w": 4, + "h": 3 + } + ] + }, + { + "name": "slider.vertical.depressed", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 112, + "y": 104, + "w": 5, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 117, + "y": 104, + "w": 6, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 123, + "y": 104, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 112, + "y": 108, + "w": 5, + "h": 40 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 117, + "y": 108, + "w": 6, + "h": 40 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 123, + "y": 108, + "w": 4, + "h": 40 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 112, + "y": 148, + "w": 5, + "h": 3 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 117, + "y": 148, + "w": 6, + "h": 3 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 123, + "y": 148, + "w": 4, + "h": 3 + } + ] + }, + { + "name": "rail.horizontal", + "region": [ + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 1, + "y": 104, + "w": 60, + "h": 15 + } + ] + }, + { + "name": "slider.horizontal.normal", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 120, + "w": 4, + "h": 5 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 120, + "w": 53, + "h": 5 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 58, + "y": 120, + "w": 3, + "h": 5 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 125, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 125, + "w": 53, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 58, + "y": 125, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 131, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 131, + "w": 53, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 58, + "y": 131, + "w": 3, + "h": 4 + } + ] + }, + { + "name": "slider.horizontal.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 136, + "w": 4, + "h": 5 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 136, + "w": 53, + "h": 5 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 58, + "y": 136, + "w": 3, + "h": 5 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 141, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 141, + "w": 53, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 58, + "y": 141, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 147, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 147, + "w": 53, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 58, + "y": 147, + "w": 3, + "h": 4 + } + ] + }, + { + "name": "slider.horizontal.depressed", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 1, + "y": 152, + "w": 4, + "h": 5 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 5, + "y": 152, + "w": 53, + "h": 5 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 58, + "y": 152, + "w": 3, + "h": 5 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 1, + "y": 157, + "w": 4, + "h": 6 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 5, + "y": 157, + "w": 53, + "h": 6 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 58, + "y": 157, + "w": 3, + "h": 6 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 1, + "y": 163, + "w": 4, + "h": 4 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 5, + "y": 163, + "w": 53, + "h": 4 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 58, + "y": 163, + "w": 3, + "h": 4 + } + ] + }, + { + "name": "input.normal", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 92, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 93, + "y": 1, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 155, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 92, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 93, + "y": 2, + "w": 62, + "h": 21 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 155, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 92, + "y": 23, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 93, + "y": 23, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 155, + "y": 23, + "w": 1, + "h": 1 + } + ], + "text": [ + { + "font": "default", + "color": "#3F3F3F", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 0 + } + ] + }, + { + "name": "input.highlighted", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 157, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 158, + "y": 1, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 220, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 157, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 158, + "y": 2, + "w": 62, + "h": 21 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 220, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 157, + "y": 23, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 158, + "y": 23, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 220, + "y": 23, + "w": 1, + "h": 1 + } + ], + "text": [ + { + "font": "default", + "color": "#3F3F3F", + "hplacement": "left", + "vplacement": "center", + "xoffset": 4, + "yoffset": 0 + } + ] + }, + { + "name": "list", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 92, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 93, + "y": 1, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 155, + "y": 1, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 92, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 93, + "y": 2, + "w": 62, + "h": 21 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 155, + "y": 2, + "w": 1, + "h": 21 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 92, + "y": 23, + "w": 1, + "h": 1 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 93, + "y": 23, + "w": 62, + "h": 1 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 155, + "y": 23, + "w": 1, + "h": 1 + } + ], + "text": [ + { + "font": "default", + "color": "#3F3F3F", + "hplacement": "left", + "vplacement": "top", + "xoffset": 4, + "yoffset": 0 + } + ] + }, + { + "name": "list.selection", + "region": [ + { + "source": "controls", + "hplacement": "left", + "vplacement": "top", + "x": 92, + "y": 49, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "top", + "x": 94, + "y": 49, + "w": 60, + "h": 2 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "top", + "x": 154, + "y": 49, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "stretch", + "x": 92, + "y": 51, + "w": 2, + "h": 19 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "stretch", + "x": 94, + "y": 51, + "w": 60, + "h": 19 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "stretch", + "x": 154, + "y": 51, + "w": 2, + "h": 19 + }, + { + "source": "controls", + "hplacement": "left", + "vplacement": "bottom", + "x": 92, + "y": 70, + "w": 2, + "h": 2 + }, + { + "source": "controls", + "hplacement": "stretch", + "vplacement": "bottom", + "x": 94, + "y": 70, + "w": 60, + "h": 2 + }, + { + "source": "controls", + "hplacement": "right", + "vplacement": "bottom", + "x": 154, + "y": 70, + "w": 2, + "h": 2 + } + ] + } + ] +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Resources/Skins/TitleFont.xnb b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/TitleFont.xnb new file mode 100644 index 000000000..5681b9cba Binary files /dev/null and b/Source/MonoGame.Extended.NuclexGui/Resources/Skins/TitleFont.xnb differ diff --git a/Source/MonoGame.Extended.NuclexGui/Support/EnumHelper.cs b/Source/MonoGame.Extended.NuclexGui/Support/EnumHelper.cs new file mode 100644 index 000000000..f38f76819 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Support/EnumHelper.cs @@ -0,0 +1,74 @@ +using System; + +namespace MonoGame.Extended.NuclexGui.Support +{ + /// Helper methods for enumerations + public static class EnumHelper + { + /// Returns the highest value encountered in an enumeration + /// + /// Enumeration of which the highest value will be returned + /// + /// The highest value in the enumeration + public static T GetHighestValue() where T : IComparable + { + var values = GetValues(); + + // If the enumeration is empty, return nothing + if (values.Length == 0) + return default(T); + + // Look for the highest value in the enumeration. We initialize the highest value + // to the first enumeration value so we don't have to use some arbitrary starting + // value which might actually appear in the enumeration. + var highestValue = values[0]; + for (var index = 1; index < values.Length; ++index) + { + if (values[index].CompareTo(highestValue) > 0) + highestValue = values[index]; + } + + return highestValue; + } + + /// Returns the lowest value encountered in an enumeration + /// + /// Enumeration of which the lowest value will be returned + /// + /// The lowest value in the enumeration + public static T GetLowestValue() where T : IComparable + { + var values = GetValues(); + + // If the enumeration is empty, return nothing + if (values.Length == 0) + return default(T); + + // Look for the lowest value in the enumeration. We initialize the lowest value + // to the first enumeration value so we don't have to use some arbitrary starting + // value which might actually appear in the enumeration. + var lowestValue = values[0]; + for (var index = 1; index < values.Length; ++index) + { + if (values[index].CompareTo(lowestValue) < 0) + lowestValue = values[index]; + } + + return lowestValue; + } + + /// Retrieves a list of all values contained in an enumeration + /// + /// Type of the enumeration whose values will be returned + /// + /// All values contained in the specified enumeration + /// + /// This method produces collectable garbage so it's best to only call it once + /// and cache the result. + /// + public static T[] GetValues() + { + return (T[]) Enum.GetValues(typeof(T)); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Support/WeakReference.cs b/Source/MonoGame.Extended.NuclexGui/Support/WeakReference.cs new file mode 100644 index 000000000..2b81c0a70 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Support/WeakReference.cs @@ -0,0 +1,70 @@ +using System; + +namespace MonoGame.Extended.NuclexGui.Support +{ + /// + /// Type-safe weak reference, referencing an object while still allowing + /// that object to be garbage collected. + /// + public class WeakReference : WeakReference + where TReferencedType : class + { + /// + /// Initializes a new instance of the WeakReference class, referencing + /// the specified object. + /// + /// The object to track or null. + public WeakReference(TReferencedType target) : + base(target) + { + } + + /// + /// Initializes a new instance of the WeakReference class, referencing + /// the specified object optionally using resurrection tracking. + /// + /// An object to track. + /// + /// Indicates when to stop tracking the object. If true, the object is tracked + /// after finalization; if false, the object is only tracked until finalization. + /// + public WeakReference(TReferencedType target, bool trackResurrection) : + base(target, trackResurrection) + { + } + + /// + /// Initializes a new instance of the WeakReference class, using deserialized + /// data from the specified serialization and stream objects. + /// + /// + /// An object that holds all the data needed to serialize or deserialize the + /// current System.WeakReference object. + /// + /// + /// (Reserved) Describes the source and destination of the serialized stream + /// specified by info. + /// + /// + /// The info parameter is null. + /// + /// + /// Gets or sets the object (the target) referenced by the current WeakReference + /// object. + /// + /// + /// Is null if the object referenced by the current System.WeakReference object + /// has been garbage collected; otherwise, a reference to the object referenced + /// by the current System.WeakReference object. + /// + /// + /// The reference to the target object is invalid. This can occur if the current + /// System.WeakReference object has been finalized + /// + public new TReferencedType Target + { + get { return base.Target as TReferencedType; } + set { base.Target = value; } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/UniRectangle.cs b/Source/MonoGame.Extended.NuclexGui/UniRectangle.cs new file mode 100644 index 000000000..1fbd3b564 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/UniRectangle.cs @@ -0,0 +1,196 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.NuclexGui +{ + /// Two-dimensional rectangle of combined fraction and offset coordinates + public struct UniRectangle + { + /// An empty unified rectangle + public static readonly UniRectangle Empty = new UniRectangle(); + + /// X coordinate of the rectangle's left border + public UniScalar Left + { + get { return Location.X; } + set { Location.X = value; } + } + + /// Y coordinate of the rectangle's upper border + public UniScalar Top + { + get { return Location.Y; } + set { Location.Y = value; } + } + + /// X coordinate of the rectangle's right border + public UniScalar Right + { + get { return Location.X + Size.X; } + set { Size.X = value - Location.X; } + } + + /// Y coordinate of the rectangle's lower border + public UniScalar Bottom + { + get { return Location.Y + Size.Y; } + set { Size.Y = value - Location.Y; } + } + + /// Point consisting of the lesser coordinates of the rectangle + public UniVector Min + { + get { return Location; } + set + { + // In short: this.Size += this.Location - value; + // Done for performance reasons + Size.X.Fraction += Location.X.Fraction - value.X.Fraction; + Size.X.Offset += Location.X.Offset - value.X.Offset; + Size.Y.Fraction += Location.Y.Fraction - value.Y.Fraction; + Size.Y.Offset += Location.Y.Offset - value.Y.Offset; + + Location = value; + } + } + + /// Point consisting of the greater coordinates of the rectangle + public UniVector Max + { + get { return Location + Size; } + set + { + // In short: this.Size = value - this.Location; + // Done for performance reasons + Size.X.Fraction = value.X.Fraction - Location.X.Fraction; + Size.X.Offset = value.X.Offset - Location.X.Offset; + Size.Y.Fraction = value.Y.Fraction - Location.X.Fraction; + Size.Y.Offset = value.Y.Offset - Location.Y.Offset; + } + } + + /// The location of the rectangle's upper left corner + public UniVector Location; + + /// The size of the rectangle + public UniVector Size; + + /// Initializes a new rectangle from a location and a size + /// Location of the rectangle's upper left corner + /// Size of the area covered by the rectangle + public UniRectangle(UniVector location, UniVector size) + { + Location = location; + Size = size; + } + + /// Initializes a new rectangle from the provided individual coordinates + /// X coordinate of the rectangle's left border + /// Y coordinate of the rectangle's upper border + /// Width of the area covered by the rectangle + /// Height of the area covered by the rectangle + public UniRectangle(UniScalar x, UniScalar y, UniScalar width, UniScalar height) + { + Location = new UniVector(x, y); + Size = new UniVector(width, height); + } + + /// Converts the rectangle into pure offset coordinates + /// Dimensions of the container the fractional part of the rectangle count for + /// A rectangle with the pure offset coordinates of the rectangle + public RectangleF ToOffset(Vector2 containerSize) + { + return ToOffset(containerSize.X, containerSize.Y); + } + + /// Converts the rectangle into pure offset coordinates + /// Width of the container the fractional part of the rectangle counts for + /// Height of the container the fractional part of the rectangle counts for + /// A rectangle with the pure offset coordinates of the rectangle + public RectangleF ToOffset(float containerWidth, float containerHeight) + { + var leftOffset = Left.Fraction*containerWidth + Left.Offset; + var topOffset = Top.Fraction*containerHeight + Top.Offset; + + return new RectangleF( + leftOffset, + topOffset, + Right.Fraction*containerWidth + Right.Offset - leftOffset, + Bottom.Fraction*containerHeight + Bottom.Offset - topOffset + ); + } + + /// Checks two rectangles for inequality + /// First rectangle to be compared + /// Second rectangle to be compared + /// True if the instances differ or exactly one reference is set to null + public static bool operator !=(UniRectangle first, UniRectangle second) + { + return !(first == second); + } + + /// Checks two rectangles for equality + /// First rectangle to be compared + /// Second rectangle to be compared + /// True if both instances are equal or both references are null + public static bool operator ==(UniRectangle first, UniRectangle second) + { + // For a struct, neither 'first' nor 'second' can be null + return first.Equals(second); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public override bool Equals(object other) + { + if (!(other is UniRectangle)) + return false; + + return Equals((UniRectangle) other); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public bool Equals(UniRectangle other) + { + // For a struct, 'other' cannot be null + return (Location == other.Location) && (Size == other.Size); + } + + /// Obtains a hash code of this instance + /// The hash code of the instance + public override int GetHashCode() + { + return Location.GetHashCode() ^ Size.GetHashCode(); + } + + /// + /// Returns a human-readable string representation for the unified rectangle + /// + /// The human-readable string representation of the unified rectangle + public override string ToString() + { + return string.Format( + "{{Location:{0}, Size:{1}}}", + Location, + Size + ); + } + + /// + /// Moves unified rectangle by the absolute values + /// + public void AbsoluteOffset(float x, float y) + { + Location.X.Offset += x; + Location.Y.Offset += y; + } + + public void FractionalOffset(float x, float y) + { + Location.X.Fraction += x; + Location.Y.Fraction += y; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/UniScalar.cs b/Source/MonoGame.Extended.NuclexGui/UniScalar.cs new file mode 100644 index 000000000..03ce41e58 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/UniScalar.cs @@ -0,0 +1,191 @@ +namespace MonoGame.Extended.NuclexGui +{ + /// Stores a size or location on one axis + /// + /// + /// Any position or size in GUI uses a combined position consisting + /// of a fraction and an offset. The fraction specifies the position or size as a + /// fraction of the parent frame's bounds and usually is in the range between 0.0 and + /// 1.0. The offset simply is the number of pixels to divert from the thusly + /// determined location. + /// + /// + /// Through the use of both fraction and offset, any kind of anchoring behavior can be + /// achieved that normally would require a complex anchoring and docking system as can + /// be seen in System.Windows.Forms. + /// + /// + /// If you, for example, wanted to always place a control 20 pixels from the right + /// border of its parent container, set the fraction of its position to 1.0 (always + /// on the right border) and the offset to -20.0 (go 20 units to the left from there). + /// + /// + /// You can achieve traditional absolute positioning by leaving the fraction at 0.0, + /// which is equivalent to the upper or left border of the parent container. + /// + /// + public struct UniScalar + { + /// A scalar that has been initialized to zero + public static readonly UniScalar Zero = new UniScalar(); + + /// Position of the scalar as fraction of the parent frame's bounds + /// + /// The relative part is normally in the 0.0 .. 1.0 range, denoting the + /// fraction of the parent container's size the scalar will indicate. + /// + public float Fraction; + + /// Offset of the scalar in pixels relative to its fractional position + /// + /// This part is taken literally without paying attention to the size of + /// the parent container the coordinate is used in. + /// + public float Offset; + + /// Initializes a new scalar from an offset only + /// Offset in pixels this scalar indicates + public UniScalar(float offset) : this(0.0f, offset) + { + } + + /// Initializes a new dimension from an absolute and a relative part + /// Fractional position within the parent frame + /// Offset in pixels from the fractional position + public UniScalar(float fraction, float offset) + { + Fraction = fraction; + Offset = offset; + } + + /// Implicitely constructs a scalar using a float as the absolute part + /// Float that will be used for the scalar's absolute value + /// + /// A new scalar constructed with the original float as its absolute part + /// + public static implicit operator UniScalar(float offset) + { + return new UniScalar(offset); + } + + /// Converts the scalar into a pure offset position + /// + /// Absolute dimension of the parent that the relative coordinate relates to + /// + /// + /// The absolute position in the parent container denoted by the dimension + /// + public float ToOffset(float containerSize) + { + return Fraction*containerSize + Offset; + } + + /// Adds one scalar to another + /// Base scalar to add to + /// Scalar to add to the base + /// The result of the addition + public static UniScalar operator +(UniScalar scalar, UniScalar summand) + { + return new UniScalar( + scalar.Fraction + summand.Fraction, + scalar.Offset + summand.Offset + ); + } + + /// Subtracts one scalar from another + /// Base scalar to subtract from + /// Scalar to subtract from the base + /// The result of the subtraction + public static UniScalar operator -(UniScalar scalar, UniScalar subtrahend) + { + return new UniScalar( + scalar.Fraction - subtrahend.Fraction, + scalar.Offset - subtrahend.Offset + ); + } + + /// Divides one scalar by another + /// Base scalar to be divided + /// Divisor to divide by + /// The result of the division + public static UniScalar operator /(UniScalar scalar, UniScalar divisor) + { + return new UniScalar( + scalar.Fraction/divisor.Fraction, + scalar.Offset/divisor.Offset + ); + } + + /// Multiplies one scalar with another + /// Base scalar to be multiplied + /// Factor to multiply by + /// The result of the multiplication + public static UniScalar operator *(UniScalar scalar, UniScalar factor) + { + return new UniScalar( + scalar.Fraction*factor.Fraction, + scalar.Offset*factor.Offset + ); + } + + /// Checks two scalars for inequality + /// First scalar to be compared + /// Second scalar to be compared + /// True if the instances differ or exactly one reference is set to null + public static bool operator !=(UniScalar first, UniScalar second) + { + return !(first == second); + } + + /// Checks two scalars for equality + /// First scalar to be compared + /// Second scalar to be compared + /// True if both instances are equal or both references are null + public static bool operator ==(UniScalar first, UniScalar second) + { + // For a struct, neither 'first' nor 'second' can be null + return first.Equals(second); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public override bool Equals(object other) + { + if (!(other is UniScalar)) + return false; + + return Equals((UniScalar) other); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public bool Equals(UniScalar other) + { + // For a struct, 'other' cannot be null + return (Fraction == other.Fraction) && (Offset == other.Offset); + } + + /// Obtains a hash code of this instance + /// The hash code of the instance + public override int GetHashCode() + { + return Fraction.GetHashCode() ^ Offset.GetHashCode(); + } + + /// + /// Returns a human-readable string representation for the unified scalar + /// + /// The human-readable string representation of the unified scalar + public override string ToString() + { + return string.Format( + "{{{0}% {1}{2}}}", + Fraction*100.0f, + Offset >= 0.0f ? "+" : string.Empty, + Offset + ); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/UniVector.cs b/Source/MonoGame.Extended.NuclexGui/UniVector.cs new file mode 100644 index 000000000..a5dc7ea0f --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/UniVector.cs @@ -0,0 +1,165 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.NuclexGui +{ + /// Stores a two-dimensional position or size + public struct UniVector + { + /// A vector that has been initialized to zero + public static readonly UniVector Zero = new UniVector(); + + /// The vector's X coordinate + public UniScalar X; + + /// The vector's Y coordinate + public UniScalar Y; + + /// Initializes a new vector from the provided components + /// Absolute and relative X coordinate of the vector + /// Absolute and relative Y coordinate of the vector + public UniVector(UniScalar x, UniScalar y) + { + X = x; + Y = y; + } + + /// Converts the vector into pure offset coordinates + /// + /// Dimensions of the container the relative part of the vector counts for + /// + /// An XNA vector with the pure offset coordinates of the vector + public Vector2 ToOffset(Vector2 containerSize) + { + return ToOffset(containerSize.X, containerSize.Y); + } + + /// Converts the vector into pure offset coordinates + /// + /// Width of the container the fractional part of the vector counts for + /// + /// + /// Height of the container the fractional part of the vector counts for + /// + /// An XNA vector with the pure offset coordinates of the vector + public Vector2 ToOffset(float containerWidth, float containerHeight) + { + return new Vector2( + X.Fraction*containerWidth + X.Offset, + Y.Fraction*containerHeight + Y.Offset + ); + } + + /// Adds one vector to another + /// Base vector to add to + /// Vector to add to the base + /// The result of the addition + public static UniVector operator +(UniVector vector, UniVector summand) + { + return new UniVector(vector.X + summand.X, vector.Y + summand.Y); + } + + /// Subtracts one vector from another + /// Base vector to subtract from + /// Vector to subtract from the base + /// The result of the subtraction + public static UniVector operator -(UniVector vector, UniVector subtrahend) + { + return new UniVector(vector.X - subtrahend.X, vector.Y - subtrahend.Y); + } + + /// Divides one vector by another + /// Base vector to be divided + /// Divisor to divide by + /// The result of the division + public static UniVector operator /(UniVector vector, UniVector divisor) + { + return new UniVector(vector.X/divisor.X, vector.Y/divisor.Y); + } + + /// Multiplies one vector with another + /// Base vector to be multiplied + /// Factor to multiply by + /// The result of the multiplication + public static UniVector operator *(UniVector vector, UniVector factor) + { + return new UniVector(vector.X*factor.X, vector.Y*factor.Y); + } + + /// Scales a vector by a scalar factor + /// Factor by which to scale the vector + /// Vector to be Scaled + /// The result of the multiplication + public static UniVector operator *(UniScalar factor, UniVector vector) + { + return new UniVector(factor*vector.X, factor*vector.Y); + } + + /// Scales a vector by a scalar factor + /// Vector to be Scaled + /// Factor by which to scale the vector + /// The result of the multiplication + public static UniVector operator *(UniVector vector, UniScalar factor) + { + return new UniVector(vector.X*factor, vector.Y*factor); + } + + /// Checks two vectors for inequality + /// First vector to be compared + /// Second vector to be compared + /// True if the instances differ or exactly one reference is set to null + public static bool operator !=(UniVector first, UniVector second) + { + return !(first == second); + } + + /// Checks two vectors for equality + /// First vector to be compared + /// Second vector to be compared + /// True if both instances are equal or both references are null + public static bool operator ==(UniVector first, UniVector second) + { + // For a struct, neither 'first' nor 'second' can be null + return first.Equals(second); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public override bool Equals(object other) + { + if (!(other is UniVector)) + return false; + + return Equals((UniVector) other); + } + + /// Checks whether another instance is equal to this instance + /// Other instance to compare to this instance + /// True if the other instance is equal to this instance + public bool Equals(UniVector other) + { + // For a struct, 'other' cannot be null + return (X == other.X) && (Y == other.Y); + } + + /// Obtains a hash code of this instance + /// The hash code of the instance + public override int GetHashCode() + { + return X.GetHashCode() ^ Y.GetHashCode(); + } + + /// + /// Returns a human-readable string representation for the unified vector + /// + /// The human-readable string representation of the unified vector + public override string ToString() + { + return string.Format( + "{{X:{0}, Y:{1}}}", + X, + Y + ); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphics.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphics.cs new file mode 100644 index 000000000..a0e0e9b76 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphics.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + public partial class FlatGuiGraphics : IFlatGuiGraphics, IDisposable + { + /// Width of the caret used for text input + private const float _caretWidth = 2.0f; + + /// Bitmaps containing resources for the GUI + private readonly Dictionary _bitmaps; + + /// Font styles known to the GUI + private readonly Dictionary _fonts; + + /// Types of frames the painter can draw + private readonly Dictionary _frames; + + /// Locates openings between letters in strings + private readonly OpeningLocator _openingLocator; + + /// Rasterizer state used for drawing the GUI + private readonly RasterizerState _rasterizerState; + + /// Manages the scissor rectangle and its assignment time + private readonly ScissorKeeper _scissorManager; + + /// String builder used for various purposes in this class + private readonly StringBuilder _stringBuilder; + + /// Manages the content used to draw the GUI + private ContentManager _contentManager; + + /// Batches GUI elements for faster drawing + private SpriteBatch _spriteBatch; + + /// Initializes a new gui painter + /// + /// Content manager containing the resources for the GUI. The instance takes + /// ownership of the content manager and will dispose it. + /// + /// + /// Stream from which the skin description will be read + /// + public FlatGuiGraphics(ContentManager contentManager, Stream skinStream) + { + var graphicsDeviceService = + (IGraphicsDeviceService) contentManager.ServiceProvider.GetService( + typeof(IGraphicsDeviceService) + ); + + _spriteBatch = new SpriteBatch(graphicsDeviceService.GraphicsDevice); + _contentManager = contentManager; + _openingLocator = new OpeningLocator(); + _stringBuilder = new StringBuilder(64); + _scissorManager = new ScissorKeeper(this); + _rasterizerState = new RasterizerState + { + ScissorTestEnable = true + }; + _fonts = new Dictionary(); + _bitmaps = new Dictionary(); + _frames = new Dictionary(); + + LoadSkin(skinStream); + } + + /// Immediately releases all resources owned by the instance + public void Dispose() + { + if (_contentManager != null) + { + _contentManager.Dispose(); + _contentManager = null; + } + if (_spriteBatch != null) + { + _spriteBatch.Dispose(); + _spriteBatch = null; + } + } + + private void LoadSkin(Stream skinStream) + { + var skin = GuiSkin.FromStream(skinStream); + + foreach (var font in skin.resources.font) + _fonts.Add(font.Name, _contentManager.Load(font.ContentPath)); + + foreach (var texture in skin.resources.bitmap) + _bitmaps.Add(texture.Name, _contentManager.Load(texture.ContentPath)); + + foreach (var frame in skin.frames) + { + if (frame.Regions != null) + { + for (var i = 0; i < frame.Regions.Length; i++) + frame.Regions[i].Texture = _bitmaps[frame.Regions[i].Source]; + + _frames.Add(frame.Name, frame); + } + + for (var i = 0; i < frame.Texts.Length; i++) + _fonts.TryGetValue(frame.Texts[i].Source, out frame.Texts[i].Font); + } + } + + /// + /// Positions a string within a frame according to the positioning instructions + /// stored in the provided text anchor. + /// + /// Text anchor the string will be positioned for + /// Boundaries of the control the string is rendered in + /// String that will be positioned + /// The position of the string within the control + private Vector2 PositionText(ref Frame.Text anchor, RectangleF bounds, string text) + { + var textSize = anchor.Font.MeasureString(text); + float x, y; + + switch (anchor.HorizontalPlacement) + { + case Frame.HorizontalTextAlignment.Left: + { + x = bounds.Left; + break; + } + case Frame.HorizontalTextAlignment.Right: + { + x = bounds.Right - textSize.X; + break; + } + case Frame.HorizontalTextAlignment.Center: + default: + { + x = (bounds.Width - textSize.X)/2.0f + bounds.Left; + break; + } + } + + switch (anchor.VerticalPlacement) + { + case Frame.VerticalTextAlignment.Top: + { + y = bounds.Top; + break; + } + case Frame.VerticalTextAlignment.Bottom: + { + y = bounds.Bottom - textSize.Y; + break; + } + case Frame.VerticalTextAlignment.Center: + default: + { + y = (bounds.Height - textSize.Y)/2.0f + bounds.Top; + break; + } + } + + return new Vector2(Floor(x + anchor.Offset.X), Floor(y + anchor.Offset.Y)); + } + + /// + /// Calculates the absolute pixel position of a rectangle in unified coordinates + /// + /// Bounds of the drawing area in pixels + /// Destination rectangle in unified coordinates + /// + /// The destination rectangle converted to absolute pixel coordinates + /// + private static Rectangle CalculateDestinationRectangle(ref RectangleF bounds, ref UniRectangle destination) + { + var x = (int) (bounds.X + destination.Location.X.Offset); + x += (int) (bounds.Width*destination.Location.X.Fraction); + + var y = (int) (bounds.Y + destination.Location.Y.Offset); + y += (int) (bounds.Height*destination.Location.Y.Fraction); + + var width = (int) destination.Size.X.Offset; + width += (int) (bounds.Width*destination.Size.X.Fraction); + + var height = (int) destination.Size.Y.Offset; + height += (int) (bounds.Height*destination.Size.Y.Fraction); + + return new Rectangle(x, y, width, height); + } + + /// Looks up the frame with the specified name + /// Frame that will be looked up + /// The frame with the specified name + private Frame LookupFrame(string frameName) + { + // Make sure the renderer specified a valid frame name. If someone modifies + // the skin or uses a skin which does not support all required controls, + // this will provide the user with a clear error message. + Frame frame; + if (!_frames.TryGetValue(frameName, out frame)) + throw new ArgumentException("Unknown frame type: '" + frameName + "'", "frameName"); + + return frame; + } + + /// Removes the fractional part from the floating point value + /// Value whose fractional part will be removed + /// The floating point value without its fractional part + private static float Floor(float value) + { + return (float) Math.Floor(value); + } + + /// Manages the scissor rectangle for the GUI graphics interface + private class ScissorKeeper : IDisposable + { + /// GUI graphics interface for which the scissor rectangle is managed + private readonly FlatGuiGraphics _flatGuiGraphics; + + /// Scissor rectangle that was previously assigned to the graphics device + private Rectangle _oldScissorRectangle; + + /// Initializes a new scissor manager + /// GUI graphics interface the scissor rectangle will be managed for + public ScissorKeeper(FlatGuiGraphics flatGuiGraphics) + { + _flatGuiGraphics = flatGuiGraphics; + } + + /// Releases the currently assigned scissor rectangle again + public void Dispose() + { + _flatGuiGraphics.EndSpriteBatch(); + try + { + var graphics = _flatGuiGraphics._spriteBatch.GraphicsDevice; + graphics.ScissorRectangle = _oldScissorRectangle; + } + finally + { + _flatGuiGraphics.BeginSpriteBatch(); + } + } + + /// Assigns the scissor rectangle to the graphics device + /// Scissor rectangle that will be assigned + public void Assign(ref Rectangle clipRegion) + { + _flatGuiGraphics.EndSpriteBatch(); + try + { + var graphics = _flatGuiGraphics._spriteBatch.GraphicsDevice; + _oldScissorRectangle = graphics.ScissorRectangle; + graphics.ScissorRectangle = clipRegion; + } + finally + { + _flatGuiGraphics.BeginSpriteBatch(); + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphicsDrawing.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphicsDrawing.cs new file mode 100644 index 000000000..3744079e4 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiGraphicsDrawing.cs @@ -0,0 +1,235 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + public partial class FlatGuiGraphics + { + /// Sets the clipping region for any future drawing commands + /// Clipping region that will be set + /// + /// An object that will unset the clipping region upon its destruction. + /// + /// + /// Clipping regions can be stacked, though this is not very typical for + /// a game GUI and also not recommended practice due to performance constraints. + /// Unless clipping is implemented in software, setting up a clip region + /// on current hardware requires the drawing queue to be flushed, negatively + /// impacting rendering performance (in technical terms, a clipping region + /// change likely causes 2 more DrawPrimitive() calls from the painter). + /// + public IDisposable SetClipRegion(RectangleF clipRegion) + { + // Cache the integer values of the clipping region's boundaries + var clipX = (int) clipRegion.X; + var clipY = (int) clipRegion.Y; + var clipRight = clipX + (int) clipRegion.Width; + var clipBottom = clipY + (int) clipRegion.Height; + + // Calculate the viewport's right and bottom coordinates + var viewport = _spriteBatch.GraphicsDevice.Viewport; + var viewportRight = viewport.X + viewport.Width; + var viewportBottom = viewport.Y + viewport.Height; + + // Extract the part of the clipping region that lies within the viewport + var scissorRegion = new Rectangle( + Math.Max(clipX, viewport.X), + Math.Max(clipY, viewport.Y), + Math.Min(clipRight, viewportRight) - clipX, + Math.Min(clipBottom, viewportBottom) - clipY + ); + scissorRegion.Width += clipX - scissorRegion.X; + scissorRegion.Height += clipY - scissorRegion.Y; + + // If the clipping region was entirely outside of the viewport (meaning + // the calculated width and/or height are negative), use an empty scissor + // rectangle instead because XNA doesn't like scissor rectangles with + // negative coordinates. + if ((scissorRegion.Width <= 0) || (scissorRegion.Height <= 0)) + scissorRegion = Rectangle.Empty; + + // All done, take over the new scissor rectangle + _scissorManager.Assign(ref scissorRegion); + return _scissorManager; + } + + /// Draws a GUI element onto the drawing buffer + /// Class of the element to draw + /// Region that will be covered by the drawn element + /// + /// + /// GUI elements are the basic building blocks of a GUI: + /// + /// + public void DrawElement(string frameName, RectangleF bounds) + { + var frame = LookupFrame(frameName); + + // Draw all the regions defined for the element. Each region is a small bitmap + // that needs to be blit somewhere into the element to form the element's + // visual representation step by step. + for (var index = 0; index < frame.Regions.Length; ++index) + { + var destinationRegion = CalculateDestinationRectangle(ref bounds, + ref frame.Regions[index].DestinationRegion); + + _spriteBatch.Draw(frame.Regions[index].Texture, destinationRegion, frame.Regions[index].SourceRegion, + Color.White); + } + } + + /// Draws text into the drawing buffer for the specified element + /// Class of the element for which to draw text + /// Region that will be covered by the drawn element + /// Text that will be drawn + public void DrawString(string frameName, RectangleF bounds, string text) + { + var frame = LookupFrame(frameName); + + // Draw the text in all anchor locations defined by the skin + for (var index = 0; index < frame.Texts.Length; ++index) + { + _spriteBatch.DrawString(frame.Texts[index].Font, text, + PositionText(ref frame.Texts[index], bounds, text), frame.Texts[index].Color); + } + } + + public void DrawImage(RectangleF bounds, Texture2D texture, Rectangle sourceRectangle) + { + var destinationRectangle = new Rectangle(); + + if (bounds.Width > bounds.Height) + { + destinationRectangle.Height = Convert.ToInt32(Math.Round(bounds.Height * 0.8)); + destinationRectangle.Width = Convert.ToInt32(Math.Round(bounds.Width * 0.8 * (bounds.Height / sourceRectangle.Height))); + destinationRectangle.X = Convert.ToInt32(Math.Round(bounds.Center.X)) - destinationRectangle.Width / 2; + destinationRectangle.Y = Convert.ToInt32(Math.Round(bounds.Center.Y)) - destinationRectangle.Height / 2; + } + else + { + destinationRectangle.Width = Convert.ToInt32(Math.Round(bounds.Width * 0.8)); + destinationRectangle.Height = Convert.ToInt32(Math.Round(bounds.Height * 0.8 * (bounds.Width / sourceRectangle.Width))); + destinationRectangle.X = Convert.ToInt32(Math.Round(bounds.Center.X)) - destinationRectangle.Width / 2; + destinationRectangle.Y = Convert.ToInt32(Math.Round(bounds.Center.Y)) - destinationRectangle.Height / 2; + } + + _spriteBatch.Draw(texture, destinationRectangle, sourceRectangle, Color.White); + } + + /// Draws a caret for text input at the specified index + /// Class of the element for which to draw a caret + /// Region that will be covered by the drawn element + /// Text for which a caret will be drawn + /// Index the caret will be drawn at + public void DrawCaret(string frameName, RectangleF bounds, string text, int caretIndex) + { + var frame = LookupFrame(frameName); + + _stringBuilder.Remove(0, _stringBuilder.Length); + _stringBuilder.Append(text, 0, caretIndex); + + Vector2 caretPosition, textPosition; + for (var index = 0; index < frame.Texts.Length; ++index) + { + textPosition = PositionText(ref frame.Texts[index], bounds, text); + + caretPosition = frame.Texts[index].Font.MeasureString(_stringBuilder); + caretPosition.X -= _caretWidth; + caretPosition.Y = 0.0f; + + _spriteBatch.DrawString(frame.Texts[index].Font, "|", textPosition + caretPosition, + frame.Texts[index].Color); + } + } + + /// Measures the extents of a string in the frame's area + /// Class of the element whose text will be measured + /// Region that will be covered by the drawn element + /// Text that will be measured + /// + /// The size and extents of the specified string within the frame + /// + public RectangleF MeasureString(string frameName, RectangleF bounds, string text) + { + var frame = LookupFrame(frameName); + + Vector2 size; + if (frame.Texts.Length > 0) + size = frame.Texts[0].Font.MeasureString(text); + else size = Vector2.Zero; + + return new RectangleF(0.0f, 0.0f, size.X, size.Y); + } + + /// + /// Locates the closest gap between two letters to the provided position + /// + /// Class of the element in which to find the gap + /// Region that will be covered by the drawn element + /// Text in which the closest gap will be found + /// Position of which to determien the closest gap + /// The index of the gap the position is closest to + public int GetClosestOpening( + string frameName, RectangleF bounds, string text, Vector2 position + ) + { + var frame = LookupFrame(frameName); + + // Frames can repeat their text in several places. Though this is probably + // not used very often (if at all), it should work here consistently. + + var closestGap = -1; + + for (var index = 0; index < frame.Texts.Length; ++index) + { + var textPosition = PositionText(ref frame.Texts[index], bounds, text); + position.X -= textPosition.X; + position.Y -= textPosition.Y; + + var openingX = position.X; + var openingIndex = _openingLocator.FindClosestOpening( + frame.Texts[index].Font, text, position.X + _caretWidth + ); + + closestGap = openingIndex; + } + + return closestGap; + } + + /// Needs to be called before the GUI drawing process begins + public void BeginDrawing() + { + var graphics = _spriteBatch.GraphicsDevice; + + var viewport = graphics.Viewport; + graphics.ScissorRectangle = new Rectangle(0, 0, viewport.Width, viewport.Height); + + // On Windows Phone 7, if only the GUI is rendered (no other SpriteBatches) + // and the initial spriteBatch.Begin() includes the scissor rectangle, + // nothing will be drawn at all, so we don't use beginSpriteBatch() here + // and instead call SpriteBatch.Begin() ourselves. Care has to be taken + // if something ever gets added to the beginSpriteBatch() method. + _spriteBatch.Begin(); + } + + /// Needs to be called when the GUI drawing process has ended + public void EndDrawing() + { + EndSpriteBatch(); + } + + /// Starts drawing on the sprite batch + private void BeginSpriteBatch() + { + _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, _rasterizerState); + } + + /// Stops drawing on the sprite batch + private void EndSpriteBatch() + { + _spriteBatch.End(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs new file mode 100644 index 000000000..f2145842e --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs @@ -0,0 +1,281 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.NuclexGui.Controls; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + // Having two overloads of the Draw() method, one doing nothing, is confusing + // and should be avoided. Find a better solution. Perhaps we can rely completely + // on the virtualized graphics device here. + + /// Draws traditional flat GUIs using 2D bitmaps + public class FlatGuiVisualizer : IGuiVisualizer, IDisposable + { + /// Helps draw the GUI controls in the hierarchically correct order + /// + /// This is a field and not a local variable because the stack allocates + /// heap memory and we don't want that to happen in a frame-by-frame basis on + /// the compact framework. By reusing the same stack over and over, the amount + /// of heap allocations required will amortize itself. + /// + private readonly Stack _controlStack; + + /// Used to draw the individual building elements of the GUI + private FlatGuiGraphics _flatGuiGraphics; + + /// Avaiable renderers + private readonly Dictionary _renderers; + + /// Initializes a new gui painter for traditional GUIs + /// Content manager that will be used to load the skin resources + /// Stream from which the GUI Visualizer will read the skin description + protected FlatGuiVisualizer(ContentManager contentManager, Stream skinStream) + { + _renderers = new Dictionary(); + + // Obtain default GUI renderers + FetchRenderers(); + + _flatGuiGraphics = new FlatGuiGraphics(contentManager, skinStream); + _controlStack = new Stack(); + } + + /// Immediately releases all resources owned by the instance + public void Dispose() + { + if (_flatGuiGraphics != null) + { + _flatGuiGraphics.Dispose(); + _flatGuiGraphics = null; + } + } + + /// Draws an entire GUI hierarchy + /// Screen containing the GUI that will be drawn + public void Draw(GuiScreen screen) + { + _flatGuiGraphics.BeginDrawing(); + try + { + _controlStack.Push(ControlWithBounds.FromScreen(screen)); + + while (_controlStack.Count > 0) + { + var controlWithBounds = _controlStack.Pop(); + + var currentControl = controlWithBounds.Control; + var currentBounds = controlWithBounds.Bounds; + + // Add the controls in normal order, so the first control in the collection will + // be taken off the stack last, ensuring it's rendered on top of all others. + for (var index = 0; index < currentControl.Children.Count; ++index) + _controlStack.Push(ControlWithBounds.FromControl(currentControl.Children[index], currentBounds)); + + RenderControl(currentControl); + } + } + finally + { + _flatGuiGraphics.EndDrawing(); + } + } + + /// Renders a single control + /// Control that will be rendered + private void RenderControl(GuiControl controlToRender) + { + IControlRendererAdapter renderer = null; + + var controlType = controlToRender.GetType(); + + // If this is an actual instance of the 'Control' class, don't render it. + // Such instances can be used to construct invisible containers, and are most + // prominently embodied in the 'desktop' control that hosts the whole GUI. + if ((controlType == typeof(GuiControl)) || (controlType == typeof(GuiDesktopControl))) + return; + + // Find a renderer for this control. If no renderer for the control itself can + // be found, look for a renderer then can render its base class. This allows + // controls to inherit from existing controls, remaining renderable (but also + // gaining the ability to accept a specialized renderer for the new derived + // control class!). Normally, this loop will finish without any repetitions. + while (controlType != typeof(object)) + { + var found = _renderers.TryGetValue(controlType, out renderer); + if (found) break; + + // Next, try the base class of this type + controlType = controlType.GetTypeInfo().BaseType; + } + + // If we found a renderer, use it to render the control + if (renderer != null) + renderer.Render(controlToRender, _flatGuiGraphics); + } + + private void FetchRenderers() + { + foreach ( + var typeinfo in + typeof(FlatGuiVisualizer).GetTypeInfo().Assembly.DefinedTypes.Where(e => e.IsPublic && !e.IsAbstract)) + { + // If the type doesn't implement the IFlatcontrolRenderer interface, there's + // no chance that it will implement one of the generic control drawers + if (!typeof(IFlatControlRenderer).GetTypeInfo().IsAssignableFrom(typeinfo)) + continue; + + // We also need a default constructor in order to be able to create an instance of this renderer + if (typeinfo.DeclaredConstructors.Count(e => e.IsPublic && (e.GetParameters().Length == 0)) == 0) + continue; + + // Look for the IFlatControlRenderer<> interface in all interfaces implemented this type + var genericType = + typeinfo.ImplementedInterfaces.Where( + e => + e.IsConstructedGenericType && + (e.GetGenericTypeDefinition() == typeof(IFlatControlRenderer<>))).FirstOrDefault(); + if (genericType == default(Type)) continue; + + // Find out which control type the renderer is specialized for + var controlType = genericType.GenericTypeArguments; + + // Do we already have a renderer for this control type? + if (!_renderers.ContainsKey(controlType[0])) + { + // Type of the downcast adapter we need to bring to life + var adapterType = typeof(ControlRendererAdapter<>).MakeGenericType(controlType[0]); + var adapterConstructor = adapterType.GetTypeInfo().DeclaredConstructors.FirstOrDefault(); + + // Now use that constructor to create an instance + var adapterInstance = adapterConstructor.Invoke(new[] {Activator.CreateInstance(typeinfo.AsType())}); + + // Employ the new adapter and thereby the control renderer it adapts + _renderers.Add(controlType[0], (IControlRendererAdapter) adapterInstance); + } + } + } + + /// Initializes a new gui visualizer from a skin stored as a resource + /// Game service provider containing the graphics device service + /// Name of the Json file containing the skin description + public static FlatGuiVisualizer FromResource(IServiceProvider serviceProvider, string skinJsonFile) + { + var assembly = typeof(FlatGuiVisualizer).GetTypeInfo().Assembly; + var resources = assembly.GetManifestResourceNames(); + + if (!resources.Contains(skinJsonFile)) + throw new ArgumentException("Resource '" + skinJsonFile + "' not found", "skinJsonFile"); + + using (var skinStream = assembly.GetManifestResourceStream(skinJsonFile)) + { + var contentManager = new ContentManager(serviceProvider, "Content"); + + try + { + return new FlatGuiVisualizer(contentManager, skinStream); + } + catch (Exception) + { + contentManager.Dispose(); + throw; + } + } + } + + /// Container for a control and its absolute boundaries + private struct ControlWithBounds + { + /// Control stored in the container + public readonly GuiControl Control; + + /// Absolute boundaries of the stored control + public readonly RectangleF Bounds; + + /// Initializes a new control and absolute boundary container + /// Control being store in the container + /// Absolute boundaries the control lives in + public ControlWithBounds(GuiControl control, RectangleF bounds) + { + Control = control; + Bounds = bounds; + } + + /// Builds an absolute boundary container from the provided control + /// Control from which a container will be created + /// Absolute boundaries of the control's parent + /// A new container with the control + public static ControlWithBounds FromControl(GuiControl control, RectangleF containerBounds) + { + containerBounds.X += control.Bounds.Location.X.Fraction*containerBounds.Width; + containerBounds.X += control.Bounds.Location.X.Offset; + containerBounds.Y += control.Bounds.Location.Y.Fraction*containerBounds.Height; + containerBounds.Y += control.Bounds.Location.Y.Offset; + + containerBounds.Width = control.Bounds.Size.X.ToOffset(containerBounds.Width); + containerBounds.Height = control.Bounds.Size.Y.ToOffset(containerBounds.Height); + + return new ControlWithBounds(control, containerBounds); + } + + /// Builds a control and absolute boundary container from a screen + /// Screen whose desktop control and absolute boundaries are used to construct the container + /// A new container with the screen's desktop control + public static ControlWithBounds FromScreen(GuiScreen screen) + { + return new ControlWithBounds(screen.Desktop, screen.Desktop.Bounds.ToOffset(screen.Width, screen.Height)); + } + } + + /// Interface for a generic (typeless) control renderer + internal interface IControlRendererAdapter + { + /// The type of the control renderer being adapted + Type AdaptedType { get; } + + /// Renders the specified control using the provided graphics interface + /// Control that will be rendered + /// Graphics interface that will be used to render the control + void Render(GuiControl controlToRender, IFlatGuiGraphics graphics); + } + + /// + /// Adapter that automatically casts a control down to the renderer's supported + /// control type + /// + /// + /// Type of control the control renderer casts down to + /// + /// + /// This is simply an optimization to avoid invoking the control renderer + /// by reflection (using the Invoke() method) which would require us to construct + /// an object[] array on the heap to pass its arguments. + /// + private class ControlRendererAdapter : IControlRendererAdapter where TControlType : GuiControl + { + /// Control renderer this adapter is performing the downcast for + private readonly IFlatControlRenderer _controlRenderer; + + /// Initializes a new control renderer adapter + /// Control renderer the adapter is used for + public ControlRendererAdapter(IFlatControlRenderer controlRenderer) + { + _controlRenderer = controlRenderer; + } + + /// Renders the specified control using the provided graphics interface + /// Control that will be rendered + /// Graphics interface that will be used to render the control + public void Render(GuiControl controlToRender, IFlatGuiGraphics graphics) + { + _controlRenderer.Render((TControlType) controlToRender, graphics); + } + + /// The type of the control renderer being adapted + public Type AdaptedType => _controlRenderer.GetType(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkin.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkin.cs new file mode 100644 index 000000000..5fc3337b4 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkin.cs @@ -0,0 +1,176 @@ +using System.Collections.Generic; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Newtonsoft.Json; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + /// Frame that can be drawn by the GUI painter + public class Frame + { + /// Modes in which text can be horizontally aligned + public enum HorizontalTextAlignment + { + /// The text's base offset is placed at the left of the frame + /// + /// The base offset is normally identical to the text's leftmost pixel. + /// However, a glyph may have some eccentrics like an arc that extends to + /// the left over the letter's actual starting position. + /// + Left, + + /// + /// The text's ending offset is placed at the right of the frame + /// + /// + /// The ending offset is normally identical to the text's rightmost pixel. + /// However, a glyph may have some eccentrics like an arc that extends to + /// the right over the last letter's actual ending position. + /// + Right, + + /// The text is centered horizontally in the frame + Center + } + + /// Modes in which text can be vertically aligned + public enum VerticalTextAlignment + { + /// The text's baseline is placed at the top of the frame + Top, + + /// The text's baseline is placed at the bottom of the frame + Bottom, + + /// The text's baseline is centered vertically in the frame + Center + } + + [JsonProperty("name")] public string Name; + + /// Regions that need to be drawn to render the frame + [JsonProperty("region")] public Region[] Regions; + + [JsonProperty("text")] + /// Locations where text can be drawn into the frame + public Text[] Texts; + + /// Initializes a new frame + /// Regions needed to be drawn to render the frame + /// Location in the frame where text can be drawn + public Frame(Region[] regions, Text[] texts) + { + Regions = regions; + Texts = texts; + + if (regions == null) + Regions = new Region[0]; + + if (texts == null) + Texts = new Text[0]; + } + + /// Defines a picture region drawn into a frame + public struct Region + { + /// Identification string for the region + /// + /// Used to associate regions with specific behavior + /// + public string Id; + + /// Texture the picture region is taken from + public Texture2D Texture; + + /// Area within the texture containing the picture region + public Rectangle SourceRegion; + + /// Location in the frame where the picture region will be drawn + public UniRectangle DestinationRegion; + + /// Name of the texture the picture region is taken from + public string Source; + } + + /// Describes where within the frame text should be drawn + public struct Text + { + /// Font to use for drawing the text + public SpriteFont Font; + + /// Offset of the text relative to its specified placement + public Point Offset; + + /// Horizontal placement of the text within the frame + public HorizontalTextAlignment HorizontalPlacement; + + /// Vertical placement of the text within the frame + public VerticalTextAlignment VerticalPlacement; + + /// Color the text will have + public Color Color; + + /// Name of the font used for drawing the text + public string Source; + } + } + + public class GuiSkin + { + public GuiSkin() + { + frames = new List(); + resources = new Resources + { + bitmap = new List(), + font = new List() + }; + + } + + public Resources resources { get; set; } + public List frames { get; set; } + + public static GuiSkin FromFile(string path) + { + using (var stream = TitleContainer.OpenStream(path)) + { + return FromStream(stream); + } + } + + public static GuiSkin FromStream(Stream stream) + { + using (var streamReader = new StreamReader(stream)) + { + var json = streamReader.ReadToEnd(); + + var converters = new JsonConverter[] + { + new GuiSkinJsonConverter() + }; + + return JsonConvert.DeserializeObject(json, converters); + } + } + + public class Resources + { + public List font { get; set; } + public List bitmap { get; set; } + + public class Font + { + public string Name { get; set; } + public string ContentPath { get; set; } + } + + public class Bitmap + { + public string Name { get; set; } + public string ContentPath { get; set; } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkinConverters.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkinConverters.cs new file mode 100644 index 000000000..3cb7ec9e1 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/GuiSkinConverters.cs @@ -0,0 +1,236 @@ +using System; +using Microsoft.Xna.Framework; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + public class GuiSkinJsonConverter : JsonConverter + { + /// Width of the frame's bottom border regions + private int _bottomBorderWidth; + + /// Width of the frame's left border regions + private int _leftBorderWidth; + + /// Width of the frame's right border regions + private int _rightBorderWidth; + + /// Width of the frame's top border regions + private int _topBorderWidth; + + public override bool CanConvert(Type objectType) + { + if (objectType == typeof(Frame.Region[])) + return true; + + if (objectType == typeof(Frame.Text)) + return true; + + return false; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, + JsonSerializer serializer) + { + if (objectType == typeof(Frame.Region[])) + return ParseRegions(JArray.Load(reader)); + + if (objectType == typeof(Frame.Text)) + return ParseText(JToken.Load(reader)); + + return (string) reader.Value; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + } + + private Frame.Region[] ParseRegions(JArray jArray) + { + var regions = new Frame.Region[jArray.Count]; + + _leftBorderWidth = 0; + _rightBorderWidth = 0; + _topBorderWidth = 0; + _bottomBorderWidth = 0; + + // Detect borders + foreach (var token in jArray) + { + var hPlacement = token.Value("hplacement"); + var vPlacement = token.Value("vplacement"); + + if (hPlacement == "left") + _leftBorderWidth = Math.Max(_leftBorderWidth, token.Value("w")); + else + { + if (hPlacement == "right") + _rightBorderWidth = Math.Max(_rightBorderWidth, token.Value("w")); + } + + if (vPlacement == "top") + _topBorderWidth = Math.Max(_topBorderWidth, token.Value("h")); + else + { + if (vPlacement == "bottom") + _bottomBorderWidth = Math.Max(_bottomBorderWidth, token.Value("h")); + } + } + + // Parse each region + for (var i = 0; i < regions.Length; i++) + regions[i] = ParseRegion(jArray[i]); + + return regions; + } + + private Frame.Region ParseRegion(JToken token) + { + var region = new Frame.Region(); + + var hAlignment = token.Value("hplacement"); + var vAlignment = token.Value("vplacement"); + var x = token.Value("x"); + var y = token.Value("y"); + var w = token.Value("w"); + var h = token.Value("h"); + + // Assign trivialities + region.Source = token.Value("source"); + region.Id = token.Value("id"); + region.SourceRegion.X = x; + region.SourceRegion.Y = y; + region.SourceRegion.Width = w; + region.SourceRegion.Height = h; + + // Process each region's placement and set up the unified coordinates + CalculateRegionPlacement(GetHorizontalPlacementIndex(hAlignment), w, _leftBorderWidth, _rightBorderWidth, + ref region.DestinationRegion.Location.X, ref region.DestinationRegion.Size.X); + CalculateRegionPlacement(GetVerticalPlacementIndex(vAlignment), h, _topBorderWidth, _bottomBorderWidth, + ref region.DestinationRegion.Location.Y, ref region.DestinationRegion.Size.Y); + + return region; + } + + /// + /// Calculates the unified coordinates a region needs to be placed at + /// + /// + /// Placement index indicating where in a frame the region will be located + /// + /// Width of the region in pixels + /// + /// Width of the border on the lower end of the coordinate range + /// + /// + /// Width of the border on the higher end of the coordinate range + /// + /// + /// Receives the target location of the region in unified coordinates + /// + /// + /// Receives the size of the region in unified coordinates + /// + private void CalculateRegionPlacement( + int placementIndex, int width, + int lowBorderWidth, int highBorderWidth, + ref UniScalar location, ref UniScalar size + ) + { + switch (placementIndex) + { + case -1: + { + // left or top + var gapWidth = lowBorderWidth - width; + + location.Fraction = 0.0f; + location.Offset = gapWidth; + size.Fraction = 0.0f; + size.Offset = width; + break; + } + case +1: + { + // right or bottom + location.Fraction = 1.0f; + location.Offset = -highBorderWidth; + size.Fraction = 0.0f; + size.Offset = width; + break; + } + case 0: + { + // stretch + location.Fraction = 0.0f; + location.Offset = lowBorderWidth; + size.Fraction = 1.0f; + size.Offset = -(highBorderWidth + lowBorderWidth); + break; + } + } + } + + /// Converts a horizontal placement string into a placement index + /// String containing the horizontal placement + /// A placement index that is equivalent to the provided string + private int GetHorizontalPlacementIndex(string placement) + { + switch (placement) + { + case "left": + { + return -1; + } + case "right": + { + return +1; + } + case "stretch": + default: + { + return 0; + } + } + } + + /// Converts a vertical placement string into a placement index + /// String containing the vertical placement + /// A placement index that is equivalent to the provided string + private int GetVerticalPlacementIndex(string placement) + { + switch (placement) + { + case "top": + { + return -1; + } + case "bottom": + { + return +1; + } + case "stretch": + default: + { + return 0; + } + } + } + + private Frame.Text ParseText(JToken token) + { + var text = new Frame.Text + { + Offset = new Point(token.Value("xoffset"), token.Value("yoffset")), + Color = ColorHelper.FromHex(token.Value("color")) + }; + + Enum.TryParse(token.Value("hplacement"), true, out text.HorizontalPlacement); + Enum.TryParse(token.Value("vplacement"), true, out text.VerticalPlacement); + text.Source = token.Value("font"); + + return text; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatControlRenderer.cs new file mode 100644 index 000000000..2ef313788 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatControlRenderer.cs @@ -0,0 +1,19 @@ +using MonoGame.Extended.NuclexGui.Controls; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + /// Interface for a class that renders a control + public interface IFlatControlRenderer + { + } + + /// Interface for a class responsible to render a specific control type + /// Type of control the implementation class will render + public interface IFlatControlRenderer : IFlatControlRenderer where TControlType : GuiControl + { + /// Renders the specified control using the provided graphics interface + /// Control that will be rendered + /// Graphics interface that will be used to draw the control + void Render(TControlType control, IFlatGuiGraphics graphics); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatGuiGraphics.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatGuiGraphics.cs new file mode 100644 index 000000000..11bacfe7a --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/IFlatGuiGraphics.cs @@ -0,0 +1,73 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + /// Provides drawing methods for GUI controls + /// + /// Analogous to System.Drawing.Graphics, but provides specialized methods for + /// drawing a GUI with a dynamic, switchable theme. + /// + public interface IFlatGuiGraphics + { + /// Sets the clipping region for any future drawing commands + /// Clipping region that will be set + /// + /// An object that will unset the clipping region upon its destruction. + /// + /// + /// Clipping regions can be stacked, though this is not very typical for + /// a game GUI and also not recommended practice due to performance constraints. + /// Unless clipping is implemented in software, setting up a clip region + /// on current hardware requires the drawing queue to be flushed, negatively + /// impacting rendering performance (in technical terms, a clipping region + /// change likely causes 2 more DrawPrimitive() calls from the painter). + /// + IDisposable SetClipRegion(RectangleF clipRegion); + + /// Draws a GUI element onto the drawing buffer + /// Class of the element to draw + /// Region that will be covered by the drawn element + /// + /// + /// GUI elements are the basic building blocks of a GUI: + /// + /// + void DrawElement(string frameName, RectangleF bounds); + + /// Draws text into the drawing buffer for the specified element + /// Class of the element for which to draw text + /// Region that will be covered by the drawn element + /// Text that will be drawn + void DrawString(string frameName, RectangleF bounds, string text); + + void DrawImage(RectangleF bounds, Texture2D texture, Rectangle sourceRectangle); + + /// Draws a caret for text input at the specified index + /// Class of the element for which to draw a caret + /// Region that will be covered by the drawn element + /// Text for which a caret will be drawn + /// Index the caret will be drawn at + void DrawCaret(string frameName, RectangleF bounds, string text, int index); + + /// Measures the extents of a string in the frame's area + /// Class of the element whose text will be measured + /// Region that will be covered by the drawn element + /// Text that will be measured + /// + /// The size and extents of the specified string within the frame + /// + RectangleF MeasureString(string frameName, RectangleF bounds, string text); + + /// + /// Locates the closest gap between two letters to the provided position + /// + /// Class of the element in which to find the gap + /// Region that will be covered by the drawn element + /// Text in which the closest gap will be found + /// Position of which to determien the closest gap + /// The index of the gap the position is closest to + int GetClosestOpening(string frameName, RectangleF bounds, string text, Vector2 position); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/OpeningLocator.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/OpeningLocator.cs new file mode 100644 index 000000000..a00413c97 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/OpeningLocator.cs @@ -0,0 +1,96 @@ +using System.Text; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat +{ + /// + /// Locates the opening between characters in a string that is nearest + /// to a user-defined location + /// + /// + /// + /// This is a class rather than a static class to prevent garbage production + /// which would then have to be cleaned up again by the garbage collector. + /// If you create an instance of it and keep reusing it, garbage and allocation + /// will amortize. + /// + /// + /// The method used to calculate the openings seems to be not terribly accurate. + /// As of XNA 3.1, SpriteFonts don't do kerning, so the only thing left would be + /// a variable space appended to the end of characters. This could be compensated + /// for by always appending character with a known length for which no kerning is + /// possible, for example, the pipe sign (|). + /// + /// + internal class OpeningLocator + { + /// Used by GetClosestOpening() to avoid garbage production + private readonly StringBuilder _textBuilder; + + /// Initializes a new text opening locator + public OpeningLocator() + { + _textBuilder = new StringBuilder(64); + } + + /// + /// Locates the opening between two letters that is closest to + /// the specified position + /// + /// Font that opening search will use + /// Text that will be searched for the opening + /// X coordinate closest to which an opening will be found + /// The opening closest to the specified X coordinate + public int FindClosestOpening(SpriteFont font, string text, float x) + { + // Measure the size of the whole string + _textBuilder.Remove(0, _textBuilder.Length); + _textBuilder.Append(text); + var textSize = font.MeasureString(_textBuilder); + + // Run a binary search until to close in on the nearest opening + var left = 0; + var leftX = 0.0f; + var right = text.Length; + var rightX = textSize.X; + for (;;) + { + // Is the provided coordinate outside of our search range? + // -> Opening is to the far left or to the far right. + if (x <= leftX) + return left; + if (x >= rightX) + return right; + + // Do we have only one character left to check? + // -> Opening is either to its left or to its right. + if (right - left <= 1) + { + if (x - leftX <= rightX - x) + return left; + else return right; + } + + // The position of the opening is still not absolutely clear, cut the string + // in the middle of the search range so we can close in further. + var middle = (right + left)/2; + _textBuilder.Remove(middle, right - middle); + textSize = font.MeasureString(_textBuilder); + + // Depending on whether the searched-for position was on the left or right + // of our cut, adjust appropriate side and prepare for another run + if (x < textSize.X) + { + right = middle; + rightX = textSize.X; + } + else + { + _textBuilder.Append(text, middle, right - middle); + left = middle; + leftX = textSize.X; + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatButtonControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatButtonControlRenderer.cs new file mode 100644 index 000000000..47a498cd4 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatButtonControlRenderer.cs @@ -0,0 +1,58 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders button controls in a traditional flat style + public class FlatButtonControlRenderer : IFlatControlRenderer + { + /// Names of the states the button control can be in + /// + /// Storing this as full strings instead of building them dynamically prevents + /// any garbage from forming during rendering. + /// + private static readonly string[] _states = + { + "button.disabled", + "button.normal", + "button.highlighted", + "button.depressed" + }; + + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiButtonControl control, IFlatGuiGraphics graphics) + { + var controlBounds = control.GetAbsoluteBounds(); + + // Determine the style to use for the button + var stateIndex = 0; + if (control.Enabled) + { + if (control.Depressed) + stateIndex = 3; + else + { + if (control.MouseHovering || control.HasFocus) + stateIndex = 2; + else stateIndex = 1; + } + } + + // Draw the button's frame + graphics.DrawElement(_states[stateIndex], controlBounds); + + // If there's image assigned to the button, draw it into the button + if (control.Texture != null) + graphics.DrawImage(controlBounds, control.Texture, control.SourceRectangle); + + // If there's text assigned to the button, draw it into the button + if (!string.IsNullOrEmpty(control.Text)) + graphics.DrawString(_states[stateIndex], controlBounds, control.Text); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatChoiceControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatChoiceControlRenderer.cs new file mode 100644 index 000000000..1d0a4e598 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatChoiceControlRenderer.cs @@ -0,0 +1,71 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders choice controls in a traditional flat style + public class FlatChoiceControlRenderer : IFlatControlRenderer + { + /// Names of the states the choice control can be in + /// + /// Storing this as full strings instead of building them dynamically prevents + /// any garbage from forming during rendering. + /// + private static readonly string[] _states = + { + "radio.off.disabled", + "radio.off.normal", + "radio.off.highlighted", + "radio.off.depressed", + "radio.on.disabled", + "radio.on.normal", + "radio.on.highlighted", + "radio.on.depressed" + }; + + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiChoiceControl control, IFlatGuiGraphics graphics) + { + // Determine the index of the state we're going to display + var stateIndex = control.Selected ? 4 : 0; + if (control.Enabled) + { + if (control.Depressed) + stateIndex += 3; + else + { + if (control.MouseHovering) + stateIndex += 2; + else stateIndex += 1; + } + } + + // Get the pixel coordinates of the region covered by the control on + // the screen + var controlBounds = control.GetAbsoluteBounds(); + var width = controlBounds.Width; + + // Now adjust the bounds to a square of height x height pixels so we can + // render the graphical portion of the choice control + controlBounds.Width = controlBounds.Height; + graphics.DrawElement(_states[stateIndex], controlBounds); + + // If the choice has text assigned to it, render it too + if (!string.IsNullOrEmpty(control.Text)) + { + // Restore the original width, then subtract the region that was covered by + // the graphical portion of the control. + controlBounds.Width = width - controlBounds.Height; + controlBounds.X += controlBounds.Height; + + // Draw the text that was assigned to the choice control + graphics.DrawString(_states[stateIndex], controlBounds, control.Text); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatHorizontalSliderControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatHorizontalSliderControlRenderer.cs new file mode 100644 index 000000000..1407a6252 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatHorizontalSliderControlRenderer.cs @@ -0,0 +1,37 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders horizontal sliders in a traditional flat style + public class FlatHorizontalSliderControlRenderer : IFlatControlRenderer + { + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiHorizontalSliderControl control, IFlatGuiGraphics graphics + ) + { + var controlBounds = control.GetAbsoluteBounds(); + + var thumbWidth = controlBounds.Width*control.ThumbSize; + var thumbX = (controlBounds.Width - thumbWidth)*control.ThumbPosition; + + graphics.DrawElement("rail.horizontal", controlBounds); + + var thumbBounds = new RectangleF(controlBounds.X + thumbX, controlBounds.Y, thumbWidth, controlBounds.Height); + + if (control.ThumbDepressed) + graphics.DrawElement("slider.horizontal.depressed", thumbBounds); + else + { + if (control.MouseOverThumb) + graphics.DrawElement("slider.horizontal.highlighted", thumbBounds); + else graphics.DrawElement("slider.horizontal.normal", thumbBounds); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatInputControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatInputControlRenderer.cs new file mode 100644 index 000000000..4cc45f143 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatInputControlRenderer.cs @@ -0,0 +1,100 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders text input controls in a traditional flat style + public class FlatInputControlRenderer : IFlatControlRenderer, IOpeningLocator + { + /// Style from the skin this renderer uses + private const string _style = "input.normal"; + + // Otherwise the renderer could try to renderer when no frame is being drawn. + // Also, the renderer makes the assumption that all drawing happens through + // one graphics interface only. + + /// Graphics interface we used for the last draw call + private IFlatGuiGraphics _graphics; + + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiInputControl control, IFlatGuiGraphics graphics) + { + var controlBounds = control.GetAbsoluteBounds(); + + // Draw the control's frame and background + graphics.DrawElement(_style, controlBounds); + + using (graphics.SetClipRegion(controlBounds)) + { + var text = control.Text ?? string.Empty; + + // Amount by which the text will be moved within the input box in + // order to keep the caret in view even when the text is wider than + // the input box. + float left = 0; + + // Only scroll the text within the input box when it has the input + // focus and the caret is being shown. + if (control.HasFocus) + { + // Find out where the cursor is from the left end of the text + var stringSize = graphics.MeasureString( + _style, controlBounds, text.Substring(0, control.CaretPosition) + ); + + // Otherwise text will be visible over the frame, which might look bad + // if a skin uses a frame wider than 2 pixels or in a different color + // than the text. + while (stringSize.Width + left > controlBounds.Width) + left -= controlBounds.Width/10.0f; + } + + // Draw the text into the input box + controlBounds.X += left; + graphics.DrawString(_style, controlBounds, control.Text); + + // If the input box is in focus, also draw the caret so the user knows + // where characters will be inserted into the text. + if (control.HasFocus) + { + if (control.MillisecondsSinceLastCaretMovement%500 < 250) + { + graphics.DrawCaret( + "input.normal", controlBounds, control.Text, control.CaretPosition + ); + } + } + } + + // Let the control know that we can provide it with additional informations + // about how its text is being rendered + control.OpeningLocator = this; + _graphics = graphics; + } + + /// + /// Calculates which opening between two letters is closest to a position + /// + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// Text in which the opening will be looked for + /// + /// Position to which the closest opening will be found, + /// should be in absolute coordinates + /// + /// The index of the opening closest to the provided position + public int GetClosestOpening( + RectangleF bounds, string text, Vector2 position + ) + { + return _graphics.GetClosestOpening("input.normal", bounds, text, position); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatLabelControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatLabelControlRenderer.cs new file mode 100644 index 000000000..220423760 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatLabelControlRenderer.cs @@ -0,0 +1,20 @@ +using MonoGame.Extended.NuclexGui.Controls; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders label controls in a traditional flat style + public class FlatLabelControlRenderer : IFlatControlRenderer + { + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiLabelControl control, IFlatGuiGraphics graphics) + { + graphics.DrawString("label", control.GetAbsoluteBounds(), control.Text); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatListControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatListControlRenderer.cs new file mode 100644 index 000000000..026fe10bd --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatListControlRenderer.cs @@ -0,0 +1,130 @@ +using System; +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders text input controls in a traditional flat style + public class FlatListControlRenderer : IFlatControlRenderer, IListRowLocator + { + /// Style used to draw this control + private const string _style = "list"; + + // Otherwise the renderer could try to renderer when no frame is being drawn. + // Also, this way the renderer makes the assumption that all drawing happens + // through one graphics interface only. + + /// Graphics interface we used for the last draw call + private IFlatGuiGraphics _graphics; + + /// Height of a single row in the list + private float _rowHeight = float.NaN; + + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiListControl control, IFlatGuiGraphics graphics) + { + _graphics = graphics; + + var controlBounds = control.GetAbsoluteBounds(); + + graphics.DrawElement(_style, controlBounds); + + // Cache the number of items in the list (as a float, this comes in handy later) + // and the height of a single item when rendered + float totalItems = control.Items.Count; + var rowHeight = GetRowHeight(controlBounds); + + // Number of items (+fraction) fitting into the list's height + var itemsInView = controlBounds.Height/rowHeight; + + // Number of items by which the slider can move up and down + var scrollableArea = Math.Max(totalItems - itemsInView, 0.0f); + + // Index (+fraction) of the item at the top of the list given + // the slider's current position + var scrollPosition = control.Slider.ThumbPosition*scrollableArea; + + // Determine the first and the last item we need to draw + // (no need to draw the whole of the list when only a small subset + // will end up in the clipping area) + var firstItem = (int) scrollPosition; + var lastItem = (int) Math.Ceiling(scrollPosition + itemsInView); + lastItem = Math.Min(lastItem, control.Items.Count); + + // Set up a rectangle we can use to track the bounds of the item + // currently being rendered + var itemBounds = controlBounds; + itemBounds.Y -= (scrollPosition - firstItem)*rowHeight; + itemBounds.Height = rowHeight; + + using (graphics.SetClipRegion(controlBounds)) + { + for (var item = firstItem; item < lastItem; ++item) + { + if (control.SelectedItems.Contains(item)) + graphics.DrawElement("list.selection", itemBounds); + + graphics.DrawString(_style, itemBounds, control.Items[item]); + itemBounds.Y += rowHeight; + } + } + + control.ListRowLocator = this; + } + + /// Calculates the list row the cursor is in + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// + /// Position of the thumb in the list's slider + /// + /// + /// Number of items contained in the list + /// + /// Vertical position of the cursor + /// The row the cursor is over + public int GetRow(RectangleF bounds, float thumbPosition, int itemCount, float y) + { + float totalItems = itemCount; + var rowHeight = GetRowHeight(bounds); + + // Number of items (+fraction) fitting into the list's height + var itemsInView = bounds.Height/rowHeight; + + // Number of items by which the slider can move up and down + var scrollableArea = totalItems - itemsInView; + + // Index (+fraction) of the item at the top of the list given + // the slider's current position + var scrollPosition = thumbPosition*scrollableArea; + + // Calculate the item that should be under the requested Y coordinate + return (int) (y/GetRowHeight(bounds) + scrollPosition); + } + + /// Determines the height of a row displayed in the list + /// + /// Boundaries of the control, should be in absolute coordinates + /// + /// The height of a single row in the list + public float GetRowHeight(RectangleF bounds) + { + // The code below is not optimal, but the XNA SpriteFont isn't very talkative + // when it comes to providing informations about itself ;) + + if (float.IsNaN(_rowHeight)) + { + _rowHeight = _graphics.MeasureString("list", bounds, "qyjpMAW!").Height; + _rowHeight += 2.0f; + } + + return _rowHeight; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatOptionControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatOptionControlRenderer.cs new file mode 100644 index 000000000..de864ac94 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatOptionControlRenderer.cs @@ -0,0 +1,71 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders option controls in a traditional flat style + public class FlatOptionControlRenderer : IFlatControlRenderer + { + /// Names of the states the option control can be in + /// + /// Storing this as full strings instead of building them dynamically prevents + /// any garbage from forming during rendering. + /// + private static readonly string[] _states = + { + "check.off.disabled", + "check.off.normal", + "check.off.highlighted", + "check.off.depressed", + "check.on.disabled", + "check.on.normal", + "check.on.highlighted", + "check.on.depressed" + }; + + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiOptionControl control, IFlatGuiGraphics graphics) + { + // Determine the index of the state we're going to display + var stateIndex = control.Selected ? 4 : 0; + if (control.Enabled) + { + if (control.Depressed) + stateIndex += 3; + else + { + if (control.MouseHovering) + stateIndex += 2; + else stateIndex += 1; + } + } + + // Get the pixel coordinates of the region covered by the control on + // the screen + var controlBounds = control.GetAbsoluteBounds(); + var width = controlBounds.Width; + + // Now adjust the bounds to a square of height x height pixels so we can + // render the graphical portion of the option control + controlBounds.Width = controlBounds.Height; + graphics.DrawElement(_states[stateIndex], controlBounds); + + // If the option has text assigned to it, render it too + if (control.Text != null) + { + // Restore the original width, then subtract the region that was covered by + // the graphical portion of the control. + controlBounds.Width = width - controlBounds.Height; + controlBounds.X += controlBounds.Height; + + // Draw the text that was assigned to the option control + graphics.DrawString(_states[stateIndex], controlBounds, control.Text); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatProgressControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatProgressControlRenderer.cs new file mode 100644 index 000000000..10d877c67 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatProgressControlRenderer.cs @@ -0,0 +1,24 @@ +using MonoGame.Extended.NuclexGui.Controls; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders progress bars in a traditional flat style + public class FlatProgressControlRenderer : IFlatControlRenderer + { + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiProgressControl control, IFlatGuiGraphics graphics) + { + var controlBounds = control.GetAbsoluteBounds(); + graphics.DrawElement("progress", controlBounds); + + controlBounds.Width *= control.Progress; + graphics.DrawElement("progress.bar", controlBounds); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatVerticalSliderControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatVerticalSliderControlRenderer.cs new file mode 100644 index 000000000..d1975ad63 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatVerticalSliderControlRenderer.cs @@ -0,0 +1,40 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders sliders in a traditional flat style + public class FlatVerticalSliderControlRenderer : IFlatControlRenderer + { + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render( + GuiVerticalSliderControl control, IFlatGuiGraphics graphics + ) + { + var controlBounds = control.GetAbsoluteBounds(); + + var thumbHeight = controlBounds.Height*control.ThumbSize; + var thumbY = (controlBounds.Height - thumbHeight)*control.ThumbPosition; + + graphics.DrawElement("rail.vertical", controlBounds); + + var thumbBounds = new RectangleF( + controlBounds.X, controlBounds.Y + thumbY, controlBounds.Width, thumbHeight + ); + + if (control.ThumbDepressed) + graphics.DrawElement("slider.vertical.depressed", thumbBounds); + else + { + if (control.MouseOverThumb) + graphics.DrawElement("slider.vertical.highlighted", thumbBounds); + else graphics.DrawElement("slider.vertical.normal", thumbBounds); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatWindowControlRenderer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatWindowControlRenderer.cs new file mode 100644 index 000000000..22e575d3a --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/Renderers/FlatWindowControlRenderer.cs @@ -0,0 +1,24 @@ +using MonoGame.Extended.NuclexGui.Controls.Desktop; + +namespace MonoGame.Extended.NuclexGui.Visuals.Flat.Renderers +{ + /// Renders window controls in a traditional flat style + public class FlatWindowControlRenderer : IFlatControlRenderer + { + /// + /// Renders the specified control using the provided graphics interface + /// + /// Control that will be rendered + /// + /// Graphics interface that will be used to draw the control + /// + public void Render(GuiWindowControl control, IFlatGuiGraphics graphics) + { + var controlBounds = control.GetAbsoluteBounds(); + graphics.DrawElement("window", controlBounds); + + if (control.Title != null) + graphics.DrawString("window", controlBounds, control.Title); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/IGuiVisualizer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/IGuiVisualizer.cs new file mode 100644 index 000000000..973a7a2a6 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/IGuiVisualizer.cs @@ -0,0 +1,10 @@ +namespace MonoGame.Extended.NuclexGui.Visuals +{ + /// Interface for an exchangeable GUI painter + public interface IGuiVisualizer + { + /// Renders an entire control tree starting at the provided control + /// Screen containing the GUI that will be drawn + void Draw(GuiScreen screen); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.NuclexGui/packages.config b/Source/MonoGame.Extended.NuclexGui/packages.config new file mode 100644 index 000000000..43f6cc686 --- /dev/null +++ b/Source/MonoGame.Extended.NuclexGui/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles.nuspec b/Source/MonoGame.Extended.Particles.nuspec new file mode 100644 index 000000000..36aebfe92 --- /dev/null +++ b/Source/MonoGame.Extended.Particles.nuspec @@ -0,0 +1,33 @@ + + + + + MonoGame.Extended.Particles + $version$ + + A high performance particle system to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Particles + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended particle system + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended/Particles/ColorExtensions.cs b/Source/MonoGame.Extended.Particles/ColorExtensions.cs similarity index 54% rename from Source/MonoGame.Extended/Particles/ColorExtensions.cs rename to Source/MonoGame.Extended.Particles/ColorExtensions.cs index 509887b1d..1d4b4d658 100644 --- a/Source/MonoGame.Extended/Particles/ColorExtensions.cs +++ b/Source/MonoGame.Extended.Particles/ColorExtensions.cs @@ -14,40 +14,40 @@ public static Color ToRgb(this HslColor c) if (s == 0f) return new Color(l, l, l); - h = h / 360f; - var max = l < 0.5f ? l * (1 + s) : (l + s) - (l * s); - var min = 2f * l - max; + h = h/360f; + var max = l < 0.5f ? l*(1 + s) : l + s - l*s; + var min = 2f*l - max; return new Color( - ComponentFromHue(min, max, h + 1f / 3f), + ComponentFromHue(min, max, h + 1f/3f), ComponentFromHue(min, max, h), - ComponentFromHue(min, max, h - 1f / 3f)); + ComponentFromHue(min, max, h - 1f/3f)); } private static float ComponentFromHue(float m1, float m2, float h) { - h = (h + 1f) % 1f; - if (h * 6f < 1) - return m1 + (m2 - m1) * 6f * h; - if (h * 2 < 1) + h = (h + 1f)%1f; + if (h*6f < 1) + return m1 + (m2 - m1)*6f*h; + if (h*2 < 1) return m2; - if (h * 3 < 2) - return m1 + (m2 - m1) * (2f / 3f - h) * 6f; + if (h*3 < 2) + return m1 + (m2 - m1)*(2f/3f - h)*6f; return m1; } public static HslColor ToHsl(this Color c) { - var r = c.R / 255f; - var b = c.B / 255f; - var g = c.G / 255f; + var r = c.R/255f; + var b = c.B/255f; + var g = c.G/255f; var max = Math.Max(Math.Max(r, g), b); var min = Math.Min(Math.Min(r, g), b); var chroma = max - min; var sum = max + min; - var l = sum * 0.5f; + var l = sum*0.5f; if (chroma == 0) return new HslColor(0f, 0f, l); @@ -55,15 +55,18 @@ public static HslColor ToHsl(this Color c) float h; if (r == max) - h = (60 * (g - b) / chroma + 360) % 360; - else if (g == max) - h = 60 * (b - r) / chroma + 120f; + h = (60*(g - b)/chroma + 360)%360; else - h = 60 * (r - g) / chroma + 240f; + { + if (g == max) + h = 60*(b - r)/chroma + 120f; + else + h = 60*(r - g)/chroma + 240f; + } - var s = l <= 0.5f ? chroma / sum : chroma / (2f - sum); + var s = l <= 0.5f ? chroma/sum : chroma/(2f - sum); return new HslColor(h, s, l); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/FastRandomExtensions.cs b/Source/MonoGame.Extended.Particles/FastRandomExtensions.cs new file mode 100644 index 000000000..f5e8ef71b --- /dev/null +++ b/Source/MonoGame.Extended.Particles/FastRandomExtensions.cs @@ -0,0 +1,15 @@ +namespace MonoGame.Extended.Particles +{ + public static class FastRandomExtensions + { + public static void NextColor(this FastRandom random, out HslColor color, Range range) + { + var maxH = range.Max.H >= range.Min.H + ? range.Max.H + : range.Max.H + 360; + color = new HslColor(random.NextSingle(range.Min.H, maxH), + random.NextSingle(range.Min.S, range.Max.S), + random.NextSingle(range.Min.L, range.Max.L)); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/HslColor.cs b/Source/MonoGame.Extended.Particles/HslColor.cs similarity index 53% rename from Source/MonoGame.Extended/Particles/HslColor.cs rename to Source/MonoGame.Extended.Particles/HslColor.cs index 642f95b4f..f93437276 100644 --- a/Source/MonoGame.Extended/Particles/HslColor.cs +++ b/Source/MonoGame.Extended.Particles/HslColor.cs @@ -5,34 +5,34 @@ namespace MonoGame.Extended.Particles { /// - /// An immutable data structure representing a 24bit color composed of separate hue, saturation and lightness channels. + /// An immutable data structure representing a 24bit color composed of separate hue, saturation and lightness channels. /// //[Serializable] - public struct HslColor : IEquatable + public struct HslColor : IEquatable, IComparable { /// - /// Gets the value of the hue channel in degrees. + /// Gets the value of the hue channel in degrees. /// - public float H { get; } - + public readonly float H; + /// - /// Gets the value of the saturation channel. + /// Gets the value of the saturation channel. /// - public float S { get; } + public readonly float S; /// - /// Gets the value of the lightness channel. + /// Gets the value of the lightness channel. /// - public float L { get; } + public readonly float L; private static float NormalizeHue(float h) { - if (h < 0) return h + 360 * ((int)(h / 360) + 1); - return h % 360; + if (h < 0) return h + 360*((int) (h/360) + 1); + return h%360; } /// - /// Initializes a new instance of the structure. + /// Initializes a new instance of the structure. /// /// The value of the hue channel. /// The value of the saturation channel. @@ -46,7 +46,7 @@ public HslColor(float h, float s, float l) : this() } /// - /// Copies the individual channels of the color to the specified memory location. + /// Copies the individual channels of the color to the specified memory location. /// /// The memory location to copy the axis to. public void CopyTo(out HslColor destination) @@ -55,7 +55,7 @@ public void CopyTo(out HslColor destination) } /// - /// Destructures the color, exposing the individual channels. + /// Destructures the color, exposing the individual channels. /// public void Destructure(out float h, out float s, out float l) { @@ -65,11 +65,11 @@ public void Destructure(out float h, out float s, out float l) } /// - /// Exposes the individual channels of the color to the specified matching function. + /// Exposes the individual channels of the color to the specified matching function. /// /// The function which matches the individual channels of the color. /// - /// Thrown if the value passed to the parameter is null. + /// Thrown if the value passed to the parameter is null. /// public void Match(Action callback) { @@ -80,18 +80,18 @@ public void Match(Action callback) } /// - /// Exposes the individual channels of the color to the specified mapping function and returns the - /// result; + /// Exposes the individual channels of the color to the specified mapping function and returns the + /// result; /// /// The type being mapped to. /// - /// A function which maps the color channels to an instance of . + /// A function which maps the color channels to an instance of . /// /// - /// The result of the function when passed the individual X and Y components. + /// The result of the function when passed the individual X and Y components. /// /// - /// Thrown if the value passed to the parameter is null. + /// Thrown if the value passed to the parameter is null. /// public T Map(Func map) { @@ -101,40 +101,52 @@ public T Map(Func map) return map(H, S, L); } + public static HslColor operator +(HslColor a, HslColor b) + { + return new HslColor(a.H + b.H, a.S + b.S, a.L + b.L); + } + + public int CompareTo(HslColor other) + { + // ReSharper disable ImpureMethodCallOnReadonlyValueField + return H.CompareTo(other.H)*100 + S.CompareTo(other.S)*10 + L.CompareTo(L); + // ReSharper restore ImpureMethodCallOnReadonlyValueField + } + /// - /// Determines whether the specified is equal to this instance. + /// Determines whether the specified is equal to this instance. /// - /// The to compare with this instance. + /// The to compare with this instance. /// - /// true if the specified is equal to this instance; otherwise, false. + /// true if the specified is equal to this instance; otherwise, false. /// public override bool Equals(object obj) { if (obj is HslColor) - return Equals((HslColor)obj); + return Equals((HslColor) obj); return base.Equals(obj); } /// - /// Determines whether the specified is equal to this instance. + /// Determines whether the specified is equal to this instance. /// - /// The to compare with this instance. + /// The to compare with this instance. /// - /// true if the specified is equal to this instance; otherwise, false. + /// true if the specified is equal to this instance; otherwise, false. /// public bool Equals(HslColor value) { - return H.Equals(value.H) && - S.Equals(value.S) && - L.Equals(value.L); + // ReSharper disable ImpureMethodCallOnReadonlyValueField + return H.Equals(value.H) && S.Equals(value.S) && L.Equals(value.L); + // ReSharper restore ImpureMethodCallOnReadonlyValueField } /// - /// Returns a hash code for this instance. + /// Returns a hash code for this instance. /// /// - /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. /// public override int GetHashCode() { @@ -144,34 +156,34 @@ public override int GetHashCode() } /// - /// Returns a that represents this instance. + /// Returns a that represents this instance. /// /// - /// A that represents this instance. + /// A that represents this instance. /// public override string ToString() { - return string.Format(CultureInfo.InvariantCulture, "{0}°,{1:P0},{2:P0}", - H.ToString("F1"), (100 * S).ToString("F1"), (100 * L).ToString("F1")); + return string.Format(CultureInfo.InvariantCulture, "H:{0:N1}° S:{1:N1} L:{2:N1}", + H, 100*S, 100*L); } public static HslColor Parse(string s) { var hsl = s.Split(','); - var hue = float.Parse(hsl[0].TrimEnd('°')); - var sat = float.Parse(hsl[1]); - var lig = float.Parse(hsl[2]); + var hue = float.Parse(hsl[0].TrimEnd('°'), CultureInfo.InvariantCulture.NumberFormat); + var sat = float.Parse(hsl[1], CultureInfo.InvariantCulture.NumberFormat); + var lig = float.Parse(hsl[2], CultureInfo.InvariantCulture.NumberFormat); return new HslColor(hue, sat, lig); } /// - /// Implements the operator ==. + /// Implements the operator ==. /// /// The lvalue. /// The rvalue. /// - /// true if the lvalue is equal to the rvalue; otherwise, false. + /// true if the lvalue is equal to the rvalue; otherwise, false. /// public static bool operator ==(HslColor x, HslColor y) { @@ -179,12 +191,12 @@ public static HslColor Parse(string s) } /// - /// Implements the operator !=. + /// Implements the operator !=. /// /// The lvalue. /// The rvalue. /// - /// true if the lvalue is not equal to the rvalue; otherwise, false. + /// true if the lvalue is not equal to the rvalue; otherwise, false. /// public static bool operator !=(HslColor x, HslColor y) { @@ -201,9 +213,9 @@ public static HslColor Lerp(HslColor c1, HslColor c2, float t) // loop around if c2.H < c1.H var h2 = c2.H >= c1.H ? c2.H : c2.H + 360; return new HslColor( - c1.H + t * (h2 - c1.H), - c1.S + t * (c2.S - c1.S), - c1.L + t * (c2.L - c2.L)); + c1.H + t*(h2 - c1.H), + c1.S + t*(c2.S - c1.S), + c1.L + t*(c2.L - c2.L)); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/LineSegment.cs b/Source/MonoGame.Extended.Particles/LineSegment.cs similarity index 54% rename from Source/MonoGame.Extended/Particles/LineSegment.cs rename to Source/MonoGame.Extended.Particles/LineSegment.cs index 5edfe8eac..a3c142265 100644 --- a/Source/MonoGame.Extended/Particles/LineSegment.cs +++ b/Source/MonoGame.Extended.Particles/LineSegment.cs @@ -5,7 +5,7 @@ namespace MonoGame.Extended.Particles { /// - /// Defines a part of a line that is bounded by two distinct end points. + /// Defines a part of a line that is bounded by two distinct end points. /// [StructLayout(LayoutKind.Sequential)] public struct LineSegment : IEquatable @@ -14,7 +14,7 @@ public struct LineSegment : IEquatable internal readonly Vector2 _point2; /// - /// Initializes a new instance of the structure. + /// Initializes a new instance of the structure. /// /// /// @@ -29,12 +29,12 @@ public LineSegment(Vector2 point1, Vector2 point2) public Vector2 Origin => _point1; - public Axis Direction + public Vector2 Direction { get { var coord = _point2 - _point1; - return new Axis(coord.X, coord.Y); + return new Vector2(coord.X, coord.Y); } } @@ -49,36 +49,11 @@ public Vector2 ToVector() return new Vector2(t.X, t.Y); } - public unsafe void CopyTo(float* destination) - { - _point1.CopyTo(destination); - _point2.CopyTo(destination + sizeof(Vector2)); - } - - public void Destructure(out Vector2 point1, out Vector2 point2) - { - point1 = _point1; - point2 = _point2; - } - - public void Match(Action callback) - { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - } - - public T Map(Func map) - { - if (map == null) - throw new ArgumentNullException(nameof(map)); - - return map(_point1, _point2); - } - public bool Equals(LineSegment other) { - return _point1.Equals(other._point1) && - _point2.Equals(other._point2); + // ReSharper disable ImpureMethodCallOnReadonlyValueField + return _point1.Equals(other._point1) && _point2.Equals(other._point2); + // ReSharper restore ImpureMethodCallOnReadonlyValueField } public override bool Equals(object obj) @@ -86,21 +61,17 @@ public override bool Equals(object obj) if (ReferenceEquals(null, obj)) return false; - return obj is LineSegment & Equals((LineSegment)obj); + return obj is LineSegment & Equals((LineSegment) obj); } public override int GetHashCode() { - var hashCode = _point1.GetHashCode(); - - hashCode = (hashCode * 397) ^ _point2.GetHashCode(); - - return hashCode; + return (_point1.GetHashCode()*397) ^ _point2.GetHashCode(); } public override string ToString() { - return $"({_point1.X}:{_point1.Y},{_point2.X}:{_point2.Y})"; + return $"({_point1.X}:{_point1.Y} {_point2.X}:{_point2.Y})"; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/AgeModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/AgeModifier.cs new file mode 100644 index 000000000..3852dd668 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/AgeModifier.cs @@ -0,0 +1,23 @@ +using MonoGame.Extended.Particles.Modifiers.Interpolators; + +namespace MonoGame.Extended.Particles.Modifiers +{ + public class AgeModifier : IModifier + { + public IInterpolator[] Interpolators { get; set; } + + public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) + { + var n = Interpolators.Length; + while (iterator.HasNext) + { + var particle = iterator.Next(); + for (var i = 0; i < n; i++) + { + var interpolator = Interpolators[i]; + interpolator.Update(particle->Age, particle); + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Modifiers/Containers/CircleContainerModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/Containers/CircleContainerModifier.cs similarity index 81% rename from Source/MonoGame.Extended/Particles/Modifiers/Containers/CircleContainerModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/Containers/CircleContainerModifier.cs index 29f30b9dc..f3890ccec 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/Containers/CircleContainerModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/Containers/CircleContainerModifier.cs @@ -11,14 +11,15 @@ public class CircleContainerModifier : IModifier public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { - var radiusSq = Radius * Radius; + var radiusSq = Radius*Radius; while (iterator.HasNext) { var particle = iterator.Next(); var localPos = particle->Position - particle->TriggerPos; var distSq = localPos.LengthSquared(); - var normal = localPos.ToAxis().ToVector2(); + var normal = localPos; + normal.Normalize(); if (Inside) { @@ -32,21 +33,20 @@ public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator SetReflected(distSq, particle, -normal); } - } } private unsafe void SetReflected(float distSq, Particle* particle, Vector2 normal) { - var dist = (float)Math.Sqrt(distSq); + var dist = (float) Math.Sqrt(distSq); var d = dist - Radius; // how far outside the circle is the particle - var twoRestDot = 2 * RestitutionCoefficient * + var twoRestDot = 2*RestitutionCoefficient* Vector2.Dot(particle->Velocity, normal); - particle->Velocity -= twoRestDot * normal; + particle->Velocity -= twoRestDot*normal; // exact computation requires sqrt or goniometrics - particle->Position -= normal * d; + particle->Position -= normal*d; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleContainerModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleContainerModifier.cs similarity index 56% rename from Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleContainerModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleContainerModifier.cs index c3e93ad6d..375f5f738 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleContainerModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleContainerModifier.cs @@ -10,41 +10,46 @@ public sealed class RectangleContainerModifier : IModifier public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { - while (iterator.HasNext) { var particle = iterator.Next(); - var left = particle->TriggerPos.X + Width * -0.5f; - var right = particle->TriggerPos.X + Width * 0.5f; - var top = particle->TriggerPos.Y + Height * -0.5f; - var bottom = particle->TriggerPos.Y + Height * 0.5f; + var left = particle->TriggerPos.X + Width*-0.5f; + var right = particle->TriggerPos.X + Width*0.5f; + var top = particle->TriggerPos.Y + Height*-0.5f; + var bottom = particle->TriggerPos.Y + Height*0.5f; var xPos = particle->Position.X; var xVel = particle->Velocity.X; var yPos = particle->Position.Y; var yVel = particle->Velocity.Y; - if ((int)particle->Position.X < left) + if ((int) particle->Position.X < left) { xPos = left + (left - xPos); - xVel = -xVel * RestitutionCoefficient; + xVel = -xVel*RestitutionCoefficient; } - else if (particle->Position.X > right) + else { - xPos = right - (xPos - right); - xVel = -xVel * RestitutionCoefficient; + if (particle->Position.X > right) + { + xPos = right - (xPos - right); + xVel = -xVel*RestitutionCoefficient; + } } if (particle->Position.Y < top) { yPos = top + (top - yPos); - yVel = -yVel * RestitutionCoefficient; + yVel = -yVel*RestitutionCoefficient; } - else if ((int)particle->Position.Y > bottom) + else { - yPos = bottom - (yPos - bottom); - yVel = -yVel * RestitutionCoefficient; + if ((int) particle->Position.Y > bottom) + { + yPos = bottom - (yPos - bottom); + yVel = -yVel*RestitutionCoefficient; + } } particle->Position = new Vector2(xPos, yPos); particle->Velocity = new Vector2(xVel, yVel); diff --git a/Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs similarity index 54% rename from Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs index 80c6d3443..62c44d7f2 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/Containers/RectangleLoopContainerModifier.cs @@ -12,30 +12,28 @@ public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator while (iterator.HasNext) { var particle = iterator.Next(); - var left = particle->TriggerPos.X + Width * -0.5f; - var right = particle->TriggerPos.X + Width * 0.5f; - var top = particle->TriggerPos.Y + Height * -0.5f; - var bottom = particle->TriggerPos.Y + Height * 0.5f; + var left = particle->TriggerPos.X + Width*-0.5f; + var right = particle->TriggerPos.X + Width*0.5f; + var top = particle->TriggerPos.Y + Height*-0.5f; + var bottom = particle->TriggerPos.Y + Height*0.5f; var xPos = particle->Position.X; var yPos = particle->Position.Y; - if ((int)particle->Position.X < left) - { + if ((int) particle->Position.X < left) xPos = particle->Position.X + Width; - } - else if ((int)particle->Position.X > right) + else { - xPos = particle->Position.X - Width; + if ((int) particle->Position.X > right) + xPos = particle->Position.X - Width; } - if ((int)particle->Position.Y < top) - { + if ((int) particle->Position.Y < top) yPos = particle->Position.Y + Height; - } - else if ((int)particle->Position.Y > bottom) + else { - yPos = particle->Position.Y - Height; + if ((int) particle->Position.Y > bottom) + yPos = particle->Position.Y - Height; } particle->Position = new Vector2(xPos, yPos); } diff --git a/Source/MonoGame.Extended/Particles/Modifiers/DragModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/DragModifier.cs similarity index 69% rename from Source/MonoGame.Extended/Particles/Modifiers/DragModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/DragModifier.cs index 3091ab178..b75bdbf72 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/DragModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/DragModifier.cs @@ -12,11 +12,11 @@ public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator while (iterator.HasNext) { var particle = iterator.Next(); - var drag = -DragCoefficient * Density * particle->Mass * elapsedSeconds; + var drag = -DragCoefficient*Density*particle->Mass*elapsedSeconds; particle->Velocity = new Vector2( - particle->Velocity.X + particle->Velocity.X * drag, - particle->Velocity.Y + particle->Velocity.Y * drag); + particle->Velocity.X + particle->Velocity.X*drag, + particle->Velocity.Y + particle->Velocity.Y*drag); } } } diff --git a/Source/MonoGame.Extended/Particles/Modifiers/IModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/IModifier.cs similarity index 100% rename from Source/MonoGame.Extended/Particles/Modifiers/IModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/IModifier.cs diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs new file mode 100644 index 000000000..20e46f0b3 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs @@ -0,0 +1,23 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + /// + /// Defines a modifier which interpolates the color of a particle over the course of its lifetime. + /// + public sealed class ColorInterpolator : IInterpolator + { + /// + /// Gets or sets the initial color of particles when they are released. + /// + public HslColor InitialColor { get; set; } + + /// + /// Gets or sets the final color of particles when they are retired. + /// + public HslColor FinalColor { get; set; } + + public unsafe void Update(float amount, Particle* particle) + { + particle->Color = HslColor.Lerp(InitialColor, FinalColor, amount); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs new file mode 100644 index 000000000..b9950bd16 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs @@ -0,0 +1,22 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class HueInterpolator : IInterpolator + { + private float _delta; + public float StartValue { get; set; } + + public float EndValue + { + get { return _delta + StartValue; } + set { _delta = value - StartValue; } + } + + public unsafe void Update(float amount, Particle* particle) + { + particle->Color = new HslColor( + amount*_delta + StartValue, + particle->Color.S, + particle->Color.L); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/IInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/IInterpolator.cs new file mode 100644 index 000000000..617f1ff53 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/IInterpolator.cs @@ -0,0 +1,7 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public interface IInterpolator + { + unsafe void Update(float amount, Particle* particle); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs new file mode 100644 index 000000000..0a10f6abf --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs @@ -0,0 +1,19 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class OpacityInterpolator : IInterpolator + { + private float _delta; + public float StartValue { get; set; } + + public float EndValue + { + get { return _delta + StartValue; } + set { _delta = value - StartValue; } + } + + public unsafe void Update(float amount, Particle* particle) + { + particle->Opacity = _delta*amount + StartValue; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs new file mode 100644 index 000000000..8d7d0c74f --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs @@ -0,0 +1,19 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class RotationInterpolator : IInterpolator + { + private float _delta; + public float StartValue { get; set; } + + public float EndValue + { + get { return _delta + StartValue; } + set { _delta = value - StartValue; } + } + + public unsafe void Update(float amount, Particle* particle) + { + particle->Rotation = amount*_delta + StartValue; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs new file mode 100644 index 000000000..95e4ab4e3 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs @@ -0,0 +1,21 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class ScaleInterpolator : IInterpolator + { + private Vector2 _delta; + public Vector2 StartValue { get; set; } + + public Vector2 EndValue + { + get { return _delta + StartValue; } + set { _delta = value - StartValue; } + } + + public unsafe void Update(float amount, Particle* particle) + { + particle->Scale = _delta*amount + StartValue; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Modifiers/LinearGravityModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/LinearGravityModifier.cs similarity index 65% rename from Source/MonoGame.Extended/Particles/Modifiers/LinearGravityModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/LinearGravityModifier.cs index ba6e57512..24b91c485 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/LinearGravityModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/LinearGravityModifier.cs @@ -4,19 +4,19 @@ namespace MonoGame.Extended.Particles.Modifiers { public class LinearGravityModifier : IModifier { - public Axis Direction { get; set; } + public Vector2 Direction { get; set; } public float Strength { get; set; } public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { - var vector = Direction * (Strength * elapsedSeconds); + var vector = Direction*(Strength*elapsedSeconds); while (iterator.HasNext) { var particle = iterator.Next(); particle->Velocity = new Vector2( - particle->Velocity.X + vector.X * particle->Mass, - particle->Velocity.Y + vector.Y * particle->Mass); + particle->Velocity.X + vector.X*particle->Mass, + particle->Velocity.Y + vector.Y*particle->Mass); } } } diff --git a/Source/MonoGame.Extended/Particles/Modifiers/OpacityFastFadeModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/OpacityFastFadeModifier.cs similarity index 100% rename from Source/MonoGame.Extended/Particles/Modifiers/OpacityFastFadeModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/OpacityFastFadeModifier.cs diff --git a/Source/MonoGame.Extended/Particles/Modifiers/RotationModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/RotationModifier.cs similarity index 86% rename from Source/MonoGame.Extended/Particles/Modifiers/RotationModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/RotationModifier.cs index 68f44b5af..f8ddc5bb7 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/RotationModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/RotationModifier.cs @@ -6,7 +6,7 @@ public class RotationModifier : IModifier public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { - var rotationRateDelta = RotationRate * elapsedSeconds; + var rotationRateDelta = RotationRate*elapsedSeconds; while (iterator.HasNext) { diff --git a/Source/MonoGame.Extended/Particles/Modifiers/VelocityColorModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/VelocityColorModifier.cs similarity index 61% rename from Source/MonoGame.Extended/Particles/Modifiers/VelocityColorModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/VelocityColorModifier.cs index b553f6b38..295da5e67 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/VelocityColorModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/VelocityColorModifier.cs @@ -10,27 +10,25 @@ public class VelocityColorModifier : IModifier public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { - var velocityThreshold2 = VelocityThreshold * VelocityThreshold; + var velocityThreshold2 = VelocityThreshold*VelocityThreshold; while (iterator.HasNext) { var particle = iterator.Next(); - var velocity2 = particle->Velocity.X * particle->Velocity.X + - particle->Velocity.Y * particle->Velocity.Y; + var velocity2 = particle->Velocity.X*particle->Velocity.X + + particle->Velocity.Y*particle->Velocity.Y; var deltaColor = VelocityColor - StationaryColor; if (velocity2 >= velocityThreshold2) - { VelocityColor.CopyTo(out particle->Color); - } else { - var t = (float)Math.Sqrt(velocity2) / VelocityThreshold; + var t = (float) Math.Sqrt(velocity2)/VelocityThreshold; particle->Color = new HslColor( - deltaColor.H * t + StationaryColor.H, - deltaColor.S * t + StationaryColor.S, - deltaColor.L * t + StationaryColor.L); + deltaColor.H*t + StationaryColor.H, + deltaColor.S*t + StationaryColor.S, + deltaColor.L*t + StationaryColor.L); } } } diff --git a/Source/MonoGame.Extended.Particles/Modifiers/VelocityModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/VelocityModifier.cs new file mode 100644 index 000000000..77ff68187 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Modifiers/VelocityModifier.cs @@ -0,0 +1,42 @@ +using System; +using MonoGame.Extended.Particles.Modifiers.Interpolators; + +namespace MonoGame.Extended.Particles.Modifiers +{ + public class VelocityModifier + { + public IInterpolator[] Interpolators { get; set; } + + public float VelocityThreshold { get; set; } + + public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) + { + var velocityThreshold2 = VelocityThreshold*VelocityThreshold; + var n = Interpolators.Length; + + while (iterator.HasNext) + { + var particle = iterator.Next(); + var velocity2 = particle->Velocity.LengthSquared(); + + if (velocity2 >= velocityThreshold2) + { + for (var i = 0; i < n; i++) + { + var interpolator = Interpolators[i]; + interpolator.Update(1, particle); + } + } + else + { + var t = (float) Math.Sqrt(velocity2)/VelocityThreshold; + for (var i = 0; i < n; i++) + { + var interpolator = Interpolators[i]; + interpolator.Update(t, particle); + } + } + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Modifiers/VortexModifier.cs b/Source/MonoGame.Extended.Particles/Modifiers/VortexModifier.cs similarity index 82% rename from Source/MonoGame.Extended/Particles/Modifiers/VortexModifier.cs rename to Source/MonoGame.Extended.Particles/Modifiers/VortexModifier.cs index bfd775de6..7816e6a60 100644 --- a/Source/MonoGame.Extended/Particles/Modifiers/VortexModifier.cs +++ b/Source/MonoGame.Extended.Particles/Modifiers/VortexModifier.cs @@ -4,12 +4,11 @@ namespace MonoGame.Extended.Particles.Modifiers { public unsafe class VortexModifier : IModifier { + // Note: not the real-life one + private const float _gravConst = 100000f; public Vector2 Position { get; set; } public float Mass { get; set; } public float MaxSpeed { get; set; } - - // Note: not the real-life one - private const float _gravConst = 100000f; public void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) { @@ -20,9 +19,10 @@ public void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterato var distance2 = diff.LengthSquared(); - var speedGain = _gravConst * Mass / distance2 * elapsedSeconds; + var speedGain = _gravConst*Mass/distance2*elapsedSeconds; // normalize distances and multiply by speedGain - particle->Velocity += diff.ToAxis() * speedGain; + diff.Normalize(); + particle->Velocity += diff*speedGain; } } } diff --git a/Source/MonoGame.Extended.Particles/MonoGame.Extended.Particles.csproj b/Source/MonoGame.Extended.Particles/MonoGame.Extended.Particles.csproj new file mode 100644 index 000000000..b577ed994 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/MonoGame.Extended.Particles.csproj @@ -0,0 +1,95 @@ + + + + + 10.0 + Debug + AnyCPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6} + Library + MonoGame.Extended.Particles + MonoGame.Extended.Particles + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + 6 + true + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Particle.cs b/Source/MonoGame.Extended.Particles/Particle.cs similarity index 100% rename from Source/MonoGame.Extended/Particles/Particle.cs rename to Source/MonoGame.Extended.Particles/Particle.cs diff --git a/Source/MonoGame.Extended/Particles/ParticleBuffer.cs b/Source/MonoGame.Extended.Particles/ParticleBuffer.cs similarity index 85% rename from Source/MonoGame.Extended/Particles/ParticleBuffer.cs rename to Source/MonoGame.Extended.Particles/ParticleBuffer.cs index eb7e98fe3..f38bc2044 100644 --- a/Source/MonoGame.Extended/Particles/ParticleBuffer.cs +++ b/Source/MonoGame.Extended.Particles/ParticleBuffer.cs @@ -5,8 +5,15 @@ namespace MonoGame.Extended.Particles { public class ParticleBuffer : IDisposable { + private readonly ParticleIterator _iterator; private readonly IntPtr _nativePointer; - public int Size { get; } + + // points to the first memory pos after the buffer + protected readonly unsafe Particle* BufferEnd; + + private bool _disposed; + // points to the particle after the last active particle. + protected unsafe Particle* Tail; public unsafe ParticleBuffer(int size) { @@ -14,38 +21,46 @@ public unsafe ParticleBuffer(int size) // add one extra spot in memory for margin between head and tail // so the iterator can see that it's at the end _nativePointer = Marshal.AllocHGlobal(SizeInBytes); - BufferEnd = (Particle*)(_nativePointer + SizeInBytes); - Head = (Particle*)_nativePointer; - Tail = (Particle*)_nativePointer; + BufferEnd = (Particle*) (_nativePointer + SizeInBytes); + Head = (Particle*) _nativePointer; + Tail = (Particle*) _nativePointer; _iterator = new ParticleIterator(this); GC.AddMemoryPressure(SizeInBytes); } - private readonly ParticleIterator _iterator; + public int Size { get; } public ParticleIterator Iterator => _iterator.Reset(); - - // points to the first memory pos after the buffer - protected readonly unsafe Particle* BufferEnd; // pointer to the first particle public unsafe Particle* Head { get; private set; } - // points to the particle after the last active particle. - protected unsafe Particle* Tail; // Number of available particle spots in the buffer public int Available => Size - Count; // current number of particles public int Count { get; private set; } // total size of the buffer - public int SizeInBytes => Particle.SizeInBytes * (Size + 1); + public int SizeInBytes => Particle.SizeInBytes*(Size + 1); // total size of active particles - public int ActiveSizeInBytes => Particle.SizeInBytes * Count; + public int ActiveSizeInBytes => Particle.SizeInBytes*Count; + + public void Dispose() + { + if (!_disposed) + { + Marshal.FreeHGlobal(_nativePointer); + _disposed = true; + + GC.RemoveMemoryPressure(Particle.SizeInBytes*Size); + } + + GC.SuppressFinalize(this); + } /// - /// Release the given number of particles or the most available. - /// Returns a started iterator to iterate over the new particles. + /// Release the given number of particles or the most available. + /// Returns a started iterator to iterate over the new particles. /// public unsafe ParticleIterator Release(int releaseQuantity) { @@ -66,7 +81,7 @@ public unsafe void Reclaim(int number) Head += number; if (Head >= BufferEnd) - Head -= (Size + 1); + Head -= Size + 1; } public void CopyTo(IntPtr destination) @@ -84,24 +99,10 @@ public void CopyToReverse(IntPtr destination) } } - [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] + [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, + SetLastError = false)] public static extern void memcpy(IntPtr dest, IntPtr src, int count); - private bool _disposed; - - public void Dispose() - { - if (!_disposed) - { - Marshal.FreeHGlobal(_nativePointer); - _disposed = true; - - GC.RemoveMemoryPressure(Particle.SizeInBytes * Size); - } - - GC.SuppressFinalize(this); - } - ~ParticleBuffer() { Dispose(); @@ -112,7 +113,6 @@ public class ParticleIterator private readonly ParticleBuffer _buffer; private unsafe Particle* _current; - public unsafe bool HasNext => _current != _buffer.Tail; public int Total; @@ -121,6 +121,8 @@ public ParticleIterator(ParticleBuffer buffer) _buffer = buffer; } + public unsafe bool HasNext => _current != _buffer.Tail; + public unsafe ParticleIterator Reset() { _current = _buffer.Head; @@ -144,11 +146,10 @@ internal unsafe ParticleIterator Reset(int offset) var p = _current; _current++; if (_current == _buffer.BufferEnd) - _current = (Particle*)_buffer._nativePointer; + _current = (Particle*) _buffer._nativePointer; return p; } } - } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/ParticleEffect.cs b/Source/MonoGame.Extended.Particles/ParticleEffect.cs similarity index 99% rename from Source/MonoGame.Extended/Particles/ParticleEffect.cs rename to Source/MonoGame.Extended.Particles/ParticleEffect.cs index 294277754..5631973d9 100644 --- a/Source/MonoGame.Extended/Particles/ParticleEffect.cs +++ b/Source/MonoGame.Extended.Particles/ParticleEffect.cs @@ -5,14 +5,14 @@ namespace MonoGame.Extended.Particles { public class ParticleEffect { - public string Name { get; set; } - public ParticleEmitter[] Emitters { get; set; } - public ParticleEffect() { Emitters = new ParticleEmitter[0]; } + public string Name { get; set; } + public ParticleEmitter[] Emitters { get; set; } + public int ActiveParticles => Emitters.Sum(t => t.ActiveParticles); public void FastForward(Vector2 position, float seconds, float triggerPeriod) diff --git a/Source/MonoGame.Extended/Particles/ParticleEmitter.cs b/Source/MonoGame.Extended.Particles/ParticleEmitter.cs similarity index 67% rename from Source/MonoGame.Extended/Particles/ParticleEmitter.cs rename to Source/MonoGame.Extended.Particles/ParticleEmitter.cs index fb4f0118c..52929da0e 100644 --- a/Source/MonoGame.Extended/Particles/ParticleEmitter.cs +++ b/Source/MonoGame.Extended.Particles/ParticleEmitter.cs @@ -6,28 +6,33 @@ namespace MonoGame.Extended.Particles { - public unsafe class ParticleEmitter : IDisposable + public unsafe class ParticleEmitter : Transform2D, IDisposable { - public ParticleEmitter(int capacity, TimeSpan term, Profile profile) + private readonly FastRandom _random = new FastRandom(); + private readonly float _term; + internal readonly ParticleBuffer Buffer; + private bool _autoTrigger; + + private float _totalSeconds; + + public ParticleEmitter(TextureRegion2D textureRegion, int capacity, TimeSpan term, Profile profile, + bool autoTrigger = true) { if (profile == null) throw new ArgumentNullException(nameof(profile)); - _term = (float)term.TotalSeconds; + _term = (float) term.TotalSeconds; + _autoTrigger = autoTrigger; + TextureRegion = textureRegion; Buffer = new ParticleBuffer(capacity); - Offset = new Vector2(); + Offset = Vector2.Zero; Profile = profile; Modifiers = new IModifier[0]; ModifierExecutionStrategy = ParticleModifierExecutionStrategy.Serial; Parameters = new ParticleReleaseParameters(); } - private readonly float _term; - - private float _totalSeconds; - internal readonly ParticleBuffer Buffer; - public int ActiveParticles => Buffer.Count; public Vector2 Offset { get; set; } public IModifier[] Modifiers { get; set; } @@ -37,6 +42,12 @@ public ParticleEmitter(int capacity, TimeSpan term, Profile profile) public ParticleReleaseParameters Parameters { get; set; } public TextureRegion2D TextureRegion { get; set; } + public void Dispose() + { + Buffer.Dispose(); + GC.SuppressFinalize(this); + } + private void ReclaimExpiredParticles() { var iterator = Buffer.Iterator; @@ -56,12 +67,18 @@ private void ReclaimExpiredParticles() Buffer.Reclaim(expired); } - public void Update(float elapsedSeconds) + public bool Update(float elapsedSeconds) { + if (_autoTrigger) + { + Trigger(); + _autoTrigger = false; + } + _totalSeconds += elapsedSeconds; if (Buffer.Count == 0) - return; + return false; ReclaimExpiredParticles(); @@ -70,29 +87,33 @@ public void Update(float elapsedSeconds) while (iterator.HasNext) { var particle = iterator.Next(); - particle->Age = (_totalSeconds - particle->Inception) / _term; - - particle->Position = particle->Position + particle->Velocity * elapsedSeconds; + particle->Age = (_totalSeconds - particle->Inception)/_term; + particle->Position = particle->Position + particle->Velocity*elapsedSeconds; } ModifierExecutionStrategy.ExecuteModifiers(Modifiers, elapsedSeconds, iterator); + return true; } - public void Trigger(Vector2 position) + public void Trigger() { - var numToRelease = FastRand.NextInteger(Parameters.Quantity); + Trigger(Position); + } + public void Trigger(Vector2 position) + { + var numToRelease = _random.Next(Parameters.Quantity); Release(position + Offset, numToRelease); } public void Trigger(LineSegment line) { - var numToRelease = FastRand.NextInteger(Parameters.Quantity); + var numToRelease = _random.Next(Parameters.Quantity); var lineVector = line.ToVector(); for (var i = 0; i < numToRelease; i++) { - var offset = lineVector * FastRand.NextSingle(); + var offset = lineVector*_random.NextSingle(); Release(line.Origin + offset, 1); } } @@ -105,39 +126,31 @@ private void Release(Vector2 position, int numToRelease) { var particle = iterator.Next(); - Axis heading; + Vector2 heading; Profile.GetOffsetAndHeading(out particle->Position, out heading); particle->Age = 0f; particle->Inception = _totalSeconds; - particle->Position += position; - particle->TriggerPos = position; - var speed = FastRand.NextSingle(Parameters.Speed); + var speed = _random.NextSingle(Parameters.Speed); - particle->Velocity = heading * speed; + particle->Velocity = heading*speed; - FastRand.NextColor(out particle->Color, Parameters.Color); + _random.NextColor(out particle->Color, Parameters.Color); - particle->Opacity = FastRand.NextSingle(Parameters.Opacity); - var scale = FastRand.NextSingle(Parameters.Scale); + particle->Opacity = _random.NextSingle(Parameters.Opacity); + var scale = _random.NextSingle(Parameters.Scale); particle->Scale = new Vector2(scale, scale); - particle->Rotation = FastRand.NextSingle(Parameters.Rotation); - particle->Mass = FastRand.NextSingle(Parameters.Mass); + particle->Rotation = _random.NextSingle(Parameters.Rotation); + particle->Mass = _random.NextSingle(Parameters.Mass); } } - public void Dispose() - { - Buffer.Dispose(); - GC.SuppressFinalize(this); - } - ~ParticleEmitter() { Dispose(); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/SpriteBatchExtensions.cs b/Source/MonoGame.Extended.Particles/ParticleExtensions.cs similarity index 64% rename from Source/MonoGame.Extended/Particles/SpriteBatchExtensions.cs rename to Source/MonoGame.Extended.Particles/ParticleExtensions.cs index 0cdf285fa..d0b502dd0 100644 --- a/Source/MonoGame.Extended/Particles/SpriteBatchExtensions.cs +++ b/Source/MonoGame.Extended.Particles/ParticleExtensions.cs @@ -4,18 +4,23 @@ namespace MonoGame.Extended.Particles { - public static class SpriteBatchExtensions + public static class ParticleExtensions { public static void Draw(this SpriteBatch spriteBatch, ParticleEffect effect) { foreach (var emitter in effect.Emitters) - Draw(spriteBatch, emitter); + UnsafeDraw(spriteBatch, emitter); } - private static unsafe void Draw(SpriteBatch spriteBatch, ParticleEmitter emitter) + public static void Draw(this SpriteBatch spriteBatch, ParticleEmitter emitter) + { + UnsafeDraw(spriteBatch, emitter); + } + + private static unsafe void UnsafeDraw(SpriteBatch spriteBatch, ParticleEmitter emitter) { var textureRegion = emitter.TextureRegion; - var origin = new Vector2(textureRegion.Width / 2f, textureRegion.Height / 2f); + var origin = new Vector2(textureRegion.Width/2f, textureRegion.Height/2f); var iterator = emitter.Buffer.Iterator; while (iterator.HasNext) @@ -26,10 +31,10 @@ private static unsafe void Draw(SpriteBatch spriteBatch, ParticleEmitter emitter if (spriteBatch.GraphicsDevice.BlendState == BlendState.AlphaBlend) color *= particle->Opacity; else - color.A = (byte)(particle->Opacity * 255); + color.A = (byte) (particle->Opacity*255); var position = new Vector2(particle->Position.X, particle->Position.Y); - var scale = new Vector2(particle->Scale.X / textureRegion.Width, particle->Scale.Y / textureRegion.Height); + var scale = new Vector2(particle->Scale.X/textureRegion.Width, particle->Scale.Y/textureRegion.Height); var particleColor = new Color(color, particle->Opacity); var rotation = particle->Rotation; diff --git a/Source/MonoGame.Extended/Particles/ParticleModifierExecutionStrategy.cs b/Source/MonoGame.Extended.Particles/ParticleModifierExecutionStrategy.cs similarity index 79% rename from Source/MonoGame.Extended/Particles/ParticleModifierExecutionStrategy.cs rename to Source/MonoGame.Extended.Particles/ParticleModifierExecutionStrategy.cs index dc03a8e59..7c80efdfe 100644 --- a/Source/MonoGame.Extended/Particles/ParticleModifierExecutionStrategy.cs +++ b/Source/MonoGame.Extended.Particles/ParticleModifierExecutionStrategy.cs @@ -7,14 +7,16 @@ namespace MonoGame.Extended.Particles public abstract class ParticleModifierExecutionStrategy { - internal abstract void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, ParticleBuffer.ParticleIterator iterator); - public static ParticleModifierExecutionStrategy Serial = new SerialModifierExecutionStrategy(); public static ParticleModifierExecutionStrategy Parallel = new ParallelModifierExecutionStrategy(); + internal abstract void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, + ParticleBuffer.ParticleIterator iterator); + internal class SerialModifierExecutionStrategy : ParticleModifierExecutionStrategy { - internal override void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) + internal override void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, + ParticleBuffer.ParticleIterator iterator) { foreach (var modifier in modifiers) modifier.Update(elapsedSeconds, iterator.Reset()); @@ -23,7 +25,8 @@ internal override void ExecuteModifiers(IEnumerable modifiers, float internal class ParallelModifierExecutionStrategy : ParticleModifierExecutionStrategy { - internal override void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) + internal override void ExecuteModifiers(IEnumerable modifiers, float elapsedSeconds, + ParticleBuffer.ParticleIterator iterator) { TPL.Parallel.ForEach(modifiers, modifier => modifier.Update(elapsedSeconds, iterator.Reset())); } diff --git a/Source/MonoGame.Extended.Particles/ParticleReleaseParameters.cs b/Source/MonoGame.Extended.Particles/ParticleReleaseParameters.cs new file mode 100644 index 000000000..cd8a20bc3 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/ParticleReleaseParameters.cs @@ -0,0 +1,26 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Particles +{ + public class ParticleReleaseParameters + { + public ParticleReleaseParameters() + { + Quantity = 1; + Speed = new Range(-1f, 1f); + Color = new Range(new HslColor(0f, 0.5f, 0.5f), new HslColor(360f, 0.5f, 0.5f)); + Opacity = new Range(0f, 1f); + Scale = new Range(1f, 10f); + Rotation = new Range(-MathHelper.Pi, MathHelper.Pi); + Mass = 1f; + } + + public Range Quantity { get; set; } + public Range Speed { get; set; } + public Range Color { get; set; } + public Range Opacity { get; set; } + public Range Scale { get; set; } + public Range Rotation { get; set; } + public Range Mass { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/BoxFillProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/BoxFillProfile.cs similarity index 55% rename from Source/MonoGame.Extended/Particles/Profiles/BoxFillProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/BoxFillProfile.cs index c95c13cd1..e36371357 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/BoxFillProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/BoxFillProfile.cs @@ -7,12 +7,12 @@ public class BoxFillProfile : Profile public float Width { get; set; } public float Height { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - offset = new Vector2(FastRand.NextSingle(Width * -0.5f, Width * 0.5f), - FastRand.NextSingle(Height * -0.5f, Height * 0.5f)); + offset = new Vector2(Random.NextSingle(Width*-0.5f, Width*0.5f), + Random.NextSingle(Height*-0.5f, Height*0.5f)); - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/BoxProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/BoxProfile.cs similarity index 51% rename from Source/MonoGame.Extended/Particles/Profiles/BoxProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/BoxProfile.cs index 73d343192..7d31984c5 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/BoxProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/BoxProfile.cs @@ -7,25 +7,25 @@ public class BoxProfile : Profile public float Width { get; set; } public float Height { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - switch (FastRand.NextInteger(3)) + switch (Random.Next(3)) { case 0: // Left - offset = new Vector2(Width*-0.5f, FastRand.NextSingle(Height*-0.5f, Height*0.5f)); + offset = new Vector2(Width*-0.5f, Random.NextSingle(Height*-0.5f, Height*0.5f)); break; case 1: // Top - offset = new Vector2(FastRand.NextSingle(Width*-0.5f, Width*0.5f), Height*-0.5f); + offset = new Vector2(Random.NextSingle(Width*-0.5f, Width*0.5f), Height*-0.5f); break; case 2: // Right - offset = new Vector2(Width*0.5f, FastRand.NextSingle(Height*-0.5f, Height*0.5f)); + offset = new Vector2(Width*0.5f, Random.NextSingle(Height*-0.5f, Height*0.5f)); break; default: // Bottom - offset = new Vector2(FastRand.NextSingle(Width*-0.5f, Width*0.5f), Height*0.5f); + offset = new Vector2(Random.NextSingle(Width*-0.5f, Width*0.5f), Height*0.5f); break; } - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Profiles/BoxUniformProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/BoxUniformProfile.cs new file mode 100644 index 000000000..9f766dcf6 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Profiles/BoxUniformProfile.cs @@ -0,0 +1,32 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Particles.Profiles +{ + public class BoxUniformProfile : Profile + { + public float Width { get; set; } + public float Height { get; set; } + + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) + { + var value = Random.Next((int) (2*Width + 2*Height)); + + if (value < Width) // Top + offset = new Vector2(Random.NextSingle(Width*-0.5f, Width*0.5f), Height*-0.5f); + else + { + if (value < 2*Width) // Bottom + offset = new Vector2(Random.NextSingle(Width*-0.5f, Width*0.5f), Height*0.5f); + else + { + if (value < 2*Width + Height) // Left + offset = new Vector2(Width*-0.5f, Random.NextSingle(Height*-0.5f, Height*0.5f)); + else // Right + offset = new Vector2(Width*0.5f, Random.NextSingle(Height*-0.5f, Height*0.5f)); + } + } + + Random.NextUnitVector(out heading); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/CircleProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/CircleProfile.cs similarity index 56% rename from Source/MonoGame.Extended/Particles/Profiles/CircleProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/CircleProfile.cs index 0f36da6b7..ef7f11e7a 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/CircleProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/CircleProfile.cs @@ -7,18 +7,18 @@ public class CircleProfile : Profile public float Radius { get; set; } public CircleRadiation Radiate { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - var dist = FastRand.NextSingle(0f, Radius); + var dist = Random.NextSingle(0f, Radius); - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); offset = Radiate == CircleRadiation.In - ? new Vector2(-heading.X * dist, -heading.Y * dist) - : new Vector2(heading.X * dist, heading.Y * dist); + ? new Vector2(-heading.X*dist, -heading.Y*dist) + : new Vector2(heading.X*dist, heading.Y*dist); if (Radiate == CircleRadiation.None) - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/LineProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/LineProfile.cs similarity index 61% rename from Source/MonoGame.Extended/Particles/Profiles/LineProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/LineProfile.cs index 5cea301e8..bea584e9d 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/LineProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/LineProfile.cs @@ -4,14 +4,14 @@ namespace MonoGame.Extended.Particles.Profiles { public class LineProfile : Profile { - public Axis Axis { get; set; } + public Vector2 Axis { get; set; } public float Length { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - var vect = Axis * FastRand.NextSingle(Length * -0.5f, Length * 0.5f); + var vect = Axis*Random.NextSingle(Length*-0.5f, Length*0.5f); offset = new Vector2(vect.X, vect.Y); - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/PointProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/PointProfile.cs similarity index 77% rename from Source/MonoGame.Extended/Particles/Profiles/PointProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/PointProfile.cs index 583a65056..04456d3f2 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/PointProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/PointProfile.cs @@ -4,11 +4,11 @@ namespace MonoGame.Extended.Particles.Profiles { public class PointProfile : Profile { - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { offset = Vector2.Zero; - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/Profile.cs b/Source/MonoGame.Extended.Particles/Profiles/Profile.cs similarity index 54% rename from Source/MonoGame.Extended/Particles/Profiles/Profile.cs rename to Source/MonoGame.Extended.Particles/Profiles/Profile.cs index f194edaf8..f3a2da85f 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/Profile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/Profile.cs @@ -4,53 +4,60 @@ namespace MonoGame.Extended.Particles.Profiles { public abstract class Profile //: ICloneable { - public abstract void GetOffsetAndHeading(out Vector2 offset, out Axis heading); + public enum CircleRadiation + { + None, + In, + Out + } + + protected FastRandom Random { get; } = new FastRandom(); + + public abstract void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading); public object Clone() { return MemberwiseClone(); } - public enum CircleRadiation { None, In, Out } - public static Profile Point() { return new PointProfile(); } - public static Profile Line(Axis axis, float length) + public static Profile Line(Vector2 axis, float length) { - return new LineProfile { Axis = axis, Length = length }; + return new LineProfile {Axis = axis, Length = length}; } public static Profile Ring(float radius, CircleRadiation radiate) { - return new RingProfile { Radius = radius, Radiate = radiate }; + return new RingProfile {Radius = radius, Radiate = radiate}; } public static Profile Box(float width, float height) { - return new BoxProfile { Width = width, Height = height }; + return new BoxProfile {Width = width, Height = height}; } public static Profile BoxFill(float width, float height) { - return new BoxFillProfile { Width = width, Height = height }; + return new BoxFillProfile {Width = width, Height = height}; } public static Profile BoxUniform(float width, float height) { - return new BoxUniformProfile { Width = width, Height = height }; + return new BoxUniformProfile {Width = width, Height = height}; } public static Profile Circle(float radius, CircleRadiation radiate) { - return new CircleProfile { Radius = radius, Radiate = radiate }; + return new CircleProfile {Radius = radius, Radiate = radiate}; } - public static Profile Spray(Axis direction, float spread) + public static Profile Spray(Vector2 direction, float spread) { - return new SprayProfile { Direction = direction, Spread = spread }; + return new SprayProfile {Direction = direction, Spread = spread}; } public override string ToString() @@ -58,4 +65,4 @@ public override string ToString() return GetType().ToString(); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Particles/Profiles/RingProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/RingProfile.cs similarity index 65% rename from Source/MonoGame.Extended/Particles/Profiles/RingProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/RingProfile.cs index 897e0116d..d5ac2f82d 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/RingProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/RingProfile.cs @@ -8,21 +8,21 @@ public class RingProfile : Profile public float Radius { get; set; } public CircleRadiation Radiate { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - FastRand.NextUnitVector(out heading); + Random.NextUnitVector(out heading); switch (Radiate) { case CircleRadiation.In: - offset = new Vector2(-heading.X * Radius, -heading.Y * Radius); + offset = new Vector2(-heading.X*Radius, -heading.Y*Radius); break; case CircleRadiation.Out: - offset = new Vector2(heading.X * Radius, heading.Y * Radius); + offset = new Vector2(heading.X*Radius, heading.Y*Radius); break; case CircleRadiation.None: - offset = new Vector2(heading.X * Radius, heading.Y * Radius); - FastRand.NextUnitVector(out heading); + offset = new Vector2(heading.X*Radius, heading.Y*Radius); + Random.NextUnitVector(out heading); break; default: throw new ArgumentOutOfRangeException($"{Radiate} is not supported"); diff --git a/Source/MonoGame.Extended/Particles/Profiles/SprayProfile.cs b/Source/MonoGame.Extended.Particles/Profiles/SprayProfile.cs similarity index 50% rename from Source/MonoGame.Extended/Particles/Profiles/SprayProfile.cs rename to Source/MonoGame.Extended.Particles/Profiles/SprayProfile.cs index de6538892..6259210f5 100644 --- a/Source/MonoGame.Extended/Particles/Profiles/SprayProfile.cs +++ b/Source/MonoGame.Extended.Particles/Profiles/SprayProfile.cs @@ -5,17 +5,16 @@ namespace MonoGame.Extended.Particles.Profiles { public class SprayProfile : Profile { - public Axis Direction { get; set; } + public Vector2 Direction { get; set; } public float Spread { get; set; } - public override void GetOffsetAndHeading(out Vector2 offset, out Axis heading) + public override void GetOffsetAndHeading(out Vector2 offset, out Vector2 heading) { - var angle = Direction.Map((x, y) => (float)Math.Atan2(y, x)); - - angle = FastRand.NextSingle(angle - Spread / 2f, angle + Spread / 2f); + var angle = (float) Math.Atan2(Direction.Y, Direction.X); + angle = Random.NextSingle(angle - Spread/2f, angle + Spread/2f); offset = Vector2.Zero; - heading = new Axis((float)Math.Cos(angle), (float)Math.Sin(angle)); + heading = new Vector2((float) Math.Cos(angle), (float) Math.Sin(angle)); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Particles/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Particles/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..1940879e3 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Particles")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Particles")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Particles/packages.config b/Source/MonoGame.Extended.Particles/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Particles/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.SceneGraphs.nuspec b/Source/MonoGame.Extended.SceneGraphs.nuspec new file mode 100644 index 000000000..3c407ba2d --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs.nuspec @@ -0,0 +1,33 @@ + + + + + MonoGame.Extended.SceneGraphs + $version$ + + A scene graph system to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.SceneGraphs + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended scene graph node entity + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.SceneGraphs/ISceneEntity.cs b/Source/MonoGame.Extended.SceneGraphs/ISceneEntity.cs new file mode 100644 index 000000000..e5e79115b --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs/ISceneEntity.cs @@ -0,0 +1,11 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Shapes; +using MonoGame.Extended.TextureAtlases; + +namespace MonoGame.Extended.SceneGraphs +{ + + + +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.SceneGraphs/MonoGame.Extended.SceneGraphs.csproj b/Source/MonoGame.Extended.SceneGraphs/MonoGame.Extended.SceneGraphs.csproj new file mode 100644 index 000000000..6a45fd79a --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs/MonoGame.Extended.SceneGraphs.csproj @@ -0,0 +1,59 @@ + + + + + 10.0 + Debug + AnyCPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C} + Library + MonoGame.Extended.SceneGraphs + MonoGame.Extended.SceneGraphs + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.SceneGraphs/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.SceneGraphs/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7e68b61ea --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.SceneGraphs")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.SceneGraphs")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended/SceneGraphs/SceneEntityCollection.cs b/Source/MonoGame.Extended.SceneGraphs/SceneEntityCollection.cs similarity index 60% rename from Source/MonoGame.Extended/SceneGraphs/SceneEntityCollection.cs rename to Source/MonoGame.Extended.SceneGraphs/SceneEntityCollection.cs index 32c340833..4010ad17b 100644 --- a/Source/MonoGame.Extended/SceneGraphs/SceneEntityCollection.cs +++ b/Source/MonoGame.Extended.SceneGraphs/SceneEntityCollection.cs @@ -2,7 +2,7 @@ namespace MonoGame.Extended.SceneGraphs { - public class SceneEntityCollection : Collection + public class SceneEntityCollection : Collection { } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/SceneGraphs/SceneGraph.cs b/Source/MonoGame.Extended.SceneGraphs/SceneGraph.cs similarity index 83% rename from Source/MonoGame.Extended/SceneGraphs/SceneGraph.cs rename to Source/MonoGame.Extended.SceneGraphs/SceneGraph.cs index a10612f25..543934461 100644 --- a/Source/MonoGame.Extended/SceneGraphs/SceneGraph.cs +++ b/Source/MonoGame.Extended.SceneGraphs/SceneGraph.cs @@ -22,11 +22,11 @@ public SceneNode GetSceneNodeAt(float x, float y) { var node = RootNode; - while (node != null && node.GetBoundingRectangle().Contains(x, y)) + while ((node != null) && node.BoundingRectangle.Contains(new Point2(x, y))) { - var childNode = node.Children.FirstOrDefault(c => c.GetBoundingRectangle().Contains(x, y)); + var childNode = node.Children.FirstOrDefault(c => c.BoundingRectangle.Contains(new Point2(x, y))); - if(childNode != null) + if (childNode != null) node = childNode; else return node; diff --git a/Source/MonoGame.Extended/SceneGraphs/SpriteBatchExtensions.cs b/Source/MonoGame.Extended.SceneGraphs/SceneGraphExtensions.cs similarity index 83% rename from Source/MonoGame.Extended/SceneGraphs/SpriteBatchExtensions.cs rename to Source/MonoGame.Extended.SceneGraphs/SceneGraphExtensions.cs index 017d12825..1aa5997b2 100644 --- a/Source/MonoGame.Extended/SceneGraphs/SpriteBatchExtensions.cs +++ b/Source/MonoGame.Extended.SceneGraphs/SceneGraphExtensions.cs @@ -2,7 +2,7 @@ namespace MonoGame.Extended.SceneGraphs { - public static class SpriteBatchExtensions + public static class SceneGraphExtensions { public static void Draw(this SpriteBatch spriteBatch, SceneGraph sceneGraph) { diff --git a/Source/MonoGame.Extended.SceneGraphs/SceneNode.cs b/Source/MonoGame.Extended.SceneGraphs/SceneNode.cs new file mode 100644 index 000000000..ce64d2429 --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs/SceneNode.cs @@ -0,0 +1,90 @@ +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Sprites; + +namespace MonoGame.Extended.SceneGraphs +{ + public class SceneNode : Transform2D + { + public SceneNode(string name) + : this(name, Vector2.Zero, 0, Vector2.One) + { + } + + public SceneNode(string name, Vector2 position, float rotation = 0) + : this(name, position, rotation, Vector2.One) + { + } + + public SceneNode(string name, Vector2 position, float rotation, Vector2 scale) + { + Name = name; + Position = position; + Rotation = rotation; + Scale = scale; + + Children = new SceneNodeCollection(this); + Entities = new SceneEntityCollection(); + } + + public SceneNode() + : this(null, Vector2.Zero, 0, Vector2.One) + { + } + + public string Name { get; set; } + + public SceneNodeCollection Children { get; } + public SceneEntityCollection Entities { get; } + public object Tag { get; set; } + + public RectangleF BoundingRectangle + { + get + { + var rectangles = Entities + .Select(e => + { + var r = e.BoundingRectangle; + r.Offset(WorldPosition); + return r; + }) + .Concat(Children.Select(i => i.BoundingRectangle)) + .ToArray(); + var x0 = rectangles.Min(r => r.Left); + var y0 = rectangles.Min(r => r.Top); + var x1 = rectangles.Max(r => r.Right); + var y1 = rectangles.Max(r => r.Bottom); + + return new RectangleF(x0, y0, x1 - x0, y1 - y0); + } + } + + public void Draw(SpriteBatch spriteBatch) + { + foreach (var drawable in Entities.OfType()) + { + if (drawable.IsVisible) + { + var texture = drawable.TextureRegion.Texture; + var sourceRectangle = drawable.TextureRegion.Bounds; + var position = WorldPosition + drawable.Position; + var rotation = WorldRotation + drawable.Rotation; + var scale = WorldScale*drawable.Scale; + + spriteBatch.Draw(texture, position, sourceRectangle, drawable.Color, rotation, drawable.Origin, + scale, drawable.Effect, 0); + } + } + + foreach (var child in Children) + child.Draw(spriteBatch); + } + + public override string ToString() + { + return $"name: {Name}, position: {Position}, rotation: {Rotation}, scale: {Scale}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/SceneGraphs/SceneNodeCollection.cs b/Source/MonoGame.Extended.SceneGraphs/SceneNodeCollection.cs similarity index 100% rename from Source/MonoGame.Extended/SceneGraphs/SceneNodeCollection.cs rename to Source/MonoGame.Extended.SceneGraphs/SceneNodeCollection.cs diff --git a/Source/MonoGame.Extended.SceneGraphs/packages.config b/Source/MonoGame.Extended.SceneGraphs/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.SceneGraphs/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tests/Shapes/CircleTests.cs b/Source/MonoGame.Extended.Tests/Shapes/CircleTests.cs deleted file mode 100644 index 65a5559a7..000000000 --- a/Source/MonoGame.Extended.Tests/Shapes/CircleTests.cs +++ /dev/null @@ -1,189 +0,0 @@ -using Microsoft.Xna.Framework; -using MonoGame.Extended.Shapes; -using NUnit.Framework; - -namespace MonoGame.Extended.Tests.Shapes -{ - [TestFixture] - public class CircleTests - { - [Test] - public void Circle_ConstructorsAndProperties() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - - Assert.AreEqual(new CircleF() { Center = new Vector2(200.0f, 300.0f), Radius = 100.0f }, circle); - Assert.AreEqual(200.0f - 100.0f, circle.Left); - Assert.AreEqual(200.0f + 100.0f, circle.Right); - Assert.AreEqual(300.0f - 100.0f, circle.Top); - Assert.AreEqual(300.0f + 100.0f, circle.Bottom); - Assert.AreEqual(new Point(200, 300), circle.Location); - Assert.AreEqual(new Vector2(200.0f, 300.0f), circle.Center); - Assert.AreEqual(100.0f, circle.Radius); - Assert.AreEqual(false, circle.IsEmpty); - Assert.AreEqual(true, new CircleF().IsEmpty); - Assert.AreEqual(new CircleF(), CircleF.Empty); - } - - [Test] - public void Circle_ContainsPoint() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - - var p1 = new Point(-1, -1); - var p2 = new Point(110, 300); - var p3 = new Point(200, 300); - var p4 = new Point(290, 300); - var p5 = new Point(400, 400); - - bool result; - - circle.Contains(ref p1, out result); - Assert.AreEqual(false, result); - circle.Contains(ref p2, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p3, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p4, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p5, out result); - Assert.AreEqual(false, result); - - Assert.AreEqual(false, circle.Contains(p1)); - Assert.AreEqual(true, circle.Contains(p2)); - Assert.AreEqual(true, circle.Contains(p3)); - Assert.AreEqual(true, circle.Contains(p4)); - Assert.AreEqual(false, circle.Contains(p5)); - } - - [Test] - public void Circle_ContainsVector2() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - - var p1 = new Vector2(-1, -1); - var p2 = new Vector2(110, 300); - var p3 = new Vector2(200, 300); - var p4 = new Vector2(290, 300); - var p5 = new Vector2(400, 400); - - bool result; - - circle.Contains(ref p1, out result); - Assert.AreEqual(false, result); - circle.Contains(ref p2, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p3, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p4, out result); - Assert.AreEqual(true, result); - circle.Contains(ref p5, out result); - Assert.AreEqual(false, result); - - Assert.AreEqual(false, circle.Contains(p1)); - Assert.AreEqual(true, circle.Contains(p2)); - Assert.AreEqual(true, circle.Contains(p3)); - Assert.AreEqual(true, circle.Contains(p4)); - Assert.AreEqual(false, circle.Contains(p5)); - } - - [Test] - public void Circle_ContainsFloats() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - - float x1 = -1; float y1 = -1; - float x2 = 110; float y2 = 300; - float x3 = 200; float y3 = 300; - float x4 = 290; float y4 = 300; - float x5 = 400; float y5 = 400; - - Assert.AreEqual(false, circle.Contains(x1, y1)); - Assert.AreEqual(true, circle.Contains(x2, y2)); - Assert.AreEqual(true, circle.Contains(x3, y3)); - Assert.AreEqual(true, circle.Contains(x4, y4)); - Assert.AreEqual(false, circle.Contains(x5, y5)); - } - - [Test] - public void Circle_ContainsCircle() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - var circle1 = new CircleF(new Vector2(199.0f, 299.0f), 100.0f); - var circle2 = new CircleF(new Vector2(200.0f, 300.0f), 25.0f); - var circle3 = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - var circle4 = new CircleF(new Vector2(201.0f, 301.0f), 100.0f); - - bool result; - - circle.Contains(ref circle1, out result); - Assert.AreEqual(false, result); - - circle.Contains(ref circle2, out result); - Assert.AreEqual(true, result); - - circle.Contains(ref circle3, out result); - Assert.AreEqual(true, result); - - circle.Contains(ref circle4, out result); - Assert.AreEqual(false, result); - - Assert.AreEqual(false, circle.Contains(circle1)); - Assert.AreEqual(true, circle.Contains(circle2)); - Assert.AreEqual(true, circle.Contains(circle3)); - Assert.AreEqual(false, circle.Contains(circle4)); - } - - [Test] - public void Circle_IntersectionTest() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - - var circ1 = new CircleF(new Vector2(350.0f, 300.0f), 100.0f); - var circ2 = new CircleF(new Vector2(400.0f, 300.0f), 100.0f); - - var rect1 = new Rectangle(250, 300, 100, 100); - var rect2 = new Rectangle(400, 300, 100, 100); - - bool result; - - circle.Intersects(ref circ1, out result); - Assert.AreEqual(true, result); - circle.Intersects(ref circ2, out result); - Assert.AreEqual(false, result); - - circle.Intersects(ref rect1, out result); - Assert.AreEqual(true, result); - circle.Intersects(ref rect2, out result); - Assert.AreEqual(false, result); - - Assert.AreEqual(true, circle.Intersects(circ1)); - Assert.AreEqual(false, circle.Intersects(circ2)); - - Assert.AreEqual(true, circle.Intersects(rect1)); - Assert.AreEqual(false, circle.Intersects(rect2)); - } - - [Test] - public void Circle_Inflate() - { - var circle = new CircleF(new Vector2(200.0f, 300.0f), 100.0f); - circle.Inflate(100.0f); - Assert.AreEqual(new CircleF(new Vector2(100.0f, 200.0f), 300.0f), circle); - } - - [Test] - public void Circle_ToStringTest() - { - Assert.AreEqual("{Center:{X:200 Y:300} Radius:100}", new CircleF(new Vector2(200.0f, 300.0f), 100.0f).ToString()); - } - - [Test] - public void Circle_ToRectangleTest() - { - var actual = new CircleF(center: new Vector2(200, 300), radius: 100).ToRectangle(); - var expected = new Rectangle(100, 200, 200, 200); - Assert.AreEqual(expected, actual); - } - } -} diff --git a/Source/MonoGame.Extended.Tiled.nuspec b/Source/MonoGame.Extended.Tiled.nuspec new file mode 100644 index 000000000..f117e622e --- /dev/null +++ b/Source/MonoGame.Extended.Tiled.nuspec @@ -0,0 +1,35 @@ + + + + + MonoGame.Extended.Tiled + $version$ + + Support for Tiled maps to make MonoGame more awesome. See http://www.mapeditor.org + + Dylan Wilson + MonoGame.Extended.Tiled + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended pipeline tiled + + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Tiled/Graphics/Effects/ITiledMapEffect.cs b/Source/MonoGame.Extended.Tiled/Graphics/Effects/ITiledMapEffect.cs new file mode 100644 index 000000000..3f58a782e --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Graphics/Effects/ITiledMapEffect.cs @@ -0,0 +1,9 @@ +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Effects +{ + public interface ITiledMapEffect : IEffectMatrices, ITextureEffect + { + float Alpha { get; set; } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Graphics/Effects/TiledMapEffect.cs b/Source/MonoGame.Extended.Tiled/Graphics/Effects/TiledMapEffect.cs new file mode 100644 index 000000000..39f79f282 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Graphics/Effects/TiledMapEffect.cs @@ -0,0 +1,32 @@ +using System; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Graphics.Effects +{ + public class TiledMapEffect : DefaultEffect, ITiledMapEffect + { + public TiledMapEffect(GraphicsDevice graphicsDevice) + : base(graphicsDevice) + { + Initialize(); + } + + public TiledMapEffect(GraphicsDevice graphicsDevice, byte[] byteCode) + : base(graphicsDevice, byteCode) + { + Initialize(); + } + + public TiledMapEffect(Effect cloneSource) + : base(cloneSource) + { + Initialize(); + } + + private void Initialize() + { + VertexColorEnabled = false; + TextureEnabled = true; + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerAnimatedModel.cs b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerAnimatedModel.cs new file mode 100644 index 000000000..5941d2710 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerAnimatedModel.cs @@ -0,0 +1,26 @@ +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Graphics +{ + public sealed class TiledMapLayerAnimatedModel : TiledMapLayerModel + { + internal TiledMapLayerAnimatedModel(ContentReader reader, TiledMap map) + : base(reader, true) + { + var tilesetFirstGlobalIdentifier = reader.ReadInt32(); + var tileset = map.GetTilesetByTileGlobalIdentifier(tilesetFirstGlobalIdentifier); + + var animatedTilesetTileCount = reader.ReadInt32(); + AnimatedTilesetTiles = new TiledMapTilesetAnimatedTile[animatedTilesetTileCount]; + + for (var i = 0; i < animatedTilesetTileCount; i++) + { + var tileLocalIdentifier = reader.ReadInt32(); + AnimatedTilesetTiles[i] = tileset.GetAnimatedTilesetTileByLocalTileIdentifier(tileLocalIdentifier); + } + } + + public TiledMapTilesetAnimatedTile[] AnimatedTilesetTiles { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerModel.cs b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerModel.cs new file mode 100644 index 000000000..2b5006746 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapLayerModel.cs @@ -0,0 +1,75 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Content; + +namespace MonoGame.Extended.Graphics +{ + public class TiledMapLayerModel : IDisposable + { + public string LayerName { get; } + public Texture2D Texture { get; } + public VertexBuffer VertexBuffer { get; } + public IndexBuffer IndexBuffer { get; } + public int TrianglesCount { get; } + + internal VertexPositionTexture[] Vertices; + + internal TiledMapLayerModel(ContentReader reader, bool isDynamicData = false) + { + var graphicsDevice = reader.GetGraphicsDevice(); + + LayerName = reader.ReadString(); + var textureAssetName = reader.GetRelativeAssetName(reader.ReadString()); + Texture = reader.ContentManager.Load(textureAssetName); + + var vertexCount = reader.ReadInt32(); + var vertices = new VertexPositionTexture[vertexCount]; + for (var i = 0; i < vertexCount; i++) + { + var x = reader.ReadSingle(); + var y = reader.ReadSingle(); + var textureCoordinateX = reader.ReadSingle(); + var textureCoordinateY = reader.ReadSingle(); + vertices[i] = new VertexPositionTexture(new Vector3(x, y, 0), new Vector2(textureCoordinateX, textureCoordinateY)); + } + + if (isDynamicData) + Vertices = vertices; + + VertexBuffer = isDynamicData + ? new DynamicVertexBuffer(graphicsDevice, VertexPositionTexture.VertexDeclaration, vertexCount, BufferUsage.WriteOnly) + : new VertexBuffer(graphicsDevice, VertexPositionTexture.VertexDeclaration, vertexCount, BufferUsage.WriteOnly); + VertexBuffer.SetData(vertices, 0, vertexCount); + + var indexCount = reader.ReadInt32(); + var indices = new ushort[indexCount]; + for (var i = 0; i < indexCount; i++) + { + indices[i] = reader.ReadUInt16(); + } + + IndexBuffer = isDynamicData + ? new DynamicIndexBuffer(graphicsDevice, IndexElementSize.SixteenBits, indexCount, BufferUsage.WriteOnly) + : new IndexBuffer(graphicsDevice, IndexElementSize.SixteenBits, indexCount, BufferUsage.WriteOnly); + IndexBuffer.SetData(indices, 0, indexCount); + + TrianglesCount = indexCount / 3; + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool diposing) + { + if (!diposing) + return; + IndexBuffer.Dispose(); + VertexBuffer.Dispose(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Graphics/TiledMapRenderer.cs b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapRenderer.cs new file mode 100644 index 000000000..e700eb07b --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Graphics/TiledMapRenderer.cs @@ -0,0 +1,170 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Graphics.Effects; +using MonoGame.Extended.Tiled; + +namespace MonoGame.Extended.Graphics +{ + public class TiledMapRenderer : IDisposable + { + private readonly TiledMapEffect _defaultEffect; + private Matrix _worldMatrix = Matrix.Identity; + + /// + /// Gets the associated with this . + /// + /// + /// The associated with this . + /// + public GraphicsDevice GraphicsDevice { get; } + + public TiledMapRenderer(GraphicsDevice graphicsDevice) + { + if (graphicsDevice == null) + throw new ArgumentNullException(nameof(graphicsDevice)); + + GraphicsDevice = graphicsDevice; + + _defaultEffect = new TiledMapEffect(graphicsDevice); + } + + public void Update(TiledMap map, GameTime gameTime) + { + // ReSharper disable once ForCanBeConvertedToForeach + for (var tilesetIndex = 0; tilesetIndex < map.Tilesets.Count; tilesetIndex++) + { + var tileset = map.Tilesets[tilesetIndex]; + // ReSharper disable once ForCanBeConvertedToForeach + for (var animatedTileIndex = 0; animatedTileIndex < tileset.AnimatedTiles.Count; animatedTileIndex++) + { + var animatedTilesetTile = tileset.AnimatedTiles[animatedTileIndex]; + animatedTilesetTile.Update(gameTime); + } + } + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < map.TileLayers.Count; index++) + { + var layer = map.TileLayers[index]; + UpdateAnimatedModels(layer.AnimatedModels); + } + } + + public void Draw(TiledMap map, Matrix? viewMatrix = null, Matrix? projectionMatrix = null, Effect effect = null, float depth = 0.0f) + { + var viewMatrix1 = viewMatrix ?? Matrix.Identity; + var projectionMatrix1 = projectionMatrix ?? Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0, -1); + Draw(map, ref viewMatrix1, ref projectionMatrix1, effect, depth); + } + + public void Draw(TiledMap map, ref Matrix viewMatrix, ref Matrix projectionMatrix, Effect effect = null, float depth = 0.0f) + { + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = 0; index < map.Layers.Count; index++) + { + var layer = map.Layers[index]; + Draw(layer, ref viewMatrix, ref projectionMatrix, effect, depth); + } + } + + public void Draw(TiledMapLayer layer, Matrix? viewMatrix = null, Matrix? projectionMatrix = null, Effect effect = null, float depth = 0.0f) + { + var viewMatrix1 = viewMatrix ?? Matrix.Identity; + var projectionMatrix1 = projectionMatrix ?? Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0, -1); + Draw(layer, ref viewMatrix1, ref projectionMatrix1, effect, depth); + } + + public void Draw(TiledMapLayer layer, ref Matrix viewMatrix, ref Matrix projectionMatrix, Effect effect = null, float depth = 0.0f) + { + if (!layer.IsVisible) + return; + + if (layer is TiledMapObjectLayer) + return; + + _worldMatrix.Translation = new Vector3(layer.OffsetX, layer.OffsetY, depth); + + var effect1 = effect ?? _defaultEffect; + var tiledMapEffect = effect1 as ITiledMapEffect; + if (tiledMapEffect == null) + return; + + foreach (var model in layer.Models) + { +// model-to-world transform + tiledMapEffect.World = _worldMatrix; + tiledMapEffect.View = viewMatrix; + tiledMapEffect.Projection = projectionMatrix; + + // desired alpha + tiledMapEffect.Alpha = layer.Opacity; + + // desired texture + tiledMapEffect.Texture = model.Texture; + + // bind the vertex and index buffer + GraphicsDevice.SetVertexBuffer(model.VertexBuffer); + GraphicsDevice.Indices = model.IndexBuffer; + + // for each pass in our effect + foreach (var pass in effect1.CurrentTechnique.Passes) + { + // apply the pass, effectively choosing which vertex shader and fragment (pixel) shader to use + pass.Apply(); + + // draw the geometry from the vertex buffer / index buffer + GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, model.TrianglesCount); + } + } + } + + // ReSharper disable once ParameterTypeCanBeEnumerable.Local + private static unsafe void UpdateAnimatedModels(TiledMapLayerAnimatedModel[] animatedModels) + { + foreach (var animatedModel in animatedModels) + { + // update the texture coordinates for each animated tile + fixed (VertexPositionTexture* fixedVerticesPointer = animatedModel.Vertices) + { + var verticesPointer = fixedVerticesPointer; + + foreach (var animatedTile in animatedModel.AnimatedTilesetTiles) + { + var currentFrameTextureCoordinates = animatedTile.CurrentAnimationFrame.TextureCoordinates; + + (*verticesPointer++).TextureCoordinate = currentFrameTextureCoordinates[0]; + (*verticesPointer++).TextureCoordinate = currentFrameTextureCoordinates[1]; + (*verticesPointer++).TextureCoordinate = currentFrameTextureCoordinates[2]; + (*verticesPointer++).TextureCoordinate = currentFrameTextureCoordinates[3]; + } + } + + // copy (upload) the updated vertices to the GPU's memory + animatedModel.VertexBuffer.SetData(animatedModel.Vertices, 0, animatedModel.Vertices.Length); + } + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + /// + /// Releases unmanaged and - optionally - managed resources. + /// + /// + /// true to release both managed and unmanaged resources; false to release only + /// unmanaged resources. + /// + protected virtual void Dispose(bool diposing) + { + if (diposing) + _defaultEffect.Dispose(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/MonoGame.Extended.Tiled.csproj b/Source/MonoGame.Extended.Tiled/MonoGame.Extended.Tiled.csproj new file mode 100644 index 000000000..1f5a5aebc --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/MonoGame.Extended.Tiled.csproj @@ -0,0 +1,100 @@ + + + + + 11.0 + Debug + AnyCPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + Library + Properties + MonoGame.Extended + MonoGame.Extended.Tiled + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + 6 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Tiled/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7ef4fee4e --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("MonoGame.Extended.Tiled")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Tiled")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] +[assembly: InternalsVisibleTo("MonoGame.Extended.Content.Pipeline.Tiled")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/ContentReaderExtensions.cs b/Source/MonoGame.Extended.Tiled/Tiled/ContentReaderExtensions.cs new file mode 100644 index 000000000..6a7170640 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/ContentReaderExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public static class ContentReaderExtensions + { + public static void ReadTiledMapProperties(this ContentReader reader, TiledMapProperties properties) + { + var count = reader.ReadInt32(); + + for (var i = 0; i < count; i++) + { + var key = reader.ReadString(); + var value = reader.ReadString(); + properties[key] = value; + } + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs new file mode 100644 index 000000000..1115c634e --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMap : IDisposable + { + private readonly List _imageLayers; + private readonly List _layers; + private readonly Dictionary _layersByName; + private readonly List _objectLayers; + private readonly List _tileLayers; + private readonly List _tilesets; + + public string Name { get; } + public int Width { get; } + public int Height { get; } + public int TileWidth { get; } + public int TileHeight { get; } + public TiledMapTileDrawOrder RenderOrder { get; } + public TiledMapOrientation Orientation { get; } + public TiledMapProperties Properties { get; } + public ReadOnlyCollection Tilesets { get; } + public ReadOnlyCollection Layers { get; } + public ReadOnlyCollection ImageLayers { get; } + public ReadOnlyCollection TileLayers { get; } + public ReadOnlyCollection ObjectLayers { get; } + + public Color? BackgroundColor { get; set; } + + public int WidthInPixels => Width * TileWidth; + public int HeightInPixels => Height * TileHeight; + + private TiledMap() + { + _layers = new List(); + Layers = new ReadOnlyCollection(_layers); + _imageLayers = new List(); + ImageLayers = new ReadOnlyCollection(_imageLayers); + _tileLayers = new List(); + TileLayers = new ReadOnlyCollection(_tileLayers); + _objectLayers = new List(); + ObjectLayers = new ReadOnlyCollection(_objectLayers); + _layersByName = new Dictionary(); + _tilesets = new List(); + Tilesets = new ReadOnlyCollection(_tilesets); + Properties = new TiledMapProperties(); + } + + public TiledMap(string name, int width, int height, int tileWidth, int tileHeight, + TiledMapTileDrawOrder renderOrder, TiledMapOrientation orientation) + : this() + { + Name = name; + Width = width; + Height = height; + TileWidth = tileWidth; + TileHeight = tileHeight; + RenderOrder = renderOrder; + Orientation = orientation; + } + + public void Dispose() + { + foreach (var layer in _layers) + layer.Dispose(); + } + + internal void AddTileset(TiledMapTileset tileset) + { + _tilesets.Add(tileset); + } + + public void AddLayer(TiledMapLayer layer) + { + _layers.Add(layer); + _layersByName.Add(layer.Name, layer); + + var imageLayer = layer as TiledMapImageLayer; + if (imageLayer != null) + _imageLayers.Add(imageLayer); + + var tileLayer = layer as TiledMapTileLayer; + if (tileLayer != null) + _tileLayers.Add(tileLayer); + + var objectLayer = layer as TiledMapObjectLayer; + if (objectLayer != null) + _objectLayers.Add(objectLayer); + } + + public TiledMapLayer GetLayer(string layerName) + { + TiledMapLayer layer; + _layersByName.TryGetValue(layerName, out layer); + return layer; + } + + public T GetLayer(string layerName) + where T : TiledMapLayer + { + return GetLayer(layerName) as T; + } + + public TiledMapTileset GetTilesetByTileGlobalIdentifier(int tileIdentifier) + { + // ReSharper disable once LoopCanBeConvertedToQuery + foreach (var tileset in _tilesets) + if (tileset.ContainsGlobalIdentifier(tileIdentifier)) + return tileset; + return null; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapEllipseObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapEllipseObject.cs new file mode 100644 index 000000000..18a2678b4 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapEllipseObject.cs @@ -0,0 +1,20 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMapEllipseObject : TiledMapObject + { + public Vector2 Center { get; } + public float RadiusX { get; } + public float RadiusY { get; } + + internal TiledMapEllipseObject(ContentReader input) + : base(input) + { + RadiusX = Size.Width / 2.0f; + RadiusY = Size.Height / 2.0f; + Center = new Vector2(Position.X + RadiusX, Position.Y); + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs new file mode 100644 index 000000000..a397bc1a8 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs @@ -0,0 +1,52 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Tiled +{ + internal static class TiledMapHelper + { + // 4 vertices per tile + public const int VerticesPerTile = 4; + // 2 triangles per tile (mesh), with each triangle indexing 3 out of 4 vertices, so 6 vertices + public const int IndicesPerTile = 6; + // by using ushort type for indices we are limited to indexing vertices from 0 to 65535 + // this limits us on how many vertices can fit inside a single vertex buffer (65536 vertices) + public const int MaximumVerticesPerModel = ushort.MaxValue + 1; + // and thus, we know how many tiles we can fit inside a vertex or index buffer (16384 tiles) + public const int MaximumTilesPerGeometryContent = MaximumVerticesPerModel / VerticesPerTile; + // and thus, we also know the maximum number of indices we can fit inside a single index buffer (98304 indices) + public const int MaximumIndicesPerModel = MaximumTilesPerGeometryContent * IndicesPerTile; + // these optimal maximum numbers of course are not considering texture bindings which would practically lower the actual number of tiles per vertex / index buffer + // thus, the reason why it is a good to have ONE giant tileset (at least per layer) + + internal static Rectangle GetTileSourceRectangle(int localTileIdentifier, int tileWidth, int tileHeight, + int columns, int margin, int spacing) + { + var x = margin + localTileIdentifier % columns * (tileWidth + spacing); + var y = margin + localTileIdentifier / columns * (tileHeight + spacing); + return new Rectangle(x, y, tileWidth, tileHeight); + } + + internal static Point2 GetOrthogonalPosition(int tileX, int tileY, int tileWidth, int tileHeight) + { + var x = tileX * tileWidth; + var y = tileY * tileHeight; + return new Vector2(x, y); + } + + internal static Point2 GetIsometricPosition(int tileX, int tileY, int tileWidth, int tileHeight) + { + // You can think of an isometric Tiled map as a regular orthogonal map that is rotated -45 degrees + // i.e.: the origin (0, 0) is the top tile of the diamond grid; + // (mapWidth, 0) is the far right tile of the diamond grid + // (0, mapHeight) is the far left tile of the diamond grid + // (mapWidth, mapHeight) is the bottom tile of the diamond grid + + var halfTileWidth = tileWidth * 0.5f; + var halfTileHeight = tileHeight * 0.5f; + // -1 because we want the top the tile-diamond (top-center) to be the origin in tile space + var x = (tileX - tileY - 1) * halfTileWidth; + var y = (tileX + tileY) * halfTileHeight; + return new Vector2(x, y); + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapImageLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapImageLayer.cs new file mode 100644 index 000000000..4115c0f1d --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapImageLayer.cs @@ -0,0 +1,23 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Content; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapImageLayer : TiledMapLayer, IMovable + { + public Vector2 Position { get; set; } + public Texture2D Texture { get; } + + internal TiledMapImageLayer(ContentReader input) + : base(input) + { + var textureAssetName = input.GetRelativeAssetName(input.ReadString()); + Texture = input.ContentManager.Load(textureAssetName); + var x = input.ReadSingle(); + var y = input.ReadSingle(); + Position = new Vector2(x, y); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs new file mode 100644 index 000000000..7d3f42d5a --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs @@ -0,0 +1,50 @@ +using System; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Graphics; + +namespace MonoGame.Extended.Tiled +{ + public abstract class TiledMapLayer : IDisposable + { + internal TiledMapLayerModel[] Models; + internal TiledMapLayerAnimatedModel[] AnimatedModels; + + public string Name { get; } + public TiledMapProperties Properties { get; } + public bool IsVisible { get; set; } + public float Opacity { get; set; } + public float OffsetX { get; } + public float OffsetY { get; } + + internal TiledMapLayer(ContentReader input) + { + Models = null; + AnimatedModels = null; + + Name = input.ReadString(); + Properties = new TiledMapProperties(); + IsVisible = input.ReadBoolean(); + Opacity = input.ReadSingle(); + OffsetX = input.ReadSingle(); + OffsetY = input.ReadSingle(); + + input.ReadTiledMapProperties(Properties); + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool diposing) + { + if (!diposing) + return; + if (Models == null) + return; + foreach (var model in Models) + model.Dispose(); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayerType.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayerType.cs new file mode 100644 index 000000000..b8dafeb32 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayerType.cs @@ -0,0 +1,9 @@ +namespace MonoGame.Extended.Tiled +{ + public enum TiledMapLayerType : byte + { + ImageLayer = 0, + TileLayer = 1, + ObjectLayer = 2 + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObject.cs new file mode 100644 index 000000000..1e9c6bce6 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObject.cs @@ -0,0 +1,39 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public abstract class TiledMapObject + { + public int Identifier { get; } + public string Name { get; set; } + public string Type { get; } + public TiledMapProperties Properties { get; } + public bool IsVisible { get; set; } + public float Opacity { get; set; } + public float Rotation { get; set; } + public Vector2 Position { get; } + public Size2 Size { get; set; } + + internal TiledMapObject(ContentReader input) + { + Identifier = input.ReadInt32(); + Name = input.ReadString(); + Type = input.ReadString(); + Position = new Vector2(input.ReadSingle(), input.ReadSingle()); + var width = input.ReadSingle(); + var height = input.ReadSingle(); + Size = new Size2(width, height); + Rotation = input.ReadSingle(); + IsVisible = input.ReadBoolean(); + + Properties = new TiledMapProperties(); + input.ReadTiledMapProperties(Properties); + } + + public override string ToString() + { + return $"{Identifier}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectDrawOrder.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectDrawOrder.cs new file mode 100644 index 000000000..1668f6646 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectDrawOrder.cs @@ -0,0 +1,8 @@ +namespace MonoGame.Extended.Tiled +{ + public enum TiledMapObjectDrawOrder : byte + { + TopDown, + Index, + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectLayer.cs new file mode 100644 index 000000000..180b61a6e --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectLayer.cs @@ -0,0 +1,53 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapObjectLayer : TiledMapLayer + { + public Color Color { get; } + public TiledMapObjectDrawOrder DrawOrder { get; } + public TiledMapObject[] Objects { get; } + + internal TiledMapObjectLayer(ContentReader input, TiledMap map) + : base(input) + { + Color = input.ReadColor(); + DrawOrder = (TiledMapObjectDrawOrder)input.ReadByte(); + + var objectCount = input.ReadInt32(); + + Objects = new TiledMapObject[objectCount]; + + for (var i = 0; i < objectCount; i++) + { + TiledMapObject @object; + + var objectType = (TiledMapObjectType)input.ReadByte(); + switch (objectType) + { + case TiledMapObjectType.Rectangle: + @object = new TiledMapRectangleObject(input); + break; + case TiledMapObjectType.Tile: + @object = new TiledMapTileObject(input, map); + break; + case TiledMapObjectType.Ellipse: + @object = new TiledMapEllipseObject(input); + break; + case TiledMapObjectType.Polygon: + @object = new TiledMapPolygonObject(input); + break; + case TiledMapObjectType.Polyline: + @object = new TiledMapPolylineObject(input); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + Objects[i] = @object; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectType.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectType.cs new file mode 100644 index 000000000..305500aac --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectType.cs @@ -0,0 +1,11 @@ +namespace MonoGame.Extended.Tiled +{ + public enum TiledMapObjectType : byte + { + Rectangle, + Ellipse, + Polygon, + Polyline, + Tile + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapOrientation.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapOrientation.cs new file mode 100644 index 000000000..798c1c86d --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapOrientation.cs @@ -0,0 +1,9 @@ +namespace MonoGame.Extended.Tiled +{ + public enum TiledMapOrientation + { + Orthogonal, + Isometric, + Staggered + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolygonObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolygonObject.cs new file mode 100644 index 000000000..333cf4ae8 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolygonObject.cs @@ -0,0 +1,23 @@ +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMapPolygonObject : TiledMapObject + { + public Point2[] Points { get; } + + internal TiledMapPolygonObject(ContentReader input) + : base(input) + { + var pointCount = input.ReadInt32(); + Points = new Point2[pointCount]; + + for (var i = 0; i < pointCount; i++) + { + var x = input.ReadSingle(); + var y = input.ReadSingle(); + Points[i] = new Point2(x, y); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolylineObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolylineObject.cs new file mode 100644 index 000000000..361a4a730 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolylineObject.cs @@ -0,0 +1,23 @@ +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMapPolylineObject : TiledMapObject + { + public Point2[] Points { get; } + + internal TiledMapPolylineObject(ContentReader input) + : base(input) + { + var pointCount = input.ReadInt32(); + Points = new Point2[pointCount]; + + for (var i = 0; i < pointCount; i++) + { + var x = input.ReadSingle(); + var y = input.ReadSingle(); + Points[i] = new Point2(x, y); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapProperties.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapProperties.cs new file mode 100644 index 000000000..912de7142 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapProperties.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapProperties : Dictionary + { + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs new file mode 100644 index 000000000..672712163 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs @@ -0,0 +1,106 @@ +using System; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Graphics; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapReader : ContentTypeReader + { + protected override TiledMap Read(ContentReader input, TiledMap existingInstance) + { + if (existingInstance != null) + return existingInstance; + ; + + var value = ReadMetaData(input); + ReadTilesets(input, value); + ReadLayers(input, value); + + return value; + } + + private static TiledMap ReadMetaData(ContentReader input) + { + var name = input.AssetName; + var width = input.ReadInt32(); + var height = input.ReadInt32(); + var tileWidth = input.ReadInt32(); + var tileHeight = input.ReadInt32(); + var backgroundColor = input.ReadColor(); + var renderOrder = (TiledMapTileDrawOrder)input.ReadByte(); + var orientation = (TiledMapOrientation)input.ReadByte(); + + var map = new TiledMap(name, width, height, tileWidth, tileHeight, renderOrder, orientation) + { + BackgroundColor = backgroundColor + }; + + input.ReadTiledMapProperties(map.Properties); + + return map; + } + + private static void ReadTilesets(ContentReader input, TiledMap map) + { + var tilesetCount = input.ReadInt32(); + + for (var i = 0; i < tilesetCount; i++) + { + var tileset = new TiledMapTileset(input); + map.AddTileset(tileset); + } + } + + private static void ReadLayers(ContentReader input, TiledMap map) + { + var layerCount = input.ReadInt32(); + + for (var i = 0; i < layerCount; i++) + { + TiledMapLayer layer; + + var layerType = (TiledMapLayerType)input.ReadByte(); + switch (layerType) + { + case TiledMapLayerType.ImageLayer: + layer = new TiledMapImageLayer(input); + break; + case TiledMapLayerType.TileLayer: + layer = new TiledMapTileLayer(input, map); + break; + case TiledMapLayerType.ObjectLayer: + layer = new TiledMapObjectLayer(input, map); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + if (layerType != TiledMapLayerType.ObjectLayer) + ReadModels(input, layer, map); + + map.AddLayer(layer); + } + } + + private static void ReadModels(ContentReader input, TiledMapLayer layer, TiledMap map) + { + var modelCount = input.ReadInt32(); + var animatedModelCount = input.ReadInt32(); + + var models = layer.Models = new TiledMapLayerModel[modelCount]; + var animatedModels = layer.AnimatedModels = new TiledMapLayerAnimatedModel[animatedModelCount]; + + var animatedModelIndex = 0; + + for (var modelIndex = 0; modelIndex < modelCount; modelIndex++) + { + var isAnimated = input.ReadBoolean(); + var model = isAnimated ? new TiledMapLayerAnimatedModel(input, map) : new TiledMapLayerModel(input); + + models[modelIndex] = model; + if (isAnimated) + animatedModels[animatedModelIndex++] = (TiledMapLayerAnimatedModel)model; + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapRectangleObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapRectangleObject.cs new file mode 100644 index 000000000..fd2ff1019 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapRectangleObject.cs @@ -0,0 +1,12 @@ +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMapRectangleObject : TiledMapObject + { + internal TiledMapRectangleObject(ContentReader input) + : base(input) + { + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTile.cs new file mode 100644 index 000000000..bbac76690 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTile.cs @@ -0,0 +1,29 @@ +namespace MonoGame.Extended.Tiled +{ + public struct TiledMapTile + { + internal readonly uint GlobalTileIdentifierWithFlags; + + public readonly ushort X; + public readonly ushort Y; + + public int GlobalIdentifier => (int)(GlobalTileIdentifierWithFlags & ~(uint)TiledMapTileFlipFlags.All); + public bool IsFlippedHorizontally => (GlobalTileIdentifierWithFlags & (uint)TiledMapTileFlipFlags.FlipHorizontally) != 0; + public bool IsFlippedVertically => (GlobalTileIdentifierWithFlags & (uint)TiledMapTileFlipFlags.FlipVertically) != 0; + public bool IsFlippedDiagonally => (GlobalTileIdentifierWithFlags & (uint)TiledMapTileFlipFlags.FlipDiagonally) != 0; + public bool IsBlank => GlobalIdentifier == 0; + public TiledMapTileFlipFlags Flags => (TiledMapTileFlipFlags)(GlobalTileIdentifierWithFlags & (uint)TiledMapTileFlipFlags.All); + + internal TiledMapTile(uint globalTileIdentifierWithFlags, ushort x, ushort y) + { + GlobalTileIdentifierWithFlags = globalTileIdentifierWithFlags; + X = x; + Y = y; + } + + public override string ToString() + { + return $"GlobalIdentifier: {GlobalIdentifier}, Flags: {Flags}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledRenderOrder.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileDrawOrder.cs similarity index 50% rename from Source/MonoGame.Extended/Maps/Tiled/TiledRenderOrder.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileDrawOrder.cs index 18f903f38..a40b596ef 100644 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledRenderOrder.cs +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileDrawOrder.cs @@ -1,6 +1,6 @@ -namespace MonoGame.Extended.Maps.Tiled +namespace MonoGame.Extended.Tiled { - public enum TiledRenderOrder + public enum TiledMapTileDrawOrder : byte { RightDown, RightUp, diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileFlipFlags.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileFlipFlags.cs new file mode 100644 index 000000000..f883bad47 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileFlipFlags.cs @@ -0,0 +1,14 @@ +using System; + +namespace MonoGame.Extended.Tiled +{ + [Flags] + public enum TiledMapTileFlipFlags : uint + { + None = 0, + FlipDiagonally = 0x20000000, + FlipVertically = 0x40000000, + FlipHorizontally = 0x80000000, + All = FlipDiagonally | FlipVertically | FlipHorizontally + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileLayer.cs new file mode 100644 index 000000000..2a6303956 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileLayer.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapTileLayer : TiledMapLayer + { + // immutable + public int Width { get; } + public int Height { get; } + public int TileWidth { get; } + public int TileHeight { get; } + public ReadOnlyCollection Tiles { get; } + + internal TiledMapTileLayer(ContentReader input, TiledMap map) + : base(input) + { + Width = input.ReadInt32(); + Height = input.ReadInt32(); + TileWidth = map.TileWidth; + TileHeight = map.TileHeight; + + var tileCount = input.ReadInt32(); + var tiles = new TiledMapTile[tileCount]; + Tiles = new ReadOnlyCollection(tiles); + + for (var i = 0; i < tileCount; i++) + { + var globalTileIdentifierWithFlags = input.ReadUInt32(); + var x = input.ReadUInt16(); + var y = input.ReadUInt16(); + tiles[i] = new TiledMapTile(globalTileIdentifierWithFlags, x, y); + } + } + + public bool TryGetTile(int x, int y, out TiledMapTile? tile) + { + var index = x + y * Width; + if ((index < 0) || (index >= Tiles.Count)) + { + tile = null; + return false; + } + + tile = Tiles[index]; + return true; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileObject.cs new file mode 100644 index 000000000..20e37da4c --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileObject.cs @@ -0,0 +1,21 @@ +using System.Linq; +using Microsoft.Xna.Framework.Content; +using MonoGame.Extended.Shapes; + +namespace MonoGame.Extended.Tiled +{ + public sealed class TiledMapTileObject : TiledMapObject + { + public TiledMapTilesetTile TilesetTile { get; } + + public TiledMapTileObject(ContentReader input, TiledMap map) + : base(input) + { + var globalTileIdentifierWithFlags = input.ReadUInt32(); + var tile = new TiledMapTile(globalTileIdentifierWithFlags, 0, 0); + var tileset = map.GetTilesetByTileGlobalIdentifier(tile.GlobalIdentifier); + var localTileIdentifier = tile.GlobalIdentifier - tileset.FirstGlobalIdentifier; + TilesetTile = tileset.Tiles.FirstOrDefault(x => x.LocalTileIdentifier == localTileIdentifier); + } + } +} diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileset.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileset.cs new file mode 100644 index 000000000..dd4357ddc --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileset.cs @@ -0,0 +1,94 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Content; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapTileset + { + private readonly Dictionary _animatedTilesByLocalTileIdentifier; + + public string Name => Texture.Name; + public Texture2D Texture { get; } + public int FirstGlobalIdentifier { get; } + public int TileWidth { get; } + public int TileHeight { get; } + public int Spacing { get; } + public int Margin { get; } + public int TileCount { get; } + public int Columns { get; } + public ReadOnlyCollection Tiles { get; private set; } + public ReadOnlyCollection AnimatedTiles { get; private set; } + public TiledMapProperties Properties { get; } + + internal TiledMapTileset(ContentReader input) + { + var textureAssetName = input.GetRelativeAssetName(input.ReadString()); + var animatedTiles = new List(); + var tiles = new List(); + + _animatedTilesByLocalTileIdentifier = new Dictionary(); + + Texture = input.ContentManager.Load(textureAssetName); + FirstGlobalIdentifier = input.ReadInt32(); + TileWidth = input.ReadInt32(); + TileHeight = input.ReadInt32(); + TileCount = input.ReadInt32(); + Spacing = input.ReadInt32(); + Margin = input.ReadInt32(); + Columns = input.ReadInt32(); + Properties = new TiledMapProperties(); + + var explicitTileCount = input.ReadInt32(); + + for (var tileIndex = 0; tileIndex < explicitTileCount; tileIndex++) + { + var localTileIdentifier = input.ReadInt32(); + var animationFramesCount = input.ReadInt32(); + + TiledMapTilesetTile tilesetTile; + + if (animationFramesCount <= 0) + { + tilesetTile = new TiledMapTilesetTile(localTileIdentifier); + } + else + { + var animatedTilesetTile = new TiledMapTilesetAnimatedTile(this, input, localTileIdentifier, animationFramesCount); + animatedTiles.Add(animatedTilesetTile); + _animatedTilesByLocalTileIdentifier.Add(localTileIdentifier, animatedTilesetTile); + tilesetTile = animatedTilesetTile; + } + + tiles.Add(tilesetTile); + + input.ReadTiledMapProperties(tilesetTile.Properties); + } + + input.ReadTiledMapProperties(Properties); + + Tiles = new ReadOnlyCollection(tiles); + AnimatedTiles = new ReadOnlyCollection(animatedTiles); + } + + public Rectangle GetTileRegion(int localTileIdentifier) + { + return TiledMapHelper.GetTileSourceRectangle(localTileIdentifier, TileWidth, TileHeight, Columns, Margin, Spacing); + } + + public TiledMapTilesetAnimatedTile GetAnimatedTilesetTileByLocalTileIdentifier(int localTileIdentifier) + { + TiledMapTilesetAnimatedTile animatedTile; + _animatedTilesByLocalTileIdentifier.TryGetValue(localTileIdentifier, out animatedTile); + return animatedTile; + } + + public bool ContainsGlobalIdentifier(int globalIdentifier) + { + return globalIdentifier >= FirstGlobalIdentifier && globalIdentifier < FirstGlobalIdentifier + TileCount; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetAnimatedTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetAnimatedTile.cs new file mode 100644 index 000000000..71ea38285 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetAnimatedTile.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; + +namespace MonoGame.Extended.Tiled +{ + public class TiledMapTilesetAnimatedTile : TiledMapTilesetTile + { + private readonly List _animationFrames = + new List(); + + private int _frameIndex; + private TimeSpan _timer; + + public ReadOnlyCollection AnimationFrames { get; } + public TiledMapTilesetTileAnimationFrame CurrentAnimationFrame { get; private set; } + + // ReSharper disable once SuggestBaseTypeForParameter + internal TiledMapTilesetAnimatedTile(TiledMapTileset tileset, ContentReader input, int localTileIdentifier, int animationFramesCount) + : base(localTileIdentifier) + { + AnimationFrames = new ReadOnlyCollection(_animationFrames); + _timer = TimeSpan.Zero; + + for (var i = 0; i < animationFramesCount; i++) + { + var localTileIdentifierForFrame = input.ReadInt32(); + var frameDurationInMilliseconds = input.ReadInt32(); + var tileSetTileFrame = new TiledMapTilesetTileAnimationFrame(tileset, localTileIdentifierForFrame, frameDurationInMilliseconds); + _animationFrames.Add(tileSetTileFrame); + CurrentAnimationFrame = AnimationFrames[0]; + } + } + + public void Update(GameTime gameTime) + { + if (_animationFrames.Count == 0) + return; + + _timer += gameTime.ElapsedGameTime; + if (_timer <= CurrentAnimationFrame.Duration) + return; + + _timer -= CurrentAnimationFrame.Duration; + _frameIndex = (_frameIndex + 1) % AnimationFrames.Count; + CurrentAnimationFrame = AnimationFrames[_frameIndex]; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTile.cs new file mode 100644 index 000000000..062cd21bc --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTile.cs @@ -0,0 +1,14 @@ +namespace MonoGame.Extended.Tiled +{ + public class TiledMapTilesetTile + { + internal TiledMapTilesetTile(int localTileIdentifier) + { + LocalTileIdentifier = localTileIdentifier; + Properties = new TiledMapProperties(); + } + + public int LocalTileIdentifier { get; set; } + public TiledMapProperties Properties { get; private set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTileAnimationFrame.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTileAnimationFrame.cs new file mode 100644 index 000000000..c1771db1d --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTileAnimationFrame.cs @@ -0,0 +1,47 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Tiled +{ + public struct TiledMapTilesetTileAnimationFrame + { + public readonly int LocalTileIdentifier; + public readonly TimeSpan Duration; + public readonly Vector2[] TextureCoordinates; + + internal TiledMapTilesetTileAnimationFrame(TiledMapTileset tileset, int localTileIdentifier, int durationInMilliseconds) + { + LocalTileIdentifier = localTileIdentifier; + Duration = new TimeSpan(0, 0, 0, 0, durationInMilliseconds); + TextureCoordinates = new Vector2[4]; + CreateTextureCoordinates(tileset); + } + + private void CreateTextureCoordinates(TiledMapTileset tileset) + { + var sourceRectangle = tileset.GetTileRegion(LocalTileIdentifier); + var texture = tileset.Texture; + var texelLeft = (sourceRectangle.X + 0.5f) / texture.Width; + var texelTop = (sourceRectangle.Y + 0.5f) / texture.Height; + var texelRight = (sourceRectangle.X + sourceRectangle.Width) / (float)texture.Width; + var texelBottom = (sourceRectangle.Y + sourceRectangle.Height) / (float)texture.Height; + + TextureCoordinates[0].X = texelLeft; + TextureCoordinates[0].Y = texelTop; + + TextureCoordinates[1].X = texelRight; + TextureCoordinates[1].Y = texelTop; + + TextureCoordinates[2].X = texelLeft; + TextureCoordinates[2].Y = texelBottom; + + TextureCoordinates[3].X = texelRight; + TextureCoordinates[3].Y = texelBottom; + } + + public override string ToString() + { + return $"{LocalTileIdentifier}:{Duration}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tiled/packages.config b/Source/MonoGame.Extended.Tiled/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening.nuspec b/Source/MonoGame.Extended.Tweening.nuspec new file mode 100644 index 000000000..7edb8f0ea --- /dev/null +++ b/Source/MonoGame.Extended.Tweening.nuspec @@ -0,0 +1,34 @@ + + + + + MonoGame.Extended.Tweening + $version$ + + A tweening system to make MonoGame more awesome. + + Dylan Wilson + MonoGame.Extended.Tweening + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false + + Copyright 2017 - Craftwork Games + monogame extended animations tweening + + + + + + + + + + + + + + + diff --git a/Source/MonoGame.Extended.Tweening/DelayTween.cs b/Source/MonoGame.Extended.Tweening/DelayTween.cs new file mode 100644 index 000000000..155c67f75 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/DelayTween.cs @@ -0,0 +1,20 @@ +using MonoGame.Extended.Animations; + +namespace MonoGame.Extended.Tweening +{ + public class DelayTween : Animation + { + public DelayTween(float duration) + : base(null, true) + { + Duration = duration; + } + + public float Duration { get; set; } + + protected override bool OnUpdate(float deltaTime) + { + return CurrentTime >= Duration; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/EasingFunctions.cs b/Source/MonoGame.Extended.Tweening/EasingFunctions.cs new file mode 100644 index 000000000..2eee1a5b4 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/EasingFunctions.cs @@ -0,0 +1,122 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Tweening +{ + public delegate float EasingFunction(float value); + + public static class EasingFunctions + { + public static float Linear(float value) => value; + + public static float CubicEaseIn(float value) => Power.EaseIn(value, 2); + public static float CubicEaseOut(float value) => Power.EaseOut(value, 2); + public static float CubicEaseInOut(float value) => Power.EaseInOut(value, 2); + + public static float QuadraticEaseIn(float value) => Power.EaseIn(value, 3); + public static float QuadraticEaseOut(float value) => Power.EaseOut(value, 3); + public static float QuadraticEaseInOut(float value) => Power.EaseInOut(value, 3); + + public static float QuarticEaseIn(float value) => Power.EaseIn(value, 4); + public static float QuarticEaseOut(float value) => Power.EaseOut(value, 4); + public static float QuarticEaseInOut(float value) => Power.EaseInOut(value, 4); + + public static float QuinticEaseIn(float value) => Power.EaseIn(value, 5); + public static float QuinticEaseOut(float value) => Power.EaseOut(value, 5); + public static float QuinticEaseInOut(float value) => Power.EaseInOut(value, 5); + + public static float SineEaseIn(float value) + => (float) Math.Sin(value*MathHelper.PiOver2 - MathHelper.PiOver2) + 1; + + public static float SineEaseOut(float value) => (float) Math.Sin(value*MathHelper.PiOver2); + + public static float SineEaseInOut(float value) + => (float) (Math.Sin(value*MathHelper.Pi - MathHelper.PiOver2) + 1)/2; + + public static float ExponentialIn(float value) => (float) Math.Pow(2, 10*(value - 1)); + public static float ExponentialOut(float value) => Out(value, ExponentialIn); + public static float ExponentialInOut(float value) => InOut(value, ExponentialIn); + + public static float ElasticIn(float value) + { + const int oscillations = 1; + const float springiness = 3f; + var e = (Math.Exp(springiness*value) - 1)/(Math.Exp(springiness) - 1); + return (float) (e*Math.Sin((MathHelper.PiOver2 + MathHelper.TwoPi*oscillations)*value)); + } + + public static float ElasticOut(float value) => Out(value, ElasticIn); + public static float ElasticInOut(float value) => InOut(value, ElasticIn); + + public static float BackIn(float value) + { + const float amplitude = 1f; + return (float) (Math.Pow(value, 3) - value*amplitude*Math.Sin(value*MathHelper.Pi)); + } + + public static float BackOut(float value) => Out(value, BackIn); + public static float BackInOut(float value) => InOut(value, BackIn); + + public static float BounceOut(float value) => Out(value, BounceIn); + public static float BounceInOut(float value) => InOut(value, BounceIn); + + public static float BounceIn(float value) + { + const float bounceConst1 = 2.75f; + var bounceConst2 = (float) Math.Pow(bounceConst1, 2); + + value = 1 - value; //flip x-axis + + if (value < 1/bounceConst1) // big bounce + return 1f - bounceConst2*value*value; + + if (value < 2/bounceConst1) + return 1 - (float) (bounceConst2*Math.Pow(value - 1.5f/bounceConst1, 2) + .75); + + if (value < 2.5/bounceConst1) + return 1 - (float) (bounceConst2*Math.Pow(value - 2.25f/bounceConst1, 2) + .9375); + + //small bounce + return 1f - (float) (bounceConst2*Math.Pow(value - 2.625f/bounceConst1, 2) + .984375); + } + + + private static float Out(float value, EasingFunction function) + { + return 1 - function(1 - value); + } + + private static float InOut(float value, EasingFunction function) + { + if (value < 0.5f) + return 0.5f*function(value*2); + + return 1f - 0.5f*function(2 - value*2); + } + + private static class Power + { + public static float EaseIn(double value, int power) + { + return (float) Math.Pow(value, power); + } + + public static float EaseOut(double value, int power) + { + var sign = power%2 == 0 ? -1 : 1; + return (float) (sign*(Math.Pow(value - 1, power) + sign)); + } + + public static float EaseInOut(double s, int power) + { + s *= 2; + + if (s < 1) + return EaseIn(s, power)/2; + + var sign = power%2 == 0 ? -1 : 1; + return (float) (sign/2.0*(Math.Pow(s - 2, power) + sign*2)); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/FluentTweening.cs b/Source/MonoGame.Extended.Tweening/FluentTweening.cs new file mode 100644 index 000000000..403b3b1d3 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/FluentTweening.cs @@ -0,0 +1,98 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Tweening +{ + public static class FluentTweening + { + internal static TweeningComponent TweeningComponent { get; set; } + + public static TweenGroup CreateTweenGroup(this T target, Action onCompleteAction = null, + bool disposeOnComplete = true) + where T : class + { + var tweenGroup = new TweenGroup(target, onCompleteAction, disposeOnComplete); + TweeningComponent.AddTween(tweenGroup); + return tweenGroup; + } + + public static TweenChain CreateTweenChain(this T target, Action onCompleteAction = null, + bool disposeOnComplete = true) + { + var tweenGroup = new TweenChain(target, onCompleteAction, disposeOnComplete); + TweeningComponent.AddTween(tweenGroup); + return tweenGroup; + } + + public static TweenAnimation MoveTo(this TweenAnimation tweenAnimation, Vector2 position, + float duration, EasingFunction easingFunction) + where T : IMovable + { + var movable = tweenAnimation.Target; + tweenAnimation.Tweens.Add(new PropertyTween(() => movable.Position, v => movable.Position = v, + position, duration, easingFunction)); + return tweenAnimation; + } + + public static TweenAnimation Move(this TweenAnimation tweenAnimation, Vector2 direction, float duration, + EasingFunction easingFunction) + where T : IMovable + { + var movable = tweenAnimation.Target; + return MoveTo(tweenAnimation, movable.Position + direction, duration, easingFunction); + } + + public static TweenAnimation RotateTo(this TweenAnimation tweenAnimation, float radians, float duration, + EasingFunction easingFunction) + where T : IRotatable + { + var rotatable = tweenAnimation.Target; + tweenAnimation.Tweens.Add(new PropertyTween(() => rotatable.Rotation, v => rotatable.Rotation = v, + radians, duration, easingFunction)); + return tweenAnimation; + } + + public static TweenAnimation Rotate(this TweenAnimation tweenAnimation, float radians, float duration, + EasingFunction easingFunction) + where T : IRotatable + { + var rotatable = tweenAnimation.Target; + return RotateTo(tweenAnimation, rotatable.Rotation + radians, duration, easingFunction); + } + + public static TweenAnimation ScaleTo(this TweenAnimation tweenAnimation, Vector2 scale, float duration, + EasingFunction easingFunction) + where T : IScalable + { + var scalable = tweenAnimation.Target; + tweenAnimation.Tweens.Add(new PropertyTween(() => scalable.Scale, v => scalable.Scale = v, scale, + duration, easingFunction)); + return tweenAnimation; + } + + public static TweenAnimation Scale(this TweenAnimation tweenAnimation, Vector2 scale, float duration, + EasingFunction easingFunction) + where T : IScalable + { + var scalable = tweenAnimation.Target; + return ScaleTo(tweenAnimation, scalable.Scale*scale, duration, easingFunction); + } + + public static TweenAnimation Delay(this TweenAnimation tweenAnimation, float duration) + { + tweenAnimation.Tweens.Add(new DelayTween(duration)); + return tweenAnimation; + } + + public static TweenAnimation FadeTo(this TweenAnimation tweenAnimation, float alpha, float duration, + EasingFunction easingFunction) + where T : IColorable + { + var colorable = tweenAnimation.Target; + var initialColor = colorable.Color; + tweenAnimation.Tweens.Add(new PropertyTween(() => initialColor.A/255f, + a => colorable.Color = initialColor*a, alpha, duration, easingFunction)); + return tweenAnimation; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/MonoGame.Extended.Tweening.csproj b/Source/MonoGame.Extended.Tweening/MonoGame.Extended.Tweening.csproj new file mode 100644 index 000000000..e6012fb90 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/MonoGame.Extended.Tweening.csproj @@ -0,0 +1,66 @@ + + + + + 10.0 + Debug + AnyCPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E} + Library + MonoGame.Extended.Tweening + MonoGame.Extended.Tweening + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + {587ce536-216f-41a1-b223-ae502c125b09} + MonoGame.Extended.Animations + + + {41724c52-3d50-45bb-81eb-3c8a247eafd1} + MonoGame.Extended + + + + + + + + + + + + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/Properties/AssemblyInfo.cs b/Source/MonoGame.Extended.Tweening/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..2f70d15f4 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/Properties/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Resources; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Tweening")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Tweening")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Tweening/PropertyTween.cs b/Source/MonoGame.Extended.Tweening/PropertyTween.cs new file mode 100644 index 000000000..8dbe5f954 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/PropertyTween.cs @@ -0,0 +1,65 @@ +using System; +using System.Linq.Expressions; +using MonoGame.Extended.Animations; + +namespace MonoGame.Extended.Tweening +{ + public class PropertyTween : Animation + where T : struct + { + protected static Func Add; + protected static Func Subtract; + protected static Func Multiply; + + private readonly Func _getValue; + private readonly Action _setValue; + private float _currentMultiplier; + private T? _initialValue; + + static PropertyTween() + { + var a = Expression.Parameter(typeof(T)); + var b = Expression.Parameter(typeof(T)); + var c = Expression.Parameter(typeof(float)); + Add = Expression.Lambda>(Expression.Add(a, b), a, b).Compile(); + Subtract = Expression.Lambda>(Expression.Subtract(a, b), a, b).Compile(); + Multiply = Expression.Lambda>(Expression.Multiply(a, c), a, c).Compile(); + } + + public PropertyTween(Func getValue, Action setValue, T targetValue, float duration, + EasingFunction easingFunction) + : base(null, true) + { + _getValue = getValue; + _setValue = setValue; + TargetValue = targetValue; + Duration = duration; + EasingFunction = easingFunction; + } + + public T TargetValue { get; } + public float Duration { get; } + public EasingFunction EasingFunction { get; set; } + + protected override bool OnUpdate(float deltaTime) + { + if (!_initialValue.HasValue) + _initialValue = _getValue(); + + _currentMultiplier = EasingFunction(CurrentTime/Duration); + + if (CurrentTime >= Duration) + { + CurrentTime = Duration; + _currentMultiplier = 1.0f; + return true; + } + + var difference = Subtract(TargetValue, _initialValue.Value); + var multiply = Multiply(difference, _currentMultiplier); + var newValue = Add(_initialValue.Value, multiply); + _setValue(newValue); + return false; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/TweenAnimation.cs b/Source/MonoGame.Extended.Tweening/TweenAnimation.cs new file mode 100644 index 000000000..9bd1c31f6 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/TweenAnimation.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using MonoGame.Extended.Animations; + +namespace MonoGame.Extended.Tweening +{ + public abstract class TweenAnimation : Animation + { + protected TweenAnimation(T target, Action onCompleteAction = null, bool disposeOnComplete = true) + : base(onCompleteAction, disposeOnComplete) + { + Target = target; + Tweens = new List(); + } + + public T Target { get; } + public IList Tweens { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/TweenChain.cs b/Source/MonoGame.Extended.Tweening/TweenChain.cs new file mode 100644 index 000000000..a678525e4 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/TweenChain.cs @@ -0,0 +1,27 @@ +using System; + +namespace MonoGame.Extended.Tweening +{ + public class TweenChain : TweenAnimation + { + private int _currentTweenIndex; + + public TweenChain(T target, Action onCompleteAction = null, bool disposeOnComplete = true) + : base(target, onCompleteAction, disposeOnComplete) + { + _currentTweenIndex = 0; + } + + protected override bool OnUpdate(float deltaTime) + { + var currentTween = Tweens[_currentTweenIndex]; + + currentTween.Update(deltaTime); + + if (currentTween.IsComplete) + _currentTweenIndex++; + + return _currentTweenIndex >= Tweens.Count; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/TweenGroup.cs b/Source/MonoGame.Extended.Tweening/TweenGroup.cs new file mode 100644 index 000000000..17b8fb190 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/TweenGroup.cs @@ -0,0 +1,21 @@ +using System; +using System.Linq; + +namespace MonoGame.Extended.Tweening +{ + public class TweenGroup : TweenAnimation + { + public TweenGroup(T target, Action onCompleteAction = null, bool disposeOnComplete = true) + : base(target, onCompleteAction, disposeOnComplete) + { + } + + protected override bool OnUpdate(float deltaTime) + { + foreach (var animation in Tweens) + animation.Update(deltaTime); + + return Tweens.All(t => t.IsComplete); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tweening/TweeningComponent.cs b/Source/MonoGame.Extended.Tweening/TweeningComponent.cs new file mode 100644 index 000000000..954d5a427 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/TweeningComponent.cs @@ -0,0 +1,27 @@ +using Microsoft.Xna.Framework; +using MonoGame.Extended.Animations; + +namespace MonoGame.Extended.Tweening +{ + public class TweeningComponent : GameComponent + { + private readonly AnimationComponent _animationComponent; + + public TweeningComponent(Game game, AnimationComponent animationComponent) + : base(game) + { + _animationComponent = animationComponent; + FluentTweening.TweeningComponent = this; + } + + public void AddTween(Animation tweenAnimation) + { + _animationComponent.Animations.Add(tweenAnimation); + } + + public bool RemoveTween(Animation tweenAnimation) + { + return _animationComponent.Animations.Remove(tweenAnimation); + } + } +} diff --git a/Source/MonoGame.Extended.Tweening/packages.config b/Source/MonoGame.Extended.Tweening/packages.config new file mode 100644 index 000000000..28c014442 --- /dev/null +++ b/Source/MonoGame.Extended.Tweening/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.nuspec b/Source/MonoGame.Extended.nuspec index 9dc7110c3..bb2ce0f7e 100644 --- a/Source/MonoGame.Extended.nuspec +++ b/Source/MonoGame.Extended.nuspec @@ -1,33 +1,37 @@ - - + + + MonoGame.Extended - 0.2.0.0 - MonoGame.Extended - Dylan Wilson - Craftwork Games - https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE - https://github.com/craftworkgames/MonoGame.Extended - https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png - false + $version$ Makes MonoGame more awesome. Tile based maps, Bitmap Fonts, Sprites and SpriteBatch extensions, Input Listeners, Texture Atlases, 2D Camera, Viewport Adapters. + Dylan Wilson + MonoGame.Extended + Craftwork Games + https://github.com/craftworkgames/MonoGame.Extended + https://github.com/craftworkgames/MonoGame.Extended/blob/master/LICENSE + https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png + false - Copyright 2015 - Craftwork Games - monogame pipeline bmfont tiled texture atlas input event sprite + Copyright 2017 - Craftwork Games + monogame extended pipeline bmfont tiled texture atlas input event sprite + + + - + diff --git a/Source/MonoGame.Extended.sln b/Source/MonoGame.Extended.sln index 1290d6ac3..95b9a2802 100644 --- a/Source/MonoGame.Extended.sln +++ b/Source/MonoGame.Extended.sln @@ -1,77 +1,191 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +# Visual Studio 15 +VisualStudioVersion = 15.0.26228.4 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended", "MonoGame.Extended\MonoGame.Extended.csproj", "{41724C52-3D50-45BB-81EB-3C8A247EAFD1}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{068B9F42-8B49-4FAF-9D8C-701862FAC799}" ProjectSection(SolutionItems) = preProject + MonoGame.Extended.Animations.nuspec = MonoGame.Extended.Animations.nuspec + MonoGame.Extended.Entities.nuspec = MonoGame.Extended.Entities.nuspec + MonoGame.Extended.Graphics.nuspec = MonoGame.Extended.Graphics.nuspec + MonoGame.Extended.Gui.nuspec = MonoGame.Extended.Gui.nuspec + MonoGame.Extended.Input.nuspec = MonoGame.Extended.Input.nuspec + MonoGame.Extended.NuclexGui.nuspec = MonoGame.Extended.NuclexGui.nuspec MonoGame.Extended.nuspec = MonoGame.Extended.nuspec + MonoGame.Extended.Particles.nuspec = MonoGame.Extended.Particles.nuspec + MonoGame.Extended.SceneGraphs.nuspec = MonoGame.Extended.SceneGraphs.nuspec + MonoGame.Extended.Tiled.nuspec = MonoGame.Extended.Tiled.nuspec + MonoGame.Extended.Tweening.nuspec = MonoGame.Extended.Tweening.nuspec ..\README.md = ..\README.md readme.txt = readme.txt EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline", "MonoGame.Extended.Content.Pipeline\MonoGame.Extended.Content.Pipeline.csproj", "{28CD24BD-432C-4987-9E9D-65CFCF120EA0}" + ProjectSection(ProjectDependencies) = postProject + {8E425575-378A-4F83-88C9-F8BEBAD227C9} = {8E425575-378A-4F83-88C9-F8BEBAD227C9} + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} = {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} = {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{E5A148A1-DE7B-4D17-ABE8-831B9673B863}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Tests", "MonoGame.Extended.Tests\MonoGame.Extended.Tests.csproj", "{CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline.Tests", "MonoGame.Extended.Content.Pipeline.Tests\MonoGame.Extended.Content.Pipeline.Tests.csproj", "{75D76507-9CB0-4A60-BE46-696DF6E7AA6C}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{932F8931-4A8D-4205-BFCF-98E794207786}" + ProjectSection(SolutionItems) = preProject + Demos\README.md = Demos\README.md + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.BitmapFonts", "Demos\Demo.BitmapFonts\Demo.BitmapFonts.csproj", "{18CCC0B0-4FF9-4C23-BD46-483132E1D986}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Camera", "Demos\Demo.Camera\Demo.Camera.csproj", "{01020F15-6905-4D0E-8874-3259DFE7CEB7}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.InputListeners", "Demos\Demo.InputListeners\Demo.InputListeners.csproj", "{AE49D5C1-94DB-4A78-9A59-C58AEB03D62D}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.SceneGraphs", "Demos\Demo.SceneGraphs\Demo.SceneGraphs.csproj", "{274091CB-D74C-4DCB-849D-75D29622ADD2}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.SpaceGame", "Demos\Demo.SpaceGame\Demo.SpaceGame.csproj", "{D5314E38-8F5A-48A5-A092-BD8BBEACB5DD}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {E41B1841-FB13-489F-92DA-BEEE176A2C57} = {E41B1841-FB13-489F-92DA-BEEE176A2C57} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Sprites", "Demos\Demo.Sprites\Demo.Sprites.csproj", "{7B1DAE14-0001-48E6-853D-C3D211982BAA}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.SpriteSheetAnimatons", "Demos\Demo.SpriteSheetAnimations\Demo.SpriteSheetAnimatons.csproj", "{B7965D5F-83D2-4C04-B9FE-7D5FBF365F93}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {E41B1841-FB13-489F-92DA-BEEE176A2C57} = {E41B1841-FB13-489F-92DA-BEEE176A2C57} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.TiledMaps", "Demos\Demo.TiledMaps\Demo.TiledMaps.csproj", "{1AA1A796-CFC6-4663-8D23-FBB9CE62744B}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} = {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.ViewportAdapters", "Demos\Demo.ViewportAdapters\Demo.ViewportAdapters.csproj", "{5B629714-40BF-4584-939F-B69A9689B360}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Particles", "Demos\Demo.Particles\Demo.Particles.csproj", "{5BD30E9B-D5BF-46CB-AA34-3E2ED0819952}" ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Animations", "Demos\Demo.Animations\Demo.Animations.csproj", "{1C21F12C-FA6A-4759-B66F-EA2F67003BF4}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Gui", "Demos\Demo.Gui\Demo.Gui.csproj", "{62E83B48-D581-4E85-B7E7-9A87A811A99C}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {8E425575-378A-4F83-88C9-F8BEBAD227C9} = {8E425575-378A-4F83-88C9-F8BEBAD227C9} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Screens", "Demos\Demo.Screens\Demo.Screens.csproj", "{50C281D9-1D55-4E5C-836B-94110EC09605}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Platformer", "Demos\Demo.Platformer\Demo.Platformer.csproj", "{A7A5E924-A49D-4052-ACA2-894161007B00}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.EntityComponentSystem", "Demos\Demo.EntityComponentSystem\Demo.EntityComponentSystem.csproj", "{A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.Batching", "Demos\Demo.Batching\Demo.Batching.csproj", "{5A251894-0462-47B6-9A63-BE26AA8CABDD}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} = {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.NuclexGui", "Demos\Demo.NuclexGui\Demo.NuclexGui.csproj", "{8003BA78-CB44-46B5-85A2-2A6440C3EFDC}" + ProjectSection(ProjectDependencies) = postProject + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {28CD24BD-432C-4987-9E9D-65CFCF120EA0} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Collisions", "MonoGame.Extended.Collisions\MonoGame.Extended.Collisions.csproj", "{02562C6F-5BFB-467E-8A95-68B6CE2D635A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Gui", "MonoGame.Extended.Gui\MonoGame.Extended.Gui.csproj", "{8E425575-378A-4F83-88C9-F8BEBAD227C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Graphics", "MonoGame.Extended.Graphics\MonoGame.Extended.Graphics.csproj", "{9B3AB8A1-78AA-471A-AFD0-B10B932115BC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Tiled", "MonoGame.Extended.Tiled\MonoGame.Extended.Tiled.csproj", "{07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline.Tiled", "MonoGame.Extended.Content.Pipeline.Tiled\MonoGame.Extended.Content.Pipeline.Tiled.csproj", "{96BE0F14-3DC8-43B9-992F-654BD36CC3C7}" + ProjectSection(ProjectDependencies) = postProject + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} = {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline.Tests", "Tests\MonoGame.Extended.Content.Pipeline.Tests\MonoGame.Extended.Content.Pipeline.Tests.csproj", "{75D76507-9CB0-4A60-BE46-696DF6E7AA6C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline.Tests.Tiled", "Tests\MonoGame.Extended.Content.Pipeline.Tests.Tiled\MonoGame.Extended.Content.Pipeline.Tests.Tiled.csproj", "{90B096CB-61A5-485F-BA3E-2530166E5E72}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Gui.Tests", "Tests\MonoGame.Extended.Gui.Tests\MonoGame.Extended.Gui.Tests.csproj", "{43CBA868-9BFC-4E02-8A7A-142C603B087E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Tests", "Tests\MonoGame.Extended.Tests\MonoGame.Extended.Tests.csproj", "{CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Tiled.Tests", "Tests\MonoGame.Extended.Tiled.Tests\MonoGame.Extended.Tiled.Tests.csproj", "{A88FC71D-12E3-42A5-AFF3-89C6498C3C65}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.NuclexGui", "MonoGame.Extended.NuclexGui\MonoGame.Extended.NuclexGui.csproj", "{D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Particles", "MonoGame.Extended.Particles\MonoGame.Extended.Particles.csproj", "{6C8B9E29-D09B-4901-80FD-45AAA35882C6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Entities", "MonoGame.Extended.Entities\MonoGame.Extended.Entities.csproj", "{35FD1F05-AF04-469A-B37A-F9B36C34401C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.SceneGraphs", "MonoGame.Extended.SceneGraphs\MonoGame.Extended.SceneGraphs.csproj", "{FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Input", "MonoGame.Extended.Input\MonoGame.Extended.Input.csproj", "{49C87598-994C-49B5-BBB3-7FFC342635D3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Tweening", "MonoGame.Extended.Tweening\MonoGame.Extended.Tweening.csproj", "{1CF61F4F-A2EE-49BF-95D0-379E870DE90E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Animations", "MonoGame.Extended.Animations\MonoGame.Extended.Animations.csproj", "{587CE536-216F-41A1-B223-AE502C125B09}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Extended.Content.Pipeline.Animations", "MonoGame.Extended.Content.Pipeline.Animations\MonoGame.Extended.Content.Pipeline.Animations.csproj", "{E41B1841-FB13-489F-92DA-BEEE176A2C57}" + ProjectSection(ProjectDependencies) = postProject + {587CE536-216F-41A1-B223-AE502C125B09} = {587CE536-216F-41A1-B223-AE502C125B09} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Content.Pipeline", "Content.Pipeline", "{FC5BAF35-C9D5-4036-A6C8-796CCA6390C3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -96,22 +210,6 @@ Global {28CD24BD-432C-4987-9E9D-65CFCF120EA0}.Release|Any CPU.Build.0 = Release|Any CPU {28CD24BD-432C-4987-9E9D-65CFCF120EA0}.Release|x86.ActiveCfg = Release|Any CPU {28CD24BD-432C-4987-9E9D-65CFCF120EA0}.Release|x86.Build.0 = Release|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|x86.ActiveCfg = Debug|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|x86.Build.0 = Debug|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|Any CPU.Build.0 = Release|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|x86.ActiveCfg = Release|Any CPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|x86.Build.0 = Release|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|x86.ActiveCfg = Debug|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|x86.Build.0 = Debug|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|Any CPU.Build.0 = Release|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|x86.ActiveCfg = Release|Any CPU - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|x86.Build.0 = Release|Any CPU {18CCC0B0-4FF9-4C23-BD46-483132E1D986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {18CCC0B0-4FF9-4C23-BD46-483132E1D986}.Debug|Any CPU.Build.0 = Debug|Any CPU {18CCC0B0-4FF9-4C23-BD46-483132E1D986}.Debug|x86.ActiveCfg = Debug|Any CPU @@ -192,13 +290,212 @@ Global {5BD30E9B-D5BF-46CB-AA34-3E2ED0819952}.Release|Any CPU.Build.0 = Release|Any CPU {5BD30E9B-D5BF-46CB-AA34-3E2ED0819952}.Release|x86.ActiveCfg = Release|Any CPU {5BD30E9B-D5BF-46CB-AA34-3E2ED0819952}.Release|x86.Build.0 = Release|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Debug|x86.ActiveCfg = Debug|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Debug|x86.Build.0 = Debug|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Release|Any CPU.Build.0 = Release|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Release|x86.ActiveCfg = Release|Any CPU + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4}.Release|x86.Build.0 = Release|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Debug|x86.ActiveCfg = Debug|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Debug|x86.Build.0 = Debug|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Release|Any CPU.Build.0 = Release|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Release|x86.ActiveCfg = Release|Any CPU + {62E83B48-D581-4E85-B7E7-9A87A811A99C}.Release|x86.Build.0 = Release|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Debug|x86.ActiveCfg = Debug|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Debug|x86.Build.0 = Debug|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Release|Any CPU.Build.0 = Release|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Release|x86.ActiveCfg = Release|Any CPU + {50C281D9-1D55-4E5C-836B-94110EC09605}.Release|x86.Build.0 = Release|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Debug|x86.ActiveCfg = Debug|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Debug|x86.Build.0 = Debug|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Release|Any CPU.Build.0 = Release|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Release|x86.ActiveCfg = Release|Any CPU + {A7A5E924-A49D-4052-ACA2-894161007B00}.Release|x86.Build.0 = Release|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Debug|x86.ActiveCfg = Debug|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Debug|x86.Build.0 = Debug|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Release|Any CPU.Build.0 = Release|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Release|x86.ActiveCfg = Release|Any CPU + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE}.Release|x86.Build.0 = Release|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Debug|x86.ActiveCfg = Debug|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Debug|x86.Build.0 = Debug|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Release|Any CPU.Build.0 = Release|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Release|x86.ActiveCfg = Release|Any CPU + {5A251894-0462-47B6-9A63-BE26AA8CABDD}.Release|x86.Build.0 = Release|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Debug|x86.ActiveCfg = Debug|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Debug|x86.Build.0 = Debug|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Release|Any CPU.Build.0 = Release|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Release|x86.ActiveCfg = Release|Any CPU + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC}.Release|x86.Build.0 = Release|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Debug|x86.ActiveCfg = Debug|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Debug|x86.Build.0 = Debug|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Release|Any CPU.Build.0 = Release|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Release|x86.ActiveCfg = Release|Any CPU + {02562C6F-5BFB-467E-8A95-68B6CE2D635A}.Release|x86.Build.0 = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|x86.ActiveCfg = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Debug|x86.Build.0 = Debug|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|Any CPU.Build.0 = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|x86.ActiveCfg = Release|Any CPU + {8E425575-378A-4F83-88C9-F8BEBAD227C9}.Release|x86.Build.0 = Release|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Debug|x86.ActiveCfg = Debug|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Debug|x86.Build.0 = Debug|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Release|Any CPU.Build.0 = Release|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Release|x86.ActiveCfg = Release|Any CPU + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC}.Release|x86.Build.0 = Release|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Debug|x86.ActiveCfg = Debug|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Debug|x86.Build.0 = Debug|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Release|Any CPU.Build.0 = Release|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Release|x86.ActiveCfg = Release|Any CPU + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902}.Release|x86.Build.0 = Release|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Debug|x86.Build.0 = Debug|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Release|Any CPU.Build.0 = Release|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Release|x86.ActiveCfg = Release|Any CPU + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7}.Release|x86.Build.0 = Release|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|x86.ActiveCfg = Debug|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Debug|x86.Build.0 = Debug|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|Any CPU.Build.0 = Release|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|x86.ActiveCfg = Release|Any CPU + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C}.Release|x86.Build.0 = Release|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Debug|x86.ActiveCfg = Debug|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Debug|x86.Build.0 = Debug|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Release|Any CPU.Build.0 = Release|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Release|x86.ActiveCfg = Release|Any CPU + {90B096CB-61A5-485F-BA3E-2530166E5E72}.Release|x86.Build.0 = Release|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Debug|x86.ActiveCfg = Debug|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Debug|x86.Build.0 = Debug|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Release|Any CPU.Build.0 = Release|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Release|x86.ActiveCfg = Release|Any CPU + {43CBA868-9BFC-4E02-8A7A-142C603B087E}.Release|x86.Build.0 = Release|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|x86.ActiveCfg = Debug|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Debug|x86.Build.0 = Debug|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|Any CPU.Build.0 = Release|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|x86.ActiveCfg = Release|Any CPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1}.Release|x86.Build.0 = Release|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Debug|x86.ActiveCfg = Debug|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Debug|x86.Build.0 = Debug|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Release|Any CPU.Build.0 = Release|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Release|x86.ActiveCfg = Release|Any CPU + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65}.Release|x86.Build.0 = Release|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Debug|x86.ActiveCfg = Debug|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Debug|x86.Build.0 = Debug|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Release|Any CPU.Build.0 = Release|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Release|x86.ActiveCfg = Release|Any CPU + {D8BC4F21-E71D-46CE-B6D3-259F1E0DFABA}.Release|x86.Build.0 = Release|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Debug|x86.Build.0 = Debug|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Release|Any CPU.Build.0 = Release|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Release|x86.ActiveCfg = Release|Any CPU + {6C8B9E29-D09B-4901-80FD-45AAA35882C6}.Release|x86.Build.0 = Release|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Debug|x86.ActiveCfg = Debug|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Debug|x86.Build.0 = Debug|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Release|Any CPU.Build.0 = Release|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Release|x86.ActiveCfg = Release|Any CPU + {35FD1F05-AF04-469A-B37A-F9B36C34401C}.Release|x86.Build.0 = Release|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Debug|x86.Build.0 = Debug|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Release|Any CPU.Build.0 = Release|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Release|x86.ActiveCfg = Release|Any CPU + {FE61C3D7-D96D-4AA4-9EF1-17E457BB2C7C}.Release|x86.Build.0 = Release|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Debug|x86.ActiveCfg = Debug|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Debug|x86.Build.0 = Debug|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Release|Any CPU.Build.0 = Release|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Release|x86.ActiveCfg = Release|Any CPU + {49C87598-994C-49B5-BBB3-7FFC342635D3}.Release|x86.Build.0 = Release|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Debug|x86.ActiveCfg = Debug|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Debug|x86.Build.0 = Debug|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Release|Any CPU.Build.0 = Release|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Release|x86.ActiveCfg = Release|Any CPU + {1CF61F4F-A2EE-49BF-95D0-379E870DE90E}.Release|x86.Build.0 = Release|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Debug|x86.ActiveCfg = Debug|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Debug|x86.Build.0 = Debug|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Release|Any CPU.Build.0 = Release|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Release|x86.ActiveCfg = Release|Any CPU + {587CE536-216F-41A1-B223-AE502C125B09}.Release|x86.Build.0 = Release|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Debug|x86.ActiveCfg = Debug|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Debug|x86.Build.0 = Debug|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Release|Any CPU.Build.0 = Release|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Release|x86.ActiveCfg = Release|Any CPU + {E41B1841-FB13-489F-92DA-BEEE176A2C57}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} - {75D76507-9CB0-4A60-BE46-696DF6E7AA6C} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} = {FC5BAF35-C9D5-4036-A6C8-796CCA6390C3} {18CCC0B0-4FF9-4C23-BD46-483132E1D986} = {932F8931-4A8D-4205-BFCF-98E794207786} {01020F15-6905-4D0E-8874-3259DFE7CEB7} = {932F8931-4A8D-4205-BFCF-98E794207786} {AE49D5C1-94DB-4A78-9A59-C58AEB03D62D} = {932F8931-4A8D-4205-BFCF-98E794207786} @@ -209,5 +506,19 @@ Global {1AA1A796-CFC6-4663-8D23-FBB9CE62744B} = {932F8931-4A8D-4205-BFCF-98E794207786} {5B629714-40BF-4584-939F-B69A9689B360} = {932F8931-4A8D-4205-BFCF-98E794207786} {5BD30E9B-D5BF-46CB-AA34-3E2ED0819952} = {932F8931-4A8D-4205-BFCF-98E794207786} + {1C21F12C-FA6A-4759-B66F-EA2F67003BF4} = {932F8931-4A8D-4205-BFCF-98E794207786} + {62E83B48-D581-4E85-B7E7-9A87A811A99C} = {932F8931-4A8D-4205-BFCF-98E794207786} + {50C281D9-1D55-4E5C-836B-94110EC09605} = {932F8931-4A8D-4205-BFCF-98E794207786} + {A7A5E924-A49D-4052-ACA2-894161007B00} = {932F8931-4A8D-4205-BFCF-98E794207786} + {A2B9E42A-B2D1-476D-9F4B-E64824DA57EE} = {932F8931-4A8D-4205-BFCF-98E794207786} + {5A251894-0462-47B6-9A63-BE26AA8CABDD} = {932F8931-4A8D-4205-BFCF-98E794207786} + {8003BA78-CB44-46B5-85A2-2A6440C3EFDC} = {932F8931-4A8D-4205-BFCF-98E794207786} + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} = {FC5BAF35-C9D5-4036-A6C8-796CCA6390C3} + {75D76507-9CB0-4A60-BE46-696DF6E7AA6C} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {90B096CB-61A5-485F-BA3E-2530166E5E72} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {43CBA868-9BFC-4E02-8A7A-142C603B087E} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65} = {E5A148A1-DE7B-4D17-ABE8-831B9673B863} + {E41B1841-FB13-489F-92DA-BEEE176A2C57} = {FC5BAF35-C9D5-4036-A6C8-796CCA6390C3} EndGlobalSection EndGlobal diff --git a/Source/MonoGame.Extended/Angle.cs b/Source/MonoGame.Extended/Angle.cs new file mode 100644 index 000000000..6ade48421 --- /dev/null +++ b/Source/MonoGame.Extended/Angle.cs @@ -0,0 +1,224 @@ +/* +* ----------------------------------------------------------------------------- +* Original code from SlimMath project. http://code.google.com/p/slimmath/ +* Greetings to SlimDX Group. Original code published with the following license: +* ----------------------------------------------------------------------------- +* +* Copyright (c) 2007-2010 SlimDX Group +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +using System; +using System.Diagnostics; +using System.Runtime.Serialization; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + public enum AngleType : byte + { + Radian = 0, + Degree, + Revolution, //or Turn / cycle + Gradian // or Gon + } + + [DataContract] + [DebuggerDisplay("{ToString(),nq}")] + public struct Angle : IComparable, IEquatable + { + private const float _tau = (float) (Math.PI*2.0); + private const float _tauInv = (float) (0.5/Math.PI); + private const float _degreeRadian = (float) (Math.PI/180.0); + private const float _radianDegree = (float) (180.0/Math.PI); + private const float _gradianRadian = (float) (Math.PI/200.0); + private const float _radianGradian = (float) (200.0/Math.PI); + + [DataMember] + public float Radians { get; set; } + + public float Degrees + { + get { return Radians*_radianDegree; } + set { Radians = value*_degreeRadian; } + } + + public float Gradians + { + get { return Radians*_radianGradian; } + set { Radians = value*_gradianRadian; } + } + + public float Revolutions + { + get { return Radians*_tauInv; } + set { Radians = value*_tau; } + } + + public Angle(float value, AngleType angleType = AngleType.Radian) + { + switch (angleType) + { + default: + Radians = 0f; + break; + case AngleType.Radian: + Radians = value; + break; + case AngleType.Degree: + Radians = value*_degreeRadian; + break; + case AngleType.Revolution: + Radians = value*_tau; + break; + case AngleType.Gradian: + Radians = value*_gradianRadian; + break; + } + } + + public float GetValue(AngleType angleType) + { + switch (angleType) + { + default: + return 0f; + case AngleType.Radian: + return Radians; + case AngleType.Degree: + return Degrees; + case AngleType.Revolution: + return Revolutions; + case AngleType.Gradian: + return Gradians; + } + } + + public void Wrap() + { + var angle = Radians%_tau; + if (angle <= Math.PI) angle += _tau; + if (angle > Math.PI) angle -= _tau; + Radians = angle; + } + + public void WrapPositive() + { + Radians %= _tau; + if (Radians < 0d) Radians += _tau; + Radians = Radians; + } + + public static Angle FromVector(Vector2 vector) + { + return new Angle((float) Math.Atan2(-vector.Y, vector.X)); + } + + public Vector2 ToUnitVector() => ToVector(1); + + public Vector2 ToVector(float length) + { + return new Vector2(length*(float) Math.Cos(Radians), -length*(float) Math.Sin(Radians)); + } + + public static bool IsBetween(Angle value, Angle min, Angle end) + { + return end < min + ? (value >= min) || (value <= end) + : (value >= min) && (value <= end); + } + + public int CompareTo(Angle other) + { + WrapPositive(); + other.WrapPositive(); + return Radians.CompareTo(other.Radians); + } + + public bool Equals(Angle other) + { + WrapPositive(); + other.WrapPositive(); + return Radians.Equals(other.Radians); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + return obj is Angle && Equals((Angle) obj); + } + + public override int GetHashCode() + { + // ReSharper disable once NonReadonlyMemberInGetHashCode + return Radians.GetHashCode(); + } + + public static implicit operator float(Angle angle) + { + return angle.Radians; + } + + public static explicit operator Angle(float angle) + { + return new Angle(angle); + } + + public static Angle operator -(Angle angle) + { + return new Angle(-angle.Radians); + } + + public static bool operator ==(Angle a, Angle b) + { + return a.Equals(a); + } + + public static bool operator !=(Angle a, Angle b) + { + return !a.Equals(a); + } + + public static Angle operator -(Angle left, Angle right) + { + return new Angle(left.Radians - right.Radians); + } + + public static Angle operator *(Angle left, float right) + { + return new Angle(left.Radians*right); + } + + public static Angle operator *(float left, Angle right) + { + return new Angle(right.Radians*left); + } + + public static Angle operator +(Angle left, Angle right) + { + return new Angle(left.Radians + right.Radians); + } + + public override string ToString() + { + return $"{Radians} Radians"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Animations/SpriteSheetAnimation.cs b/Source/MonoGame.Extended/Animations/SpriteSheetAnimation.cs deleted file mode 100644 index 136184a40..000000000 --- a/Source/MonoGame.Extended/Animations/SpriteSheetAnimation.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace MonoGame.Extended.Animations -{ - public class SpriteSheetAnimation - { - internal SpriteSheetAnimation(string name, int framesPerSecond, int[] frameIndicies) - { - Name = name; - FramesPerSecond = framesPerSecond; - FrameIndicies = frameIndicies; - } - - public string Name { get; private set; } - public int FramesPerSecond { get; set; } - public int[] FrameIndicies { get; private set; } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroup.cs b/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroup.cs deleted file mode 100644 index ac19fe94d..000000000 --- a/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroup.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using MonoGame.Extended.TextureAtlases; - -namespace MonoGame.Extended.Animations -{ - public class SpriteSheetAnimationGroup - { - internal SpriteSheetAnimationGroup(IEnumerable frames, IEnumerable animations) - { - _frames = frames.ToArray(); - _animations = animations.ToDictionary(a => a.Name); - } - - private readonly Dictionary _animations; - public IEnumerable Animations - { - get { return _animations.Keys.OrderBy(i => i); } - } - - private readonly TextureRegion2D[] _frames; - public IEnumerable Frames => _frames; - - public SpriteSheetAnimation GetAnimation(string name) - { - return _animations[name]; - } - - public TextureRegion2D GetFrame(int index) - { - return _frames[index]; - } - - public SpriteSheetAnimation this[string name] => GetAnimation(name); - - public bool Contains(SpriteSheetAnimation animation) - { - return _animations.ContainsValue(animation); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroupReader.cs b/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroupReader.cs deleted file mode 100644 index 4194b76e7..000000000 --- a/Source/MonoGame.Extended/Animations/SpriteSheetAnimationGroupReader.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections.Generic; -using Microsoft.Xna.Framework.Content; -using MonoGame.Extended.Content; -using MonoGame.Extended.TextureAtlases; - -namespace MonoGame.Extended.Animations -{ - public class SpriteSheetAnimationGroupReader : ContentTypeReader - { - protected override SpriteSheetAnimationGroup Read(ContentReader reader, SpriteSheetAnimationGroup existingInstance) - { - var textureAtlasAssetName = reader.GetRelativeAssetPath(reader.ReadString()); - var textureAtlas = reader.ContentManager.Load(textureAtlasAssetName); - var frameCount = reader.ReadInt32(); - var regions = new List(); - var animations = new List(); - - for (var i = 0; i < frameCount; i++) - { - var frameName = reader.ReadString(); - var textureRegion = textureAtlas[frameName]; - regions.Add(textureRegion); - } - - var animationCount = reader.ReadInt32(); - - for (var i = 0; i < animationCount; i++) - { - var name = reader.ReadString(); - var framesPerSecond = reader.ReadInt32(); - - var frameIndexCount = reader.ReadInt32(); - var frameIndices = new int[frameIndexCount]; - - for (var f = 0; f < frameIndexCount; f++) - frameIndices[f] = reader.ReadInt32(); - - animations.Add(new SpriteSheetAnimation(name, framesPerSecond, frameIndices)); - } - - return new SpriteSheetAnimationGroup(regions, animations); - } - } -} diff --git a/Source/MonoGame.Extended/Animations/SpriteSheetAnimator.cs b/Source/MonoGame.Extended/Animations/SpriteSheetAnimator.cs deleted file mode 100644 index ab9cb452c..000000000 --- a/Source/MonoGame.Extended/Animations/SpriteSheetAnimator.cs +++ /dev/null @@ -1,170 +0,0 @@ -using System; -using System.Linq; -using Microsoft.Xna.Framework; -using MonoGame.Extended.Sprites; - -namespace MonoGame.Extended.Animations -{ - public class SpriteSheetAnimator : IUpdate - { - public SpriteSheetAnimator(SpriteSheetAnimationGroup animationGroup) - : this(animationGroup, new Sprite(animationGroup.Frames.First())) - { - } - - public SpriteSheetAnimator(SpriteSheetAnimationGroup animationGroup, Sprite sprite) - { - _animationGroup = animationGroup; - _frameIndex = 0; - - Sprite = sprite; - IsPlaying = true; - IsLooping = true; - - if (Sprite != null && _animationGroup.Frames.Any()) - Sprite.TextureRegion = _animationGroup.Frames.First(); - } - - private readonly SpriteSheetAnimationGroup _animationGroup; - private SpriteSheetAnimation _currentAnimation; - private float _nextFrameDelay; - private int _frameIndex; - private Action _onCompleteAction; - - public Sprite Sprite { get; set; } - public bool IsPlaying { get; private set; } - public bool IsLooping { get; set; } - - //public IEnumerable Frames - //{ - // get { return _frames; } - //} - - //public IEnumerable Animations - //{ - // get { return _animations.Keys.OrderBy(i => i); } - //} - - //public int AddFrame(TextureRegion2D textureRegion) - //{ - // var index = _frames.Count; - // _frames.Add(textureRegion); - - // if (Sprite != null && Sprite.TextureRegion == null) - // Sprite.TextureRegion = textureRegion; - - // return index; - //} - - //public bool RemoveFrame(TextureRegion2D textureRegion) - //{ - // return _frames.Remove(textureRegion); - //} - - //public bool RemoveFrame(string name) - //{ - // var frame = GetFrame(name); - // return RemoveFrame(frame); - //} - - //public void RemoveFrameAt(int frameIndex) - //{ - // _frames.RemoveAt(frameIndex); - //} - - //public TextureRegion2D GetFrameAt(int index) - //{ - // return _frames[index]; - //} - - //public TextureRegion2D GetFrame(string name) - //{ - // return _frames.FirstOrDefault(f => f.Name == name); - //} - - //public SpriteSheetAnimation AddAnimation(string name, int framesPerSecond, int[] frameIndices) - //{ - // if (_animations.ContainsKey(name)) - // throw new InvalidOperationException(string.Format("Animator already contrains an animation called {0}", name)); - - // var animation = new SpriteSheetAnimation(name, framesPerSecond, frameIndices); - // _animations.Add(name, animation); - // return animation; - //} - - //public SpriteSheetAnimation AddAnimation(string name, int framesPerSecond, int firstFrameIndex, int lastFrameIndex) - //{ - // var frameIndices = new int[lastFrameIndex - firstFrameIndex + 1]; - - // for (var i = 0; i < frameIndices.Length; i++) - // frameIndices[i] = firstFrameIndex + i; - - // return AddAnimation(name, framesPerSecond, frameIndices); - //} - - //public bool RemoveAnimation(string name) - //{ - // SpriteSheetAnimation animation; - - // if (!_animations.TryGetValue(name, out animation)) - // return false; - - // if (_currentAnimation == animation) - // _currentAnimation = null; - - // _animations.Remove(name); - // return true; - //} - - public void PlayAnimation(SpriteSheetAnimation animation, Action onCompleteAction = null) - { - if (!_animationGroup.Contains(animation)) - throw new InvalidOperationException("Animation does not belong to this animator"); - - PlayAnimation(animation.Name); - } - - public void PlayAnimation(string name, Action onCompleteAction = null) - { - if(_currentAnimation != null && _currentAnimation.Name == name && IsPlaying) - return; - - _currentAnimation = _animationGroup.GetAnimation(name); - _frameIndex = 0; - _onCompleteAction = onCompleteAction; - IsPlaying = true; - } - - public void Update(GameTime gameTime) - { - if(!IsPlaying || _currentAnimation == null || _currentAnimation.FrameIndicies.Length == 0) - return; - - var deltaSeconds = (float) gameTime.ElapsedGameTime.TotalSeconds; - - if (_nextFrameDelay <= 0) - { - _nextFrameDelay = 1.0f / _currentAnimation.FramesPerSecond; - _frameIndex++; - - if (_frameIndex >= _currentAnimation.FrameIndicies.Length) - { - _frameIndex = 0; - - if (!IsLooping) - IsPlaying = false; - - var onCompleteAction = _onCompleteAction; - onCompleteAction?.Invoke(); - } - - var atlasIndex = _currentAnimation.FrameIndicies[_frameIndex]; - - if(Sprite != null) - Sprite.TextureRegion = _animationGroup.GetFrame(atlasIndex); - } - - _nextFrameDelay -= deltaSeconds; - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/BitmapFonts/BitmapFont.cs b/Source/MonoGame.Extended/BitmapFonts/BitmapFont.cs index 34dfb7e09..570378174 100644 --- a/Source/MonoGame.Extended/BitmapFonts/BitmapFont.cs +++ b/Source/MonoGame.Extended/BitmapFonts/BitmapFont.cs @@ -1,70 +1,85 @@ -using System; using System.Collections.Generic; using System.Linq; -using System.Text; using Microsoft.Xna.Framework; namespace MonoGame.Extended.BitmapFonts { - public class BitmapFont + public class BitmapFont { - internal BitmapFont(IEnumerable regions, int lineHeight) + private readonly Dictionary _characterMap; + + public BitmapFont(string name, IEnumerable regions, int lineHeight) { - _characterMap = regions.ToDictionary(r => r.Character);// BuildCharacterMap(textures, _fontFile); + _characterMap = regions.ToDictionary(r => r.Character); + + Name = name; LineHeight = lineHeight; } - private readonly Dictionary _characterMap; + public string Name { get; } + public int LineHeight { get; } + public int LetterSpacing { get; set; } = 0; - public int LineHeight { get; private set; } - - public BitmapFontRegion GetCharacterRegion(char character) + public BitmapFontRegion GetCharacterRegion(int character) { BitmapFontRegion region; return _characterMap.TryGetValue(character, out region) ? region : null; } - public Size GetSize(string text) + public static int GetUnicodeCodePoint(string s, int index) { - var width = 0; - var height = 0; - - foreach (var c in text) - { - BitmapFontRegion fontRegion; - - if (_characterMap.TryGetValue(c, out fontRegion)) - { - width += fontRegion.XAdvance; + return char.IsLowSurrogate(s, index) ? 0 : char.ConvertToUtf32(s, index); + } - if (fontRegion.Height + fontRegion.YOffset > height) - height = fontRegion.Height + fontRegion.YOffset; - } - } + public Size2 MeasureString(string text) + { + if (string.IsNullOrEmpty(text)) + return Size2.Empty; - return new Size(width, height); + var stringRectangle = GetStringRectangle(text, Point.Zero); + return new Size2(stringRectangle.Width, stringRectangle.Height); } - public Vector2 MeasureString(string text) + public Rectangle GetStringRectangle(string text, Vector2 position) { - if (text == null) throw new ArgumentNullException(nameof(text)); - - var size = GetSize(text); - return new Vector2(size.Width, size.Height); + return GetStringRectangle(text, position.ToPoint()); } - public Vector2 MeasureString(StringBuilder stringBuilder) + public Rectangle GetStringRectangle(string text, Point position) { - if (stringBuilder == null) throw new ArgumentNullException(nameof(stringBuilder)); + var dx = position.X; + var dy = position.Y; + var rectangle = new Rectangle(dx, dy, 0, LineHeight); - return MeasureString(stringBuilder.ToString()); + for (var i = 0; i < text.Length; i++) + { + var character = GetUnicodeCodePoint(text, i); + var fontRegion = GetCharacterRegion(character); + + if (fontRegion != null) + { + var characterPosition = new Point(dx + fontRegion.XOffset, dy + fontRegion.YOffset); + var right = characterPosition.X + fontRegion.Width; + + if (right > rectangle.Right) + rectangle.Width = right - rectangle.Left; + + dx += fontRegion.XAdvance + LetterSpacing; + } + + if (character == '\n') + { + rectangle.Height += LineHeight; + dx = position.X; + } + } + + return rectangle; } - public Rectangle GetStringRectangle(string text, Vector2 position) + public override string ToString() { - var size = GetSize(text); - var p = position.ToPoint(); - return new Rectangle(p.X, p.Y, size.Width, size.Height); + return $"{Name}"; } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/BitmapFonts/BitmapFontExtensions.cs b/Source/MonoGame.Extended/BitmapFonts/BitmapFontExtensions.cs index 0acca2f3b..b5209cd94 100644 --- a/Source/MonoGame.Extended/BitmapFonts/BitmapFontExtensions.cs +++ b/Source/MonoGame.Extended/BitmapFonts/BitmapFontExtensions.cs @@ -7,21 +7,49 @@ namespace MonoGame.Extended.BitmapFonts { public static class BitmapFontExtensions { - public static void DrawString(this SpriteBatch spriteBatch, BitmapFont bitmapFont, string text, Vector2 position, Color color) + /// + /// Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, + /// origin, scale, effects and layer. + /// + /// + /// A font for displaying text. + /// The text message to display. + /// The location (in screen coordinates) to draw the text. + /// + /// The to tint a sprite. Use for full color with no + /// tinting. + /// + /// Specifies the angle (in radians) to rotate the text about its origin. + /// The origin for each letter; the default is (0,0) which represents the upper-left corner. + /// Scale factor. + /// Effects to apply. + /// + /// The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. + /// Use SpriteSortMode if you want sprites to be sorted during drawing. + /// + /// Clips the boundaries of the text so that it's not drawn outside the clipping rectangle + public static void DrawString(this SpriteBatch spriteBatch, BitmapFont bitmapFont, string text, Vector2 position, + Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effect, float layerDepth, Rectangle? clippingRectangle = null) { + if (text == null) throw new ArgumentNullException(nameof(text)); + if (effect != SpriteEffects.None) throw new NotSupportedException($"{effect} is not currently supported for {nameof(BitmapFont)}"); + var dx = position.X; var dy = position.Y; - foreach (var character in text) + for (var i = 0; i < text.Length; i++) { + var character = BitmapFont.GetUnicodeCodePoint(text, i); var fontRegion = bitmapFont.GetCharacterRegion(character); if (fontRegion != null) { - var charPosition = new Vector2(dx + fontRegion.XOffset, dy + fontRegion.YOffset); + var characterPosition = new Vector2(dx + fontRegion.XOffset, dy + fontRegion.YOffset); + var characterOrigin = position - characterPosition + origin; + + spriteBatch.Draw(fontRegion.TextureRegion, position, color, rotation, characterOrigin, scale, effect, layerDepth, clippingRectangle); - spriteBatch.Draw(fontRegion.TextureRegion, charPosition, color); - dx += fontRegion.XAdvance; + dx += fontRegion.XAdvance + bitmapFont.LetterSpacing; } if (character == '\n') @@ -32,34 +60,80 @@ public static void DrawString(this SpriteBatch spriteBatch, BitmapFont bitmapFon } } - public static void DrawString(this SpriteBatch spriteBatch, BitmapFont bitmapFont, string text, Vector2 position, Color color, int wrapWidth) + /// + /// Adds a string to a batch of sprites for rendering using the specified font, text, position, color, rotation, + /// origin, scale, effects and layer. + /// + /// + /// A font for displaying text. + /// The text message to display. + /// The location (in screen coordinates) to draw the text. + /// + /// The to tint a sprite. Use for full color with no + /// tinting. + /// + /// Specifies the angle (in radians) to rotate the text about its origin. + /// The origin for each letter; the default is (0,0) which represents the upper-left corner. + /// Scale factor. + /// Effects to apply. + /// + /// The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. + /// Use SpriteSortMode if you want sprites to be sorted during drawing. + /// + /// Clips the boundaries of the text so that it's not drawn outside the clipping rectangle + public static void DrawString(this SpriteBatch spriteBatch, BitmapFont font, string text, Vector2 position, + Color color, float rotation, Vector2 origin, float scale, SpriteEffects effect, float layerDepth, Rectangle? clippingRectangle = null) { - var dx = position.X; - var dy = position.Y; - var sentences = text.Split(new[] {'\n'}, StringSplitOptions.None); - - foreach (var sentence in sentences) - { - var words = sentence.Split(new[] { ' ' }, StringSplitOptions.None); - - for (var i = 0; i < words.Length; i++) - { - var word = words[i]; - var size = bitmapFont.GetStringRectangle(word, Vector2.Zero); - - if (i != 0 && dx + size.Width >= wrapWidth) - { - dy += bitmapFont.LineHeight; - dx = position.X; - } + DrawString(spriteBatch, font, text, position, color, rotation, origin, new Vector2(scale, scale), effect, layerDepth, clippingRectangle); + } - DrawString(spriteBatch, bitmapFont, word, new Vector2(dx, dy), color); - dx += size.Width + bitmapFont.GetCharacterRegion(' ').XAdvance; - } + /// + /// Adds a string to a batch of sprites for rendering using the specified font, text, position, color, layer, + /// and width (in pixels) where to wrap the text at. + /// + /// + /// objects are loaded from the Content Manager. See the class for + /// more information. + /// Before any calls to you must call . Once all calls to + /// are complete, call . + /// Use a newline character (\n) to draw more than one line of text. + /// + /// + /// A font for displaying text. + /// The text message to display. + /// The location (in screen coordinates) to draw the text. + /// + /// The to tint a sprite. Use for full color with no + /// tinting. + /// + /// + /// The depth of a layer. By default, 0 represents the front layer and 1 represents a back layer. + /// Use SpriteSortMode if you want sprites to be sorted during drawing. + /// + /// Clips the boundaries of the text so that it's not drawn outside the clipping rectangle + public static void DrawString(this SpriteBatch spriteBatch, BitmapFont font, string text, Vector2 position, Color color, float layerDepth, Rectangle? clippingRectangle = null) + { + DrawString(spriteBatch, font, text, position, color, rotation: 0, origin: Vector2.Zero, scale: Vector2.One, effect: SpriteEffects.None, + layerDepth: layerDepth, clippingRectangle: clippingRectangle); + } - dx = position.X; - dy += bitmapFont.LineHeight; - } + /// + /// Adds a string to a batch of sprites for rendering using the specified font, text, position, color, + /// and width (in pixels) where to wrap the text at. The text is drawn on layer 0f. + /// + /// + /// A font for displaying text. + /// The text message to display. + /// The location (in screen coordinates) to draw the text. + /// + /// The to tint a sprite. Use for full color with no + /// tinting. + /// + /// Clips the boundaries of the text so that it's not drawn outside the clipping rectangle + public static void DrawString(this SpriteBatch spriteBatch, BitmapFont font, string text, Vector2 position, Color color, Rectangle? clippingRectangle = null) + { + DrawString(spriteBatch, font, text, position, color, rotation: 0, origin: Vector2.Zero, scale: Vector2.One, effect: SpriteEffects.None, + layerDepth: 0, clippingRectangle: clippingRectangle); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/BitmapFonts/BitmapFontReader.cs b/Source/MonoGame.Extended/BitmapFonts/BitmapFontReader.cs index 3e88cf716..974e24cd8 100644 --- a/Source/MonoGame.Extended/BitmapFonts/BitmapFontReader.cs +++ b/Source/MonoGame.Extended/BitmapFonts/BitmapFontReader.cs @@ -21,7 +21,7 @@ protected override BitmapFont Read(ContentReader reader, BitmapFont existingInst } var textures = assets - .Select(textureName => reader.ContentManager.Load(reader.GetRelativeAssetPath(textureName))) + .Select(textureName => reader.ContentManager.Load(reader.GetRelativeAssetName(textureName))) .ToArray(); var lineHeight = reader.ReadInt32(); @@ -30,7 +30,7 @@ protected override BitmapFont Read(ContentReader reader, BitmapFont existingInst for (var r = 0; r < regionCount; r++) { - var character = (char)reader.ReadInt32(); + var character = reader.ReadInt32(); var textureIndex = reader.ReadInt32(); var x = reader.ReadInt32(); var y = reader.ReadInt32(); @@ -42,8 +42,8 @@ protected override BitmapFont Read(ContentReader reader, BitmapFont existingInst var textureRegion = new TextureRegion2D(textures[textureIndex], x, y, width, height); regions[r] = new BitmapFontRegion(textureRegion, character, xOffset, yOffset, xAdvance); } - - return new BitmapFont(regions, lineHeight); + + return new BitmapFont(reader.AssetName, regions, lineHeight); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/BitmapFonts/BitmapFontRegion.cs b/Source/MonoGame.Extended/BitmapFonts/BitmapFontRegion.cs index 6cd2aafed..fb0a8e607 100644 --- a/Source/MonoGame.Extended/BitmapFonts/BitmapFontRegion.cs +++ b/Source/MonoGame.Extended/BitmapFonts/BitmapFontRegion.cs @@ -1,10 +1,11 @@ +using System; using MonoGame.Extended.TextureAtlases; namespace MonoGame.Extended.BitmapFonts { public class BitmapFontRegion { - public BitmapFontRegion(TextureRegion2D textureRegion, char character, int xOffset, int yOffset, int xAdvance) + public BitmapFontRegion(TextureRegion2D textureRegion, int character, int xOffset, int yOffset, int xAdvance) { TextureRegion = textureRegion; Character = character; @@ -12,15 +13,18 @@ public BitmapFontRegion(TextureRegion2D textureRegion, char character, int xOffs YOffset = yOffset; XAdvance = xAdvance; } - - public char Character { get; set; } - public TextureRegion2D TextureRegion { get; } - public int XOffset { get; set; } - public int YOffset { get; set; } - public int XAdvance { get; set; } + public int Character { get; } + public TextureRegion2D TextureRegion { get; } + public int XOffset { get; } + public int YOffset { get; } + public int XAdvance { get; } public int Width => TextureRegion.Width; - public int Height => TextureRegion.Height; + + public override string ToString() + { + return $"{Convert.ToChar(Character)} {TextureRegion}"; + } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/BoundingRectangle.cs b/Source/MonoGame.Extended/BoundingRectangle.cs new file mode 100644 index 000000000..4f28569c8 --- /dev/null +++ b/Source/MonoGame.Extended/BoundingRectangle.cs @@ -0,0 +1,579 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.2; Bounding Volumes - Axis-aligned Bounding Boxes (AABBs). pg 77 + + /// + /// An axis-aligned, four sided, two dimensional box defined by a centre and a radii + /// . + /// + /// + /// + /// An is categorized by having its faces oriented in such a way that its + /// face normals are at all times parallel with the axes of the given coordinate system. + /// + /// + /// The of a rotated will be equivalent or larger + /// in size + /// than the original depending on the angle of rotation. + /// + /// + /// + /// + [DebuggerDisplay("{" + nameof(DebugDisplayString) + ",nq}")] + public struct BoundingRectangle : IEquatable, + IEquatableByRef + { + /// + /// The with and + /// set to . + /// + public static readonly BoundingRectangle Empty = new BoundingRectangle(); + + /// + /// The centre position of this . + /// + public Point2 Center; + + /// + /// The distance from the point along both axes to any point on the boundary of this + /// . + /// + public Vector2 HalfExtents; + + /// + /// Initializes a new instance of the structure from the specified centre + /// and the radii . + /// + /// The centre . + /// The radii . + public BoundingRectangle(Point2 center, Size2 halfExtents) + { + Center = center; + HalfExtents = halfExtents; + } + + /// + /// Computes the from a minimum and maximum + /// . + /// + /// The minimum point. + /// The maximum point. + /// The resulting bounding rectangle. + public static void CreateFrom(Point2 minimum, Point2 maximum, out BoundingRectangle result) + { + result.Center = new Point2((maximum.X + minimum.X) * 0.5f, (maximum.Y + minimum.Y) * 0.5f); + result.HalfExtents = new Vector2((maximum.X - minimum.X) * 0.5f, (maximum.Y - minimum.Y) * 0.5f); + } + + /// + /// Computes the from a minimum and maximum + /// . + /// + /// The minimum point. + /// The maximum point. + /// The resulting . + public static BoundingRectangle CreateFrom(Point2 minimum, Point2 maximum) + { + BoundingRectangle result; + CreateFrom(minimum, maximum, out result); + return result; + } + + /// + /// Computes the from a list of structures. + /// + /// The points. + /// The resulting bounding rectangle. + public static void CreateFrom(IReadOnlyList points, out BoundingRectangle result) + { + Point2 minimum; + Point2 maximum; + PrimitivesHelper.CreateRectangleFromPoints(points, out minimum, out maximum); + CreateFrom(minimum, maximum, out result); + } + + /// + /// Computes the from a list of structures. + /// + /// The points. + /// The resulting . + public static BoundingRectangle CreateFrom(IReadOnlyList points) + { + BoundingRectangle result; + CreateFrom(points, out result); + return result; + } + + /// + /// Computes the from the specified transformed by + /// the + /// specified . + /// + /// The bounding rectangle. + /// The transform matrix. + /// The resulting bounding rectangle. + /// + /// The from the transformed by the + /// . + /// + /// + /// + /// If a transformed is used for then the + /// resulting will have the compounded transformation, which most likely is + /// not desired. + /// + /// + public static void Transform(ref BoundingRectangle boundingRectangle, + ref Matrix2D transformMatrix, out BoundingRectangle result) + { + PrimitivesHelper.TransformRectangle(ref boundingRectangle.Center, ref boundingRectangle.HalfExtents, ref transformMatrix); + result.Center = boundingRectangle.Center; + result.HalfExtents = boundingRectangle.HalfExtents; + } + + /// + /// Computes the from the specified transformed by + /// the + /// specified . + /// + /// The bounding rectangle. + /// The transform matrix. + /// + /// The from the transformed by the + /// . + /// + /// + /// + /// If a transformed is used for then the + /// resulting will have the compounded transformation, which most likely is + /// not desired. + /// + /// + public static BoundingRectangle Transform(BoundingRectangle boundingRectangle, + ref Matrix2D transformMatrix) + { + BoundingRectangle result; + Transform(ref boundingRectangle, ref transformMatrix, out result); + return result; + } + + /// + /// Computes the that contains the two specified + /// structures. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// The resulting bounding rectangle that contains both the and the + /// . + public static void Union(ref BoundingRectangle first, ref BoundingRectangle second, out BoundingRectangle result) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 6.5; Bounding Volume Hierarchies - Merging Bounding Volumes. pg 267 + + var firstMinimum = first.Center - first.HalfExtents; + var firstMaximum = first.Center + first.HalfExtents; + var secondMinimum = second.Center - second.HalfExtents; + var secondMaximum = second.Center + second.HalfExtents; + + var minimum = Point2.Minimum(firstMinimum, secondMinimum); + var maximum = Point2.Maximum(firstMaximum, secondMaximum); + + result = CreateFrom(minimum, maximum); + } + + /// + /// Computes the that contains the two specified + /// structures. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// A that contains both the and the + /// . + /// + public static BoundingRectangle Union(BoundingRectangle first, BoundingRectangle second) + { + BoundingRectangle result; + Union(ref first, ref second, out result); + return result; + } + + /// + /// Computes the that contains both the specified + /// and this . + /// + /// The bounding rectangle. + /// + /// A that contains both the and + /// this + /// . + /// + public BoundingRectangle Union(BoundingRectangle boundingRectangle) + { + return Union(this, boundingRectangle); + } + + /// + /// Computes the that is in common between the two specified + /// structures. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// The resulting bounding rectangle that is in common between both the and + /// the , if they intersect; otherwise, . + public static void Intersection(ref BoundingRectangle first, + ref BoundingRectangle second, out BoundingRectangle result) + { + var firstMinimum = first.Center - first.HalfExtents; + var firstMaximum = first.Center + first.HalfExtents; + var secondMinimum = second.Center - second.HalfExtents; + var secondMaximum = second.Center + second.HalfExtents; + + var minimum = Point2.Maximum(firstMinimum, secondMinimum); + var maximum = Point2.Minimum(firstMaximum, secondMaximum); + + if ((maximum.X < minimum.X) || (maximum.Y < minimum.Y)) + result = new BoundingRectangle(); + else + result = CreateFrom(minimum, maximum); + } + + /// + /// Computes the that is in common between the two specified + /// structures. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// A that is in common between both the and + /// the , if they intersect; otherwise, . + /// + public static BoundingRectangle Intersection(BoundingRectangle first, + BoundingRectangle second) + { + BoundingRectangle result; + Intersection(ref first, ref second, out result); + return result; + } + + /// + /// Computes the that is in common between the specified + /// and this . + /// + /// The bounding rectangle. + /// + /// A that is in common between both the and + /// this , if they intersect; otherwise, . + /// + public BoundingRectangle Intersection(BoundingRectangle boundingRectangle) + { + BoundingRectangle result; + Intersection(ref this, ref boundingRectangle, out result); + return result; + } + + /// + /// Determines whether the two specified structures intersect. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// true if the intersects with the ; otherwise, false. + /// + public static bool Intersects(ref BoundingRectangle first, ref BoundingRectangle second) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.2; Bounding Volumes - Axis-aligned Bounding Boxes (AABBs). pg 80 + + var distance = first.Center - second.Center; + var radii = first.HalfExtents + second.HalfExtents; + return Math.Abs(distance.X) <= radii.X && Math.Abs(distance.Y) <= radii.Y; + } + + /// + /// Determines whether the two specified structures intersect. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// true if the intersects with the ; otherwise, false. + /// + public static bool Intersects(BoundingRectangle first, BoundingRectangle second) + { + return Intersects(ref first, ref second); + } + + /// + /// Determines whether the specified intersects with this + /// . + /// + /// The bounding rectangle. + /// + /// true if the intersects with this + /// ; otherwise, + /// false. + /// + public bool Intersects(ref BoundingRectangle boundingRectangle) + { + return Intersects(ref this, ref boundingRectangle); + } + + /// + /// Determines whether the specified intersects with this + /// . + /// + /// The bounding rectangle. + /// + /// true if the intersects with this + /// ; otherwise, + /// false. + /// + public bool Intersects(BoundingRectangle boundingRectangle) + { + return Intersects(ref this, ref boundingRectangle); + } + + /// + /// Updates this from a list of structures. + /// + /// The points. + public void UpdateFromPoints(IReadOnlyList points) + { + var boundingRectangle = CreateFrom(points); + Center = boundingRectangle.Center; + HalfExtents = boundingRectangle.HalfExtents; + } + + /// + /// Determines whether the specified contains the specified + /// . + /// + /// The bounding rectangle. + /// The point. + /// + /// true if the contains the ; otherwise, + /// false. + /// + public static bool Contains(ref BoundingRectangle boundingRectangle, ref Point2 point) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.2; Bounding Volumes - Axis-aligned Bounding Boxes (AABBs). pg 78 + + var distance = boundingRectangle.Center - point; + var radii = boundingRectangle.HalfExtents; + + return (Math.Abs(distance.X) <= radii.X) && (Math.Abs(distance.Y) <= radii.Y); + } + + /// + /// Determines whether the specified contains the specified + /// . + /// + /// The bounding rectangle. + /// The point. + /// + /// true if the contains the ; otherwise, + /// false. + /// + public static bool Contains(BoundingRectangle boundingRectangle, Point2 point) + { + return Contains(ref boundingRectangle, ref point); + } + + /// + /// Determines whether this contains the specified . + /// + /// The point. + /// + /// true if this contains the ; otherwise, + /// false. + /// + public bool Contains(Point2 point) + { + return Contains(this, point); + } + + /// + /// Computes the squared distance from this to a . + /// + /// The point. + /// The squared distance from this to the . + public float SquaredDistanceTo(Point2 point) + { + return PrimitivesHelper.SquaredDistanceToPointFromRectangle(Center - HalfExtents, Center + HalfExtents, point); + } + + /// + /// Computes the closest on this to a specified + /// . + /// + /// The point. + /// The closest on this to the . + public Point2 ClosestPointTo(Point2 point) + { + Point2 result; + PrimitivesHelper.ClosestPointToPointFromRectangle(Center - HalfExtents, Center + HalfExtents, point, out result); + return result; + } + + /// + /// Compares two structures. The result specifies whether the values of the + /// and fields of the two structures + /// are equal. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// true if the and fields of the two + /// structures are equal; otherwise, false. + /// + public static bool operator ==(BoundingRectangle first, BoundingRectangle second) + { + return first.Equals(ref second); + } + + /// + /// Compares two structures. The result specifies whether the values of the + /// and fields of the two structures + /// are unequal. + /// + /// The first bounding rectangle. + /// The second bounding rectangle. + /// + /// true if the and fields of the two + /// structures are unequal; otherwise, false. + /// + public static bool operator !=(BoundingRectangle first, BoundingRectangle second) + { + return !(first == second); + } + + /// + /// Indicates whether this is equal to another + /// . + /// + /// The bounding rectangle. + /// + /// true if this is equal to the ; + /// otherwise, false. + /// + public bool Equals(BoundingRectangle boundingRectangle) + { + return Equals(ref boundingRectangle); + } + + /// + /// Indicates whether this is equal to another . + /// + /// The bounding rectangle. + /// + /// true if this is equal to the ; + /// otherwise, + /// false. + /// + public bool Equals(ref BoundingRectangle boundingRectangle) + { + return (boundingRectangle.Center == Center) && (boundingRectangle.HalfExtents == HalfExtents); + } + + /// + /// Returns a value indicating whether this is equal to a specified object. + /// + /// The object to make the comparison with. + /// + /// true if this is equal to ; otherwise, false. + /// + public override bool Equals(object obj) + { + if (obj is BoundingRectangle) + return Equals((BoundingRectangle)obj); + return false; + } + + /// + /// Returns a hash code of this suitable for use in hashing algorithms and data + /// structures like a hash table. + /// + /// + /// A hash code of this . + /// + public override int GetHashCode() + { + unchecked + { + return (Center.GetHashCode() * 397) ^ HalfExtents.GetHashCode(); + } + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The rectangle. + /// + /// The resulting . + /// + public static implicit operator BoundingRectangle(Rectangle rectangle) + { + var radii = new Size2(rectangle.Width * 0.5f, rectangle.Height * 0.5f); + var centre = new Point2(rectangle.X + radii.Width, rectangle.Y + radii.Height); + return new BoundingRectangle(centre, radii); + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The bounding rectangle. + /// + /// The resulting . + /// + public static implicit operator Rectangle(BoundingRectangle boundingRectangle) + { + var minimum = boundingRectangle.Center - boundingRectangle.HalfExtents; + return new Rectangle((int)minimum.X, (int)minimum.Y, (int)boundingRectangle.HalfExtents.X * 2, + (int)boundingRectangle.HalfExtents.Y * 2); + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The rectangle. + /// + /// The resulting . + /// + public static implicit operator BoundingRectangle(RectangleF rectangle) + { + var radii = new Size2(rectangle.Width * 0.5f, rectangle.Height * 0.5f); + var centre = new Point2(rectangle.X + radii.Width, rectangle.Y + radii.Height); + return new BoundingRectangle(centre, radii); + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The bounding rectangle. + /// + /// The resulting . + /// + public static implicit operator RectangleF(BoundingRectangle boundingRectangle) + { + var minimum = boundingRectangle.Center - boundingRectangle.HalfExtents; + return new RectangleF(minimum.X, minimum.Y, boundingRectangle.HalfExtents.X * 2, + boundingRectangle.HalfExtents.Y * 2); + } + + /// + /// Returns a that represents this . + /// + /// + /// A that represents this . + /// + public override string ToString() + { + return $"Centre: {Center}, Radii: {HalfExtents}"; + } + + internal string DebugDisplayString => ToString(); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Camera2D.cs b/Source/MonoGame.Extended/Camera2D.cs index eb67a7170..efea610b1 100644 --- a/Source/MonoGame.Extended/Camera2D.cs +++ b/Source/MonoGame.Extended/Camera2D.cs @@ -1,7 +1,6 @@ using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Shapes; using MonoGame.Extended.ViewportAdapters; namespace MonoGame.Extended @@ -9,6 +8,9 @@ namespace MonoGame.Extended public class Camera2D : IMovable, IRotatable { private readonly ViewportAdapter _viewportAdapter; + private float _maximumZoom = float.MaxValue; + private float _minimumZoom; + private float _zoom; public Camera2D(GraphicsDevice graphicsDevice) : this(new DefaultViewportAdapter(graphicsDevice)) @@ -21,28 +23,24 @@ public Camera2D(ViewportAdapter viewportAdapter) Rotation = 0; Zoom = 1; - Origin = new Vector2(viewportAdapter.VirtualWidth / 2f, viewportAdapter.VirtualHeight / 2f); + Origin = new Vector2(viewportAdapter.VirtualWidth/2f, viewportAdapter.VirtualHeight/2f); Position = Vector2.Zero; } - public Vector2 Position { get; set; } - public float Rotation { get; set; } public Vector2 Origin { get; set; } - private float _zoom; - public float Zoom + public float Zoom { get { return _zoom; } set { - if (value < MinimumZoom || value > MaximumZoom) + if ((value < MinimumZoom) || (value > MaximumZoom)) throw new ArgumentException("Zoom must be between MinimumZoom and MaximumZoom"); _zoom = value; } } - private float _minimumZoom; public float MinimumZoom { get { return _minimumZoom; } @@ -58,7 +56,6 @@ public float MinimumZoom } } - private float _maximumZoom = float.MaxValue; public float MaximumZoom { get { return _maximumZoom; } @@ -74,6 +71,23 @@ public float MaximumZoom } } + public RectangleF BoundingRectangle + { + get + { + var frustum = GetBoundingFrustum(); + var corners = frustum.GetCorners(); + var topLeft = corners[0]; + var bottomRight = corners[2]; + var width = bottomRight.X - topLeft.X; + var height = bottomRight.Y - topLeft.Y; + return new RectangleF(topLeft.X, topLeft.Y, width, height); + } + } + + public Vector2 Position { get; set; } + public float Rotation { get; set; } + public void Move(Vector2 direction) { Position += Vector2.Transform(direction, Matrix.CreateRotationZ(-Rotation)); @@ -98,15 +112,13 @@ private void ClampZoom(float value) { if (value < MinimumZoom) Zoom = MinimumZoom; - else if (value > MaximumZoom) - Zoom = MaximumZoom; else - Zoom = value; + Zoom = value > MaximumZoom ? MaximumZoom : value; } public void LookAt(Vector2 position) { - Position = position - new Vector2(_viewportAdapter.VirtualWidth / 2f, _viewportAdapter.VirtualHeight / 2f); + Position = position - new Vector2(_viewportAdapter.VirtualWidth/2f, _viewportAdapter.VirtualHeight/2f); } public Vector2 WorldToScreen(float x, float y) @@ -128,21 +140,22 @@ public Vector2 ScreenToWorld(float x, float y) public Vector2 ScreenToWorld(Vector2 screenPosition) { var viewport = _viewportAdapter.Viewport; - return Vector2.Transform(screenPosition - new Vector2(viewport.X, viewport.Y), Matrix.Invert(GetViewMatrix())); + return Vector2.Transform(screenPosition - new Vector2(viewport.X, viewport.Y), + Matrix.Invert(GetViewMatrix())); } public Matrix GetViewMatrix(Vector2 parallaxFactor) { - return GetVirtualViewMatrix(parallaxFactor) * _viewportAdapter.GetScaleMatrix(); + return GetVirtualViewMatrix(parallaxFactor)*_viewportAdapter.GetScaleMatrix(); } private Matrix GetVirtualViewMatrix(Vector2 parallaxFactor) { return - Matrix.CreateTranslation(new Vector3(-Position * parallaxFactor, 0.0f)) * - Matrix.CreateTranslation(new Vector3(-Origin, 0.0f)) * - Matrix.CreateRotationZ(Rotation) * - Matrix.CreateScale(Zoom, Zoom, 1) * + Matrix.CreateTranslation(new Vector3(-Position*parallaxFactor, 0.0f))* + Matrix.CreateTranslation(new Vector3(-Origin, 0.0f))* + Matrix.CreateRotationZ(Rotation)* + Matrix.CreateScale(Zoom, Zoom, 1)* Matrix.CreateTranslation(new Vector3(Origin, 0.0f)); } @@ -156,14 +169,15 @@ public Matrix GetViewMatrix() return GetViewMatrix(Vector2.One); } - public Matrix GetInverseViewMatrix() + public Matrix GetInverseViewMatrix() { return Matrix.Invert(GetViewMatrix()); } private Matrix GetProjectionMatrix(Matrix viewMatrix) { - var projection = Matrix.CreateOrthographicOffCenter(0, _viewportAdapter.VirtualWidth, _viewportAdapter.VirtualHeight, 0, -1, 0); + var projection = Matrix.CreateOrthographicOffCenter(0, _viewportAdapter.VirtualWidth, + _viewportAdapter.VirtualHeight, 0, -1, 0); Matrix.Multiply(ref viewMatrix, ref projection, out projection); return projection; } @@ -175,17 +189,6 @@ public BoundingFrustum GetBoundingFrustum() return new BoundingFrustum(projectionMatrix); } - public RectangleF GetBoundingRectangle() - { - var frustum = GetBoundingFrustum(); - var corners = frustum.GetCorners(); - var topLeft = corners[0]; - var bottomRight = corners[2]; - var width = bottomRight.X - topLeft.X; - var height = bottomRight.Y - topLeft.Y; - return new RectangleF(topLeft.X, topLeft.Y, width, height); - } - public ContainmentType Contains(Point point) { return Contains(point.ToVector2()); @@ -204,4 +207,4 @@ public ContainmentType Contains(Rectangle rectangle) return GetBoundingFrustum().Contains(boundingBox); } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/CircleF.cs b/Source/MonoGame.Extended/CircleF.cs new file mode 100644 index 000000000..6bab4f239 --- /dev/null +++ b/Source/MonoGame.Extended/CircleF.cs @@ -0,0 +1,497 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.3; Bounding Volumes - Spheres. pg 88 + + /// + /// A two dimensional circle defined by a centre and a radius . + /// + /// + /// + /// An is categorized by the set of all points in a plane that are at equal distance from + /// the + /// centre. + /// + /// + /// + /// + [DataContract] + public struct CircleF : IEquatable, IEquatableByRef + { + /// + /// The centre position of this . + /// + [DataMember] public Point2 Center; + + /// + /// The distance from the point to any point on the boundary of this . + /// + [DataMember] public float Radius; + + /// + /// Gets the distance from a point to the opposite point, both on the boundary of this . + /// + public float Diameter => 2 * Radius; + + /// + /// Gets the distance around the boundary of this . + /// + public float Circumference => 2 * MathHelper.Pi * Radius; + + /// + /// Initializes a new instance of the structure from the specified centre + /// and the radius . + /// + /// The centre point. + /// The radius. + public CircleF(Point2 center, float radius) + { + Center = center; + Radius = radius; + } + + /// + /// Computes the bounding from a minimum and maximum + /// . + /// + /// The minimum point. + /// The maximum point. + /// The resulting circle. + public static void CreateFrom(Point2 minimum, Point2 maximum, out CircleF result) + { + result.Center = new Point2((maximum.X + minimum.X) * 0.5f, (maximum.Y + minimum.Y) * 0.5f); + var distanceVector = maximum - minimum; + result.Radius = distanceVector.X > distanceVector.Y ? distanceVector.X * 0.5f : distanceVector.Y * 0.5f; + } + + /// + /// Computes the bounding from a minimum and maximum + /// . + /// + /// The minimum point. + /// The maximum point. + /// An . + public static CircleF CreateFrom(Point2 minimum, Point2 maximum) + { + CircleF result; + CreateFrom(minimum, maximum, out result); + return result; + } + + /// + /// Computes the bounding from a list of structures. + /// + /// The points. + /// The resulting circle. + public static void CreateFrom(IReadOnlyList points, out CircleF result) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.3; Bounding Volumes - Spheres. pg 89-90 + + if (points == null || points.Count == 0) + { + result = default(CircleF); + return; + } + + var minimum = new Point2(float.MaxValue, float.MaxValue); + var maximum = new Point2(float.MinValue, float.MinValue); + + // ReSharper disable once ForCanBeConvertedToForeach + for (var index = points.Count - 1; index >= 0; --index) + { + var point = points[index]; + minimum = Point2.Minimum(minimum, point); + maximum = Point2.Maximum(maximum, point); + } + + CreateFrom(minimum, maximum, out result); + } + + /// + /// Computes the bounding from a list of structures. + /// + /// The points. + /// An . + public static CircleF CreateFrom(IReadOnlyList points) + { + CircleF result; + CreateFrom(points, out result); + return result; + } + + /// + /// Determines whether the two specified structures intersect. + /// + /// The first circle. + /// The second circle. + /// + /// true if the intersects with the ; otherwise, false. + /// + public static bool Intersects(ref CircleF first, ref CircleF second) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 4.3; Bounding Volumes - Spheres. pg 88 + + // Calculate squared distance between centers + var distanceVector = first.Center - second.Center; + var distanceSquared = distanceVector.Dot(distanceVector); + var radiusSum = first.Radius + second.Radius; + return distanceSquared <= radiusSum * radiusSum; + } + + /// + /// Determines whether the two specified structures intersect. + /// + /// The first circle. + /// The second circle. + /// + /// true if the intersects with the ; otherwise, false. + /// + public static bool Intersects(CircleF first, CircleF second) + { + return Intersects(ref first, ref second); + } + + /// + /// Determines whether the specified intersects with this . + /// + /// The circle. + /// + /// true if the intersects with this ; otherwise, + /// false. + /// + public bool Intersects(ref CircleF circle) + { + return Intersects(ref this, ref circle); + } + + /// + /// Determines whether the specified intersects with this . + /// + /// The circle. + /// + /// true if the intersects with this ; otherwise, + /// false. + /// + public bool Intersects(CircleF circle) + { + return Intersects(ref this, ref circle); + } + + /// + /// Determines whether the specified and structures intersect. + /// + /// The circle. + /// The rectangle. + /// + /// true if the intersects with the ; otherwise, false + /// . + /// + public static bool Intersects(ref CircleF circle, ref BoundingRectangle rectangle) + { + // Real-Time Collision Detection, Christer Ericson, 2005. Chapter 5.25; Basic Primitives Test - Testing Sphere Against AABB. pg 165-166 + + // Compute squared distance between sphere center and AABB boundary + var distanceSquared = rectangle.SquaredDistanceTo(circle.Center); + // Circle and AABB intersect if the (squared) distance between the AABB's boundary and the circle is less than the (squared) circle's radius + return distanceSquared <= circle.Radius * circle.Radius; + } + + /// + /// Determines whether the specified and structures intersect. + /// + /// The circle. + /// The rectangle. + /// + /// true if the intersects with the ; otherwise, false + /// . + /// + public static bool Intersects(CircleF circle, BoundingRectangle rectangle) + { + return Intersects(ref circle, ref rectangle); + } + + /// + /// Determines whether the specified intersects with this . + /// + /// The rectangle. + /// + /// true if the intersects with this ; otherwise, + /// false. + /// + public bool Intersects(ref BoundingRectangle rectangle) + { + return Intersects(ref this, ref rectangle); + } + + /// + /// Determines whether the specified intersects with this . + /// + /// The rectangle. + /// + /// true if the intersects with this ; otherwise, + /// false. + /// + public bool Intersects(BoundingRectangle rectangle) + { + return Intersects(ref this, ref rectangle); + } + + /// + /// Determines whether the specified contains the specified + /// . + /// + /// The circle. + /// The point. + /// + /// true if the contains the ; otherwise, + /// false. + /// + public static bool Contains(ref CircleF circle, Point2 point) + { + var distance = circle.Center - point; + return Math.Abs(distance.X) <= circle.Radius && Math.Abs(distance.Y) <= circle.Radius; + } + + /// + /// Determines whether the specified contains the specified + /// . + /// + /// The circle. + /// The point. + /// + /// true if the contains the ; otherwise, + /// false. + /// + public static bool Contains(CircleF circle, Point2 point) + { + return Contains(ref circle, point); + } + + /// + /// Determines whether this contains the specified . + /// + /// The point. + /// + /// true if this contains the ; otherwise, + /// false. + /// + public bool Contains(Point2 point) + { + return Contains(ref this, point); + } + + /// + /// Computes the closest on this to a specified + /// . + /// + /// The point. + /// The closest on this to the . + public Point2 ClosestPointTo(Point2 point) + { + var distanceVector = point - Center; + var lengthSquared = distanceVector.Dot(distanceVector); + if (lengthSquared <= Radius * Radius) + return point; + distanceVector.Normalize(); + return Center + Radius * distanceVector; + } + + /// + /// Computes the on the boundary of of this using the specified angle. + /// + /// The angle in radians. + /// The on the boundary of this using . + public Point2 BoundaryPointAt(float angle) + { + var direction = new Vector2((float) Math.Cos(angle), (float) Math.Sin(angle)); + return Center + Radius * direction; + } + + [Obsolete("Circle.GetPointAlongEdge() may be removed in the future. Use BoundaryPointAt() instead.")] + public Point2 GetPointAlongEdge(float angle) + { + return Center + new Vector2(Radius * (float) Math.Cos(angle), Radius * (float) Math.Sin(angle)); + } + + /// + /// Compares two structures. The result specifies whether the values of the + /// and fields of the two structures + /// are equal. + /// + /// The first circle. + /// The second circle. + /// + /// true if the and fields of the two + /// structures are equal; otherwise, false. + /// + public static bool operator ==(CircleF first, CircleF second) + { + return first.Equals(ref second); + } + + /// + /// Compares two structures. The result specifies whether the values of the + /// and fields of the two structures + /// are unequal. + /// + /// The first circle. + /// The second circle. + /// + /// true if the and fields of the two + /// structures are unequal; otherwise, false. + /// + public static bool operator !=(CircleF first, CircleF second) + { + return !(first == second); + } + + /// + /// Indicates whether this is equal to another . + /// + /// The circle. + /// + /// true if this is equal to the ; otherwise, false. + /// + public bool Equals(CircleF circle) + { + return Equals(ref circle); + } + + /// + /// Indicates whether this is equal to another . + /// + /// The bounding rectangle. + /// + /// true if this is equal to the ; + /// otherwise,false. + /// + public bool Equals(ref CircleF circle) + { + // ReSharper disable once CompareOfFloatsByEqualityOperator + return circle.Center == Center && circle.Radius == Radius; + } + + /// + /// Returns a value indicating whether this is equal to a specified object. + /// + /// The object to make the comparison with. + /// + /// true if this is equal to ; otherwise, false. + /// + public override bool Equals(object obj) + { + return obj is CircleF && Equals((CircleF) obj); + } + + /// + /// Returns a hash code of this suitable for use in hashing algorithms and data + /// structures like a hash table. + /// + /// + /// A hash code of this . + /// + public override int GetHashCode() + { + unchecked + { + return (Center.GetHashCode() * 397) ^ Radius.GetHashCode(); + } + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The circle. + /// + /// The resulting . + /// + public static implicit operator Rectangle(CircleF circle) + { + var diameter = (int) circle.Diameter; + return new Rectangle((int) (circle.Center.X - circle.Radius), (int) (circle.Center.Y - circle.Radius), + diameter, diameter); + } + + /// + /// Performs a conversion from a specified to a . + /// + /// + /// The resulting . + /// + public Rectangle ToRectangle() + { + return this; + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The rectangle. + /// + /// The resulting . + /// + public static implicit operator CircleF(Rectangle rectangle) + { + var halfWidth = rectangle.Width / 2; + var halfHeight = rectangle.Height / 2; + return new CircleF(new Point2(rectangle.X + halfWidth, rectangle.Y + halfHeight), + halfWidth > halfHeight ? halfWidth : halfHeight); + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The circle. + /// + /// The resulting . + /// + public static implicit operator RectangleF(CircleF circle) + { + var diameter = circle.Diameter; + return new RectangleF(circle.Center.X - circle.Radius, circle.Center.Y - circle.Radius, diameter, diameter); + } + + /// + /// Performs a conversion from a specified to a . + /// + /// + /// The resulting . + /// + public RectangleF ToRectangleF() + { + return this; + } + + /// + /// Performs an implicit conversion from a to a . + /// + /// The rectangle. + /// + /// The resulting . + /// + public static implicit operator CircleF(RectangleF rectangle) + { + var halfWidth = rectangle.Width * 0.5f; + var halfHeight = rectangle.Height * 0.5f; + return new CircleF(new Point2(rectangle.X + halfWidth, rectangle.Y + halfHeight), + halfWidth > halfHeight ? halfWidth : halfHeight); + } + + /// + /// Returns a that represents this . + /// + /// + /// A that represents this . + /// + public override string ToString() + { + return $"Centre: {Center}, Radius: {Radius}"; + } + + internal string DebugDisplayString => ToString(); + } +} diff --git a/Source/MonoGame.Extended/Collections/BitVector32.cs b/Source/MonoGame.Extended/Collections/BitVector32.cs new file mode 100644 index 000000000..e216ff764 --- /dev/null +++ b/Source/MonoGame.Extended/Collections/BitVector32.cs @@ -0,0 +1,625 @@ +using System; +using System.Collections; +using System.Diagnostics; +using System.Text; + +namespace MonoGame.Extended.Collections +{ + /// + /// Defines a bit vector with easy integer or boolean access to a 32 bit storage. + /// + /// + /// + /// is more efficient than for boolean values and small integers + /// that are used internally. A can grow indefinitely as needed, but it has the memory and + /// performance overhead that a class instance requires. In contrast, a uses only 32 + /// bits. + /// + /// + /// A structure can be set up to contain either sections for small integers or bit + /// flags for booleans, but not both. A is a window into the and + /// is composed of the smallest number of consecutive bits that can contain the maximum value specified in + /// . For example, a section with a maximum value of 1 is composed of + /// only one bit, whereas a section with a maximum value of 5 is composed of three bits. You can create a + /// with a maximum value of 1 to serve as a , thereby allowing you to + /// store integers and booleans in the same . + /// + /// + /// Some members can be used for a that is set up as sections, while other members can + /// be used for one that is set up as bit flags. For example, the property is the + /// indexer for a that is set up as sections, and the property + /// is the indexer for a that is set up as bit flags. + /// creates a series of masks that can be used to access individual bits in a that is + /// set up as bit flags. + /// + /// + public struct BitVector32 : IEquatable + { + private uint _data; + + /// + /// Initializes a new instance of the structure with the specified internal data. + /// + /// An integer representing the data of the new . + /// + /// This constructor is an O(1) operation. + /// + public BitVector32(uint data) + { + _data = data; + } + + /// + /// Initializes a new instance of the structure with the specified internal data. + /// + /// An integer representing the data of the new . + /// + /// This constructor is an O(1) operation. + /// + public BitVector32(int data) + { + _data = (uint) data; + } + + /// + /// Initializes a new instance of the structure containing the data represented in an + /// existing structure. + /// + /// A structure that contains the data to copy. + /// + /// This constructor is an O(1) operation. + /// + public BitVector32(BitVector32 value) + { + _data = value._data; + } + + + /// + /// Gets or sets the state of the bit flag indicated by the specified mask. + /// + /// A bit mask that indicates the bit flag to get or set. + /// true if the specified bit flag is on (1); otherwise, false. + /// + /// + /// The property is the indexer for a that is set up as + /// sections, and the property is the indexer for a that is + /// set up as bit flags. + /// + /// + /// Using this property on a that is set up as sections might cause unexpected + /// results. + /// + /// Retrieving the value of this property is an O(1) operation; setting the property is also an O(1) operation. + /// + public bool this[uint bitMask] + { + get { return (_data & bitMask) == bitMask; } + set + { + if (value) + _data |= bitMask; + else + _data &= ~bitMask; + } + } + + /// + /// Gets or sets the value stored in the specified . + /// + /// A that contains the value to get or set. + /// The value stored in the specified . + /// + /// + /// The property is the indexer for a that is set up as + /// sections, and the property is the indexer for a that is + /// set up as bit flags. + /// + /// + /// A is a window into the and is composed of the smallest + /// number of consecutive bits that can contain the maximum value specified in . + /// For example, a section with a maximum value of 1 is composed of only one bit, whereas a section with a maximum + /// value of 5 is composed of three bits. You can create a with a maximum value of 1 to + /// serve as a , thereby allowing you to store integers and booleans in the same + /// . + /// + /// Retrieving the value of this property is an O(1) operation; setting the property is also an O(1) operation. + /// + public int this[Section section] + { + get { return (int) ((_data & (uint) (section.Mask << section.Offset)) >> section.Offset); } + set + { + Debug.Assert((value & section.Mask) == value, "Value out of bounds on BitVector32 Section set."); + value <<= section.Offset; + var offsetMask = (0xFFFF & section.Mask) << section.Offset; + _data = (_data & ~(uint) offsetMask) | ((uint) value & (uint) offsetMask); + } + } + + /// + /// Converts a to an . + /// + /// The to convert into a . + public static implicit operator uint(BitVector32 bitVector) + { + return bitVector._data; + } + + /// + /// Converts a to a . + /// + /// The to convert into a . + public static implicit operator BitVector32(uint data) + { + return new BitVector32(data); + } + + /// + /// Converts a to an . + /// + /// The to convert into a . + public static implicit operator int(BitVector32 bitVector) + { + return (int) bitVector._data; + } + + /// + /// Converts a to a . + /// + /// The to convert into a . + public static implicit operator BitVector32(int data) + { + return new BitVector32(data); + } + + private static short CountBitsSet(short mask) + { + // bits are always right aligned with no holes, e.g., always 00000111 never 000100011 + short value = 0; + while ((mask & 0x1) != 0) + { + value++; + mask >>= 1; + } + return value; + } + + /// + /// Creates the first mask in a series of masks that can be used to retrieve individual bits in a + /// that is set up as bit flags. + /// + /// A mask that isolates the first bit flag in the . + /// + /// + /// Use to create the first mask in a series and for + /// all subsequent masks. + /// + /// Multiple masks can be created to refer to the same bit flag. + /// + /// The resulting mask isolates only one bit flag in the . You can combine masks using + /// the bitwise OR operation to create a mask that isolates multiple bit flags in the . + /// + /// Using a mask on a that is set up as sections might cause unexpected results. + /// This method is an O(1) operation. + /// + public static uint CreateMask() + { + return CreateMask(0); + } + + /// + /// Creates an additional mask following the specified mask in a series of masks that can be used to retrieve + /// individual bits in a that is set up as bit flags. + /// + /// The mask that indicates the previous bit flag. + /// + /// A mask that isolates the bit flag following the one that points to in + /// . + /// + /// + /// indicates the last bit flag in the + /// . + /// + /// + /// + /// Use to create the first mask in a series and for + /// all subsequent masks. + /// + /// Multiple masks can be created to refer to the same bit flag. + /// + /// The resulting mask isolates only one bit flag in the . You can combine masks using + /// the bitwise OR operation to create a mask that isolates multiple bit flags in the . + /// + /// Using a mask on a that is set up as sections might cause unexpected results. + /// This method is an O(1) operation. + /// + public static uint CreateMask(uint previous) + { + if (previous == 0) + return 1; + + if (previous == 0x80000000) + throw new InvalidOperationException("Can't create a new mask; the bit vector is full."); + + return previous << 1; + } + + private static short CreateMaskFromHighValue(short highValue) + { + short required = 16; + while ((highValue & 0x8000) == 0) + { + required--; + highValue <<= 1; + } + + ushort value = 0; + while (required > 0) + { + required--; + value <<= 1; + value |= 0x1; + } + + return unchecked((short) value); + } + + /// + /// Creates the first in a series of sections that contain small integers. + /// + /// A 16-bit signed integer that specifies the maximum value for the new . + /// A that can hold a number from zero to . + /// is less than 1. + /// + /// + /// A is a window into the and is composed of the smallest + /// number of consecutive bits that can contain the maximum value specified in + /// . + /// For example, a section with a maximum value of 1 is composed of only one bit, whereas a section with a maximum + /// value of 5 is composed of three bits. You can create a with a maximum value of 1 to + /// serve as a , thereby allowing you to store integers and booleans in the same + /// . + /// + /// + /// If sections already exist in the , those sections are still accessible; however, + /// overlapping sections might cause unexpected results. + /// + /// This method is an O(1) operation. + /// + public static Section CreateSection(short maxValue) + { + return CreateSectionHelper(maxValue, 0, 0); + } + + /// + /// Creates a new following the specified in a series of sections that + /// contain small integers. + /// + /// A 16-bit signed integer that specifies the maximum value for the new . + /// The previous in the . + /// A that can hold a number from zero to . + /// + /// is less than 1. + /// + /// + /// includes the final bit in the + /// . + /// + /// + /// + /// is greater than the highest value that can be represented by the number of bits after . + /// + /// + /// + /// A is a window into the and is composed of the smallest + /// number of consecutive bits that can contain the maximum value specified in + /// . For example, a section with a maximum value of 1 is composed of + /// only one bit, whereas a section with a maximum value of 5 is composed of three bits. You can create a + /// BitVector32.Section with a maximum value of 1 to serve as a Boolean, thereby allowing you to store integers and + /// Booleans in the same BitVector32. + /// + /// + /// If sections already exist after previous in the , those sections are still + /// accessible; however, overlapping sections might cause unexpected results. + /// + /// This method is an O(1) operation. + /// + public static Section CreateSection(short maxValue, Section previous) + { + return CreateSectionHelper(maxValue, previous.Mask, previous.Offset); + } + + private static Section CreateSectionHelper(short maxValue, short priorMask, short priorOffset) + { + if (maxValue < 1) + throw new ArgumentException("The max value was less than 0."); +#if DEBUG + int maskCheck = CreateMaskFromHighValue(maxValue); + var offsetCheck = priorOffset + CountBitsSet(priorMask); + Debug.Assert((maskCheck <= short.MaxValue) && (offsetCheck < 32), "Overflow on BitVector32"); +#endif + var offset = (short) (priorOffset + CountBitsSet(priorMask)); + if (offset >= 32) + throw new InvalidOperationException("Can't create a new mask; the bit vector is full."); + return new Section(CreateMaskFromHighValue(maxValue), offset); + } + + /// + /// Determines whether the specified object is equal to the . + /// + /// The object to compare with the . + /// true if the specified object is equal to the ; otherwise, false. + /// + /// + /// The object is considered equal to the if the type of + /// is compatible with the type and if the value of + /// is equal to the value of . + /// + /// This method is an O(1) operation. + /// + public override bool Equals(object obj) + { + return obj is BitVector32 && Equals((BitVector32) obj); + } + + /// + /// Determines whether the specified is equal to the . + /// + /// The to compare with the . + /// + /// true if is the same as the ; otherwise, + /// false. + /// + /// + /// This method is an O(1) operation. + /// + public bool Equals(BitVector32 other) + { + return _data == other._data; + } + + /// + /// Determines whether two specified values are equal. + /// + /// The first . + /// The second + /// + /// true if and represent the same , + /// otherwise, false. + /// + /// + /// This method is an O(1) operation. + /// + public static bool operator ==(BitVector32 a, BitVector32 b) + { + return a.Equals(b); + } + + /// + /// Determines whether two values have different values. + /// + /// The first . + /// The second + /// + /// true if and do not represent the same + /// , + /// otherwise, false. + /// + /// + /// This method is an O(1) operation. + /// + public static bool operator !=(BitVector32 a, BitVector32 b) + { + return !(a == b); + } + + /// + /// Serves as a hash function for the . + /// + /// A hash code for the . + /// + /// This method overrides . + /// + /// The hash code of a is based on the value of . Two + /// instances of with the same values also generate the same hash code. + /// + /// This method is an O(1) operation. + /// + public override int GetHashCode() + { + return base.GetHashCode(); + } + + /// + /// Returns a string that represents the specified . + /// + /// The to represent. + /// A string that represents the specified . + /// + /// This method is an O(1) operation. + /// + public static string ToString(BitVector32 value) + { + var stringBuilder = new StringBuilder(12 + 32 + 1); + stringBuilder.Append("BitVector32{"); + var data = (int) value._data; + for (var i = 0; i < 32; i++) + { + stringBuilder.Append((data & 0x80000000) != 0 ? "1" : "0"); + data <<= 1; + } + stringBuilder.Append("}"); + return stringBuilder.ToString(); + } + + /// + /// Returns a string that represents the current . + /// + /// A string that represents the current . + /// + /// This method overrides . + /// This method is an O(1) operation. + /// + public override string ToString() + { + return ToString(this); + } + + /// + /// Represents a section of a that can contain an integer number. + /// + /// + /// + /// Use to define a new section. A is a window into the + /// and is composed of the smallest number of consecutive bits that can contain the + /// maximum value specified in . For example, a section with a maximum + /// value of 1 is composed of only one bit, whereas a section with a maximum value of 5 is composed of three bits. + /// You can create a with a maximum value of 1 to serve as a , thereby + /// allowing you to store integers and booleans in the same . + /// + /// + public struct Section : IEquatable
+ { + /// + /// The mask that isolates the within the . + /// + public readonly short Mask; + + /// + /// Gets the offset of the from the start of the . + /// + public readonly short Offset; + + internal Section(short mask, short offset) + { + Mask = mask; + Offset = offset; + } + + /// + /// Determines whether the specified object is equal to the . + /// + /// The object to compare with the . + /// true if is the same as the ; otherwise, false. + /// + /// This method overrides . + /// + /// Two values are considered equal if both sections are of the same length and are in the + /// same location within a . + /// + /// This method is an O(1) operation. + /// + public override bool Equals(object obj) + { + if (obj is Section) + return Equals((Section) obj); + return false; + } + + /// + /// Determines whether the specified is equal to the . + /// + /// The to compare with the . + /// true if is the same as the ; otherwise, false. + /// + /// + /// Two values are considered equal if both sections are of the same length and are in the + /// same location within a . + /// + /// This method is an O(1) operation. + /// + public bool Equals(Section other) + { + return (other.Mask == Mask) && (other.Offset == Offset); + } + + /// + /// Determines whether two specified values are equal. + /// + /// The first . + /// The second + /// + /// true if and represent the same , + /// otherwise, false. + /// + /// + /// + /// Two values are considered equal if both sections are of the same length and are in the + /// same location within a . + /// + /// This method is an O(1) operation. + /// + public static bool operator ==(Section a, Section b) + { + return (a.Mask == b.Mask) && (a.Offset == b.Offset); + } + + /// + /// Determines whether two values have different values. + /// + /// The first . + /// The second + /// + /// true if and do not represent the same , + /// otherwise, false. + /// + /// + /// + /// Two values are considered equal if both sections are of the same length and are in the + /// same location within a . + /// + /// This method is an O(1) operation. + /// + public static bool operator !=(Section a, Section b) + { + return !(a == b); + } + + /// + /// Serves as a hash function for the , suitable for hashing algorithms and data structures, such + /// as a hash table. + /// + /// A hash code for the current . + /// + /// This method overrides . + /// + /// This method generates the same hash code for two objects that are equal according to the + /// method. + /// + /// This method is an O(1) operation. + /// + public override int GetHashCode() + { + return base.GetHashCode(); + } + + /// + /// Returns a string that represents the specified . + /// + /// The to represent. + /// A string that represents the specified . + /// + /// This method is an O(1) operation. + /// + public static string ToString(Section value) + { + return "Section{0x" + Convert.ToString(value.Mask, 16) + ", 0x" + Convert.ToString(value.Offset, 16) + + "}"; + } + + /// + /// Returns a string that represents the . + /// + /// A string that represents the . + /// + /// This method overrides . + /// This method is an O(1) operation. + /// + public override string ToString() + { + return ToString(this); + } + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/Deque.cs b/Source/MonoGame.Extended/Collections/Deque.cs index e40cb9447..5d6f4e4b4 100644 --- a/Source/MonoGame.Extended/Collections/Deque.cs +++ b/Source/MonoGame.Extended/Collections/Deque.cs @@ -8,7 +8,7 @@ namespace MonoGame.Extended.Collections { internal static class Deque { - internal static readonly Func DefaultResizeFunction = x => x * 2; + internal static readonly Func DefaultResizeFunction = x => x*2; } /// @@ -24,10 +24,99 @@ public class Deque : IList { private const int _defaultCapacity = 4; private static readonly T[] _emptyArray = new T[0]; - private T[] _items; private int _frontArrayIndex; + private T[] _items; private Func _resizeFunction = Deque.DefaultResizeFunction; + /// + /// Initializes a new instance of the class that is empty and has the default initial capacity. + /// + /// + /// + /// The capacity of a is the number of elements that the can + /// hold. As elements are added to a , is automatically increased by + /// as required by reallocating the internal array. + /// + /// + /// If the size of the collection can be estimated, using the constructor and + /// specifying the initial capacity eliminates the need to perform a number of resizing operations while adding + /// elements to the . + /// + /// + /// The capacity can be decreased by calling the method or by setting the + /// property explicitly. Decreasing, or increasing, the capacity reallocates memory and + /// copies all the + /// elements in the . + /// + /// This constructor is an O(1) operation. + /// + public Deque() + { + _items = _emptyArray; + } + + /// + /// Initializes a new instance of the class that contains elements copied from the specified + /// collection and has sufficient capacity to accommodate the number of elements copied. + /// + /// The collection whose elements are copied to the new deque. + /// is null. + /// + /// + /// The elements are copied onto the in the same order they are read by the enumerator of + /// . + /// + /// This constructor is an O(n) operation, where n is the number of elements in . + /// + public Deque(IEnumerable collection) + { + if (collection == null) + throw new ArgumentNullException(nameof(collection)); + + var array = collection as T[] ?? collection.ToArray(); + var count = array.Length; + + if (count == 0) + _items = _emptyArray; + else + { + _items = new T[count]; + array.CopyTo(_items, 0); + Count = count; + } + } + + /// + /// Initializes a new instance of the class that is empty and has the specified initial + /// capacity. + /// + /// The number of elements that the new can initially store. + /// is less than 0. + /// + /// + /// The capacity of a is the number of elements that the can + /// hold. As elements are added to a , is automatically increased by + /// as required by reallocating the internal array. + /// + /// + /// If the size of the collection can be estimated, specifying the initial capacity eliminates the need to + /// perform a number of resizing operations while adding elements to the . + /// + /// + /// The capacity can be decreased by calling the method or by setting the + /// property explicitly. Decreasing, or increasing, the capacity reallocates memory and + /// copies all the elements in the . + /// + /// This constructor is an O(n) operation, where n is . + /// + public Deque(int capacity) + { + if (capacity < 0) + throw new ArgumentOutOfRangeException(nameof(capacity), "Capacity was less than zero."); + + _items = capacity == 0 ? _emptyArray : new T[capacity]; + } + /// /// Gets or sets the resize function used to calculate and set when a greater capacity is /// required. @@ -63,14 +152,10 @@ public int Capacity set { if (value < Count) - { throw new ArgumentOutOfRangeException(nameof(value), "capacity was less than the current size."); - } if (value == Capacity) - { return; - } if (value == 0) { @@ -110,7 +195,8 @@ public int Capacity var arrayIndex = GetArrayIndex(index); if (arrayIndex == -1) { - throw new ArgumentOutOfRangeException(nameof(index), "Index was out of range. Must be non-negative and less than the size of the collection."); + throw new ArgumentOutOfRangeException(nameof(index), + "Index was out of range. Must be non-negative and less than the size of the collection."); } return _items[arrayIndex]; } @@ -119,7 +205,8 @@ public int Capacity var arrayIndex = GetArrayIndex(index); if (arrayIndex == -1) { - throw new ArgumentOutOfRangeException(nameof(index), "Index was out of range. Must be non-negative and less than the size of the collection."); + throw new ArgumentOutOfRangeException(nameof(index), + "Index was out of range. Must be non-negative and less than the size of the collection."); } _items[arrayIndex] = value; } @@ -134,98 +221,295 @@ public int Capacity bool ICollection.IsReadOnly => false; /// - /// Initializes a new instance of the class that is empty and has the default initial capacity. + /// Returns an enumerator that iterates through the . + /// + /// An that can be used to iterate through the . + public IEnumerator GetEnumerator() + { + if (Count == 0) + yield break; + + if (Count <= _items.Length - _frontArrayIndex) + { + for (var i = _frontArrayIndex; i < _frontArrayIndex + Count; i++) + yield return _items[i]; + } + else + { + for (var i = _frontArrayIndex; i < Capacity; i++) + yield return _items[i]; + for (var i = 0; i < (_frontArrayIndex + Count)%Capacity; i++) + yield return _items[i]; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + void ICollection.Add(T item) + { + AddToBack(item); + } + + /// + /// Searches for the specified element and returns the zero-based index of the first occurrence within the entire + /// . /// + /// + /// The element to locate in the . The value can be null for reference + /// types. + /// + /// + /// The zero-based index of the first occurrence of within the entire + /// , if found; otherwise, -1. + /// /// /// - /// The capacity of a is the number of elements that the can - /// hold. As elements are added to a , is automatically increased by - /// as required by reallocating the internal array. - /// - /// - /// If the size of the collection can be estimated, using the constructor and - /// specifying the initial capacity eliminates the need to perform a number of resizing operations while adding - /// elements to the . - /// - /// - /// The capacity can be decreased by calling the method or by setting the - /// property explicitly. Decreasing, or increasing, the capacity reallocates memory and - /// copies all the - /// elements in the . + /// This method is an O(1) operation if is at the front or back of the + /// ; otherwise, this method is an O(n) operation where n is . /// - /// This constructor is an O(1) operation. /// - public Deque() + public int IndexOf(T item) { - _items = _emptyArray; + var comparer = EqualityComparer.Default; + T checkFrontBackItem; + if (Get(0, out checkFrontBackItem) && comparer.Equals(checkFrontBackItem, item)) + return 0; + var backIndex = Count - 1; + if (Get(backIndex, out checkFrontBackItem) && comparer.Equals(checkFrontBackItem, item)) + return backIndex; + + int index; + if (Count <= _items.Length - _frontArrayIndex) + index = Array.IndexOf(_items, item, _frontArrayIndex, Count); + else + { + index = Array.IndexOf(_items, item, _frontArrayIndex, _items.Length - _frontArrayIndex); + if (index < 0) + index = Array.IndexOf(_items, item, 0, _frontArrayIndex + Count - _items.Length); + } + + var circularIndex = (index - _frontArrayIndex + _items.Length)%_items.Length; + return circularIndex; + } + + void IList.Insert(int index, T item) + { + throw new NotImplementedException(); } /// - /// Initializes a new instance of the class that contains elements copied from the specified - /// collection and has sufficient capacity to accommodate the number of elements copied. + /// Removes the first occurrence of a specific element from the . /// - /// The collection whose elements are copied to the new deque. - /// is null. + /// + /// The element to remove from the . The value can be null for reference + /// types. + /// + /// + /// true if was successfully removed; otherwise, false. This method also returns false + /// if is not found in the . + /// /// /// - /// The elements are copied onto the in the same order they are read by the enumerator of - /// . + /// This method is an O(1) operation if is at the front or back of the + /// ; otherwise, this method is an O(n) operation where n is . /// - /// This constructor is an O(n) operation, where n is the number of elements in . /// - public Deque(IEnumerable collection) + public bool Remove(T item) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } + var index = IndexOf(item); + if (index == -1) + return false; - var array = collection as T[] ?? collection.ToArray(); - var count = array.Length; + RemoveAt(index); + return true; + } - if (count == 0) + /// + /// Removes the element at the specified index of the . + /// + /// The zero-based index of the element to remove. + /// + /// is less than 0. + /// -or- + /// is equal to or greater than . + /// + public void RemoveAt(int index) + { + if (index < 0) + throw new ArgumentOutOfRangeException(nameof(index), index, "Index was less than zero."); + + if (index >= Count) + throw new ArgumentOutOfRangeException(nameof(index), index, "Index was equal or greater than Count."); + + if (index == 0) { - _items = _emptyArray; + RemoveFromFront(); } else { - _items = new T[count]; - array.CopyTo(_items, 0); - Count = count; + if (index == Count - 1) + { + RemoveFromBack(); + } + else + { + if (index < Count/2) + { + var arrayIndex = GetArrayIndex(index); + // shift the array from 0 to before the index to remove by 1 to the right + // the element to remove is replaced by the copy + Array.Copy(_items, 0, _items, 1, arrayIndex); + // the first element in the arrya is now either a duplicate or it's default value + // to be safe set it to it's default value regardless of circumstance + _items[0] = default(T); + // if we shifted the front element, adjust the front index + if (_frontArrayIndex < arrayIndex) + _frontArrayIndex = (_frontArrayIndex + 1)%_items.Length; + // decrement the count so the back index is calculated correctly + Count--; + } + else + { + var arrayIndex = GetArrayIndex(index); + // shift the array from the center of the array to before the index to remove by 1 to the right + // the element to remove is replaced by the copy + var arrayCenterIndex = _items.Length/2; + Array.Copy(_items, arrayCenterIndex, _items, arrayCenterIndex + 1, _items.Length - 1 - arrayIndex); + // the last element in the array is now either a duplicate or it's default value + // to be safe set it to it's default value regardless of circumstance + _items[_items.Length - 1] = default(T); + // if we shifted the front element, adjust the front index + if (_frontArrayIndex < arrayIndex) + _frontArrayIndex = (_frontArrayIndex + 1)%_items.Length; + // decrement the count so the back index is calculated correctly + Count--; + } + } } } /// - /// Initializes a new instance of the class that is empty and has the specified initial - /// capacity. + /// Removes all elements from the . /// - /// The number of elements that the new can initially store. - /// is less than 0. /// /// - /// The capacity of a is the number of elements that the can - /// hold. As elements are added to a , is automatically increased by - /// as required by reallocating the internal array. + /// is set to 0, and references to other objects from elements of the collection are + /// also released. /// /// - /// If the size of the collection can be estimated, specifying the initial capacity eliminates the need to - /// perform a number of resizing operations while adding elements to the . - /// + /// remains unchanged. To reset the capacity of the , call the + /// method or set the property explictly. Decreasing, or + /// increasing, the capacity reallocates memory and copies all the elements in the . + /// Trimming an empty sets to the default capacity. + /// + /// This method is an O(n) operation, where n is . + /// + public void Clear() + { + // allow the garbage collector to reclaim the references + + if (Count == 0) + return; + + if (Count > _items.Length - _frontArrayIndex) + { + Array.Clear(_items, _frontArrayIndex, _items.Length - _frontArrayIndex); + Array.Clear(_items, 0, _frontArrayIndex + Count - _items.Length); + } + else + Array.Clear(_items, _frontArrayIndex, Count); + Count = 0; + _frontArrayIndex = 0; + } + + /// + /// Determines whether an element is in the . + /// + /// + /// The element to locate in the . The value can be null for reference + /// types. + /// + /// true if is found in the ; otherwise, false. + /// /// - /// The capacity can be decreased by calling the method or by setting the - /// property explicitly. Decreasing, or increasing, the capacity reallocates memory and - /// copies all the elements in the . + /// This method determines equality by using the default equality comparer, as defined by the object's + /// implementation + /// of the method for the type of values in the list. + /// + /// + /// This method performs a linear search; therefore, this method is an O(n) operation, where n is + /// . /// - /// This constructor is an O(n) operation, where n is . /// - public Deque(int capacity) + public bool Contains(T item) { - if (capacity < 0) + return this.Contains(item, EqualityComparer.Default); + } + + /// + /// Copies the entire to a compatible one-dimensional array, starting at the specified index of + /// the target array. + /// + /// + /// The one-dimensional that is the destination of the elements copied from + /// . The must have zero-based indexing. + /// + /// The zero-based index in at which copying begins. + /// is null. + /// is less than 0. + /// + /// The number of elements in the source is greater than the + /// available space from to the end of the destination . + /// + /// + /// This method uses to copy the elements. The elements are + /// copied to the in the same order in which the enumerator iterates + /// through the . This method is an O(n) operation, where n is . + /// + public void CopyTo(T[] array, int arrayIndex = 0) + { + if (array == null) + throw new ArgumentNullException(nameof(array)); + + if (array.Rank != 1) + throw new ArgumentException("Only single dimensional arrays are supported for the requested action."); + + if (arrayIndex < 0) + throw new ArgumentOutOfRangeException(nameof(arrayIndex), "Index was less than the array's lower bound."); + + if (arrayIndex >= array.Length) { - throw new ArgumentOutOfRangeException(nameof(capacity), "Capacity was less than zero."); + throw new ArgumentOutOfRangeException(nameof(arrayIndex), + "Index was greater than the array's upper bound."); } - _items = capacity == 0 ? _emptyArray : new T[capacity]; + if (array.Length - arrayIndex < Count) + throw new ArgumentException("Destination array was not long enough."); + + if (Count == 0) + return; + + + try + { + var loopsAround = Count > _items.Length - _frontArrayIndex; + if (!loopsAround) + Array.Copy(_items, _frontArrayIndex, array, arrayIndex, Count); + else + { + Array.Copy(_items, _frontArrayIndex, array, arrayIndex, Capacity - _frontArrayIndex); + Array.Copy(_items, 0, array, arrayIndex + Capacity - _frontArrayIndex, + _frontArrayIndex + (Count - Capacity)); + } + } + catch (ArrayTypeMismatchException) + { + throw new ArgumentException( + "Target array type is not compatible with the type of items in the collection."); + } } /// @@ -252,34 +536,26 @@ public Deque(int capacity) /// public void TrimExcess() { - if (Count > (int)(_items.Length * 0.9)) - { + if (Count > (int) (_items.Length*0.9)) return; - } Capacity = Count; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private int GetArrayIndex(int index) { - if (index < 0 || index >= Count) - { + if ((index < 0) || (index >= Count)) return -1; - } - return _items.Length != 0 ? (_frontArrayIndex + index) % _items.Length : 0; + return _items.Length != 0 ? (_frontArrayIndex + index)%_items.Length : 0; } private void EnsureCapacity(int minimumCapacity) { if (_items.Length >= minimumCapacity) - { return; - } var newCapacity = _defaultCapacity; if (_items.Length > 0) - { newCapacity = _resizeFunction(_items.Length); - } newCapacity = Math.Max(newCapacity, minimumCapacity); Capacity = newCapacity; } @@ -302,7 +578,7 @@ private void EnsureCapacity(int minimumCapacity) public void AddToFront(T item) { EnsureCapacity(Count + 1); - _frontArrayIndex = (_frontArrayIndex - 1 + _items.Length) % _items.Length; + _frontArrayIndex = (_frontArrayIndex - 1 + _items.Length)%_items.Length; _items[_frontArrayIndex] = item; Count++; } @@ -325,7 +601,7 @@ public void AddToFront(T item) public void AddToBack(T item) { EnsureCapacity(Count + 1); - var index = (_frontArrayIndex + Count++) % _items.Length; + var index = (_frontArrayIndex + Count++)%_items.Length; _items[index] = item; } @@ -425,10 +701,10 @@ public bool RemoveFromFront(out T item) return false; } - var index = _frontArrayIndex % _items.Length; + var index = _frontArrayIndex%_items.Length; item = _items[index]; _items[index] = default(T); - _frontArrayIndex = (_frontArrayIndex + 1) % _items.Length; + _frontArrayIndex = (_frontArrayIndex + 1)%_items.Length; Count--; return true; } @@ -458,13 +734,11 @@ public bool RemoveFromFront(out T item) public bool RemoveFromFront() { if (Count == 0) - { return false; - } - var index = _frontArrayIndex % _items.Length; + var index = _frontArrayIndex%_items.Length; _items[index] = default(T); - _frontArrayIndex = (_frontArrayIndex + 1) % _items.Length; + _frontArrayIndex = (_frontArrayIndex + 1)%_items.Length; Count--; return true; } @@ -505,7 +779,7 @@ public bool RemoveFromBack(out T item) return false; } - var circularBackIndex = (_frontArrayIndex + (Count - 1)) % _items.Length; + var circularBackIndex = (_frontArrayIndex + (Count - 1))%_items.Length; item = _items[circularBackIndex]; _items[circularBackIndex] = default(T); Count--; @@ -537,338 +811,12 @@ public bool RemoveFromBack(out T item) public bool RemoveFromBack() { if (Count == 0) - { return false; - } - var circularBackIndex = (_frontArrayIndex + (Count - 1)) % _items.Length; + var circularBackIndex = (_frontArrayIndex + (Count - 1))%_items.Length; _items[circularBackIndex] = default(T); Count--; return true; } - - /// - /// Returns an enumerator that iterates through the . - /// - /// An that can be used to iterate through the . - public IEnumerator GetEnumerator() - { - if (Count == 0) - { - yield break; - } - - if (Count <= _items.Length - _frontArrayIndex) - { - for (var i = _frontArrayIndex; i < _frontArrayIndex + Count; i++) - { - yield return _items[i]; - } - } - else - { - for (var i = _frontArrayIndex; i < Capacity; i++) - { - yield return _items[i]; - } - for (var i = 0; i < (_frontArrayIndex + Count) % Capacity; i++) - { - yield return _items[i]; - } - } - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - void ICollection.Add(T item) - { - AddToBack(item); - } - - /// - /// Searches for the specified element and returns the zero-based index of the first occurrence within the entire - /// . - /// - /// - /// The element to locate in the . The value can be null for reference - /// types. - /// - /// - /// The zero-based index of the first occurrence of within the entire - /// , if found; otherwise, -1. - /// - /// - /// - /// This method is an O(1) operation if is at the front or back of the - /// ; otherwise, this method is an O(n) operation where n is . - /// - /// - public int IndexOf(T item) - { - var comparer = EqualityComparer.Default; - T checkFrontBackItem; - if (Get(0, out checkFrontBackItem) && comparer.Equals(checkFrontBackItem, item)) - { - return 0; - } - var backIndex = Count - 1; - if (Get(backIndex, out checkFrontBackItem) && comparer.Equals(checkFrontBackItem, item)) - { - return backIndex; - } - - int index; - if (Count <= _items.Length - _frontArrayIndex) - { - index = Array.IndexOf(_items, item, _frontArrayIndex, Count); - } - else - { - index = Array.IndexOf(_items, item, _frontArrayIndex, _items.Length - _frontArrayIndex); - if (index < 0) - { - index = Array.IndexOf(_items, item, 0, _frontArrayIndex + Count - _items.Length); - } - } - - var circularIndex = (index - _frontArrayIndex + _items.Length) % _items.Length; - return circularIndex; - } - - void IList.Insert(int index, T item) - { - throw new NotImplementedException(); - } - - /// - /// Removes the first occurrence of a specific element from the . - /// - /// - /// The element to remove from the . The value can be null for reference - /// types. - /// - /// - /// true if was successfully removed; otherwise, false. This method also returns false - /// if is not found in the . - /// - /// - /// - /// This method is an O(1) operation if is at the front or back of the - /// ; otherwise, this method is an O(n) operation where n is . - /// - /// - public bool Remove(T item) - { - var index = IndexOf(item); - if (index == -1) - { - return false; - } - - RemoveAt(index); - return true; - } - - /// - /// Removes the element at the specified index of the . - /// - /// The zero-based index of the element to remove. - /// - /// is less than 0. - /// -or- - /// is equal to or greater than . - /// - public void RemoveAt(int index) - { - if (index < 0) - { - throw new ArgumentOutOfRangeException(nameof(index), index, "Index was less than zero."); - } - - if (index >= Count) - { - throw new ArgumentOutOfRangeException(nameof(index), index, "Index was equal or greater than Count."); - } - - if (index == 0) - { - RemoveFromFront(); - } - else if (index == Count - 1) - { - RemoveFromBack(); - } - else if (index < Count / 2) - { - var arrayIndex = GetArrayIndex(index); - // shift the array from 0 to before the index to remove by 1 to the right - // the element to remove is replaced by the copy - Array.Copy(_items, 0, _items, 1, arrayIndex); - // the first element in the arrya is now either a duplicate or it's default value - // to be safe set it to it's default value regardless of circumstance - _items[0] = default(T); - // if we shifted the front element, adjust the front index - if (_frontArrayIndex < arrayIndex) - { - _frontArrayIndex = (_frontArrayIndex + 1) % _items.Length; - } - // decrement the count so the back index is calculated correctly - Count--; - } - else - { - var arrayIndex = GetArrayIndex(index); - // shift the array from the center of the array to before the index to remove by 1 to the right - // the element to remove is replaced by the copy - var arrayCenterIndex = _items.Length / 2; - Array.Copy(_items, arrayCenterIndex, _items, arrayCenterIndex + 1, _items.Length - 1 - arrayIndex); - // the last element in the array is now either a duplicate or it's default value - // to be safe set it to it's default value regardless of circumstance - _items[_items.Length - 1] = default(T); - // if we shifted the front element, adjust the front index - if (_frontArrayIndex < arrayIndex) - { - _frontArrayIndex = (_frontArrayIndex + 1) % _items.Length; - } - // decrement the count so the back index is calculated correctly - Count--; - } - } - - /// - /// Removes all elements from the . - /// - /// - /// - /// is set to 0, and references to other objects from elements of the collection are - /// also released. - /// - /// - /// remains unchanged. To reset the capacity of the , call the - /// method or set the property explictly. Decreasing, or - /// increasing, the capacity reallocates memory and copies all the elements in the . - /// Trimming an empty sets to the default capacity. - /// - /// This method is an O(n) operation, where n is . - /// - public void Clear() - { - // allow the garbage collector to reclaim the references - - if (Count == 0) - { - return; - } - - if (Count > _items.Length - _frontArrayIndex) - { - Array.Clear(_items, _frontArrayIndex, _items.Length - _frontArrayIndex); - Array.Clear(_items, 0, _frontArrayIndex + Count - _items.Length); - } - else - { - Array.Clear(_items, _frontArrayIndex, Count); - } - Count = 0; - _frontArrayIndex = 0; - } - - /// - /// Determines whether an element is in the . - /// - /// - /// The element to locate in the . The value can be null for reference - /// types. - /// - /// true if is found in the ; otherwise, false. - /// - /// - /// This method determines equality by using the default equality comparer, as defined by the object's - /// implementation - /// of the method for the type of values in the list. - /// - /// - /// This method performs a linear search; therefore, this method is an O(n) operation, where n is - /// . - /// - /// - public bool Contains(T item) - { - return this.Contains(item, EqualityComparer.Default); - } - - /// - /// Copies the entire to a compatible one-dimensional array, starting at the specified index of - /// the target array. - /// - /// - /// The one-dimensional that is the destination of the elements copied from - /// . The must have zero-based indexing. - /// - /// The zero-based index in at which copying begins. - /// is null. - /// is less than 0. - /// - /// The number of elements in the source is greater than the - /// available space from to the end of the destination . - /// - /// - /// This method uses to copy the elements. The elements are - /// copied to the in the same order in which the enumerator iterates - /// through the . This method is an O(n) operation, where n is . - /// - public void CopyTo(T[] array, int arrayIndex = 0) - { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - - if (array.Rank != 1) - { - throw new ArgumentException("Only single dimensional arrays are supported for the requested action."); - } - - if (arrayIndex < 0) - { - throw new ArgumentOutOfRangeException(nameof(arrayIndex), "Index was less than the array's lower bound."); - } - - if (arrayIndex >= array.Length) - { - throw new ArgumentOutOfRangeException(nameof(arrayIndex), "Index was greater than the array's upper bound."); - } - - if (Count == 0) - { - return; - } - - if (array.Length - arrayIndex < Count) - { - throw new ArgumentException("Destination array was not long enough."); - } - - try - { - var loopsAround = Count > _items.Length - _frontArrayIndex; - if (!loopsAround) - { - Array.Copy(_items, _frontArrayIndex, array, arrayIndex, Count); - } - else - { - Array.Copy(_items, _frontArrayIndex, array, arrayIndex, Capacity - _frontArrayIndex); - Array.Copy(_items, 0, array, arrayIndex + Capacity - _frontArrayIndex, _frontArrayIndex + (Count - Capacity)); - } - } - catch (ArrayTypeMismatchException) - { - throw new ArgumentException("Target array type is not compatible with the type of items in the collection."); - } - } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/DictionaryExtensions.cs b/Source/MonoGame.Extended/Collections/DictionaryExtensions.cs new file mode 100644 index 000000000..ee581b798 --- /dev/null +++ b/Source/MonoGame.Extended/Collections/DictionaryExtensions.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; + +namespace MonoGame.Extended.Collections +{ + public static class DictionaryExtensions + { + public static TValue GetValueOrDefault(this Dictionary dictionary, TKey key) + { + return GetValueOrDefault(dictionary, key, default(TValue)); + } + + public static TValue GetValueOrDefault(this Dictionary dictionary, TKey key, TValue defaultValue) + { + TValue value; + return dictionary.TryGetValue(key, out value) ? value : defaultValue; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/IObservableCollection.cs b/Source/MonoGame.Extended/Collections/IObservableCollection.cs new file mode 100644 index 000000000..bb4fe16f5 --- /dev/null +++ b/Source/MonoGame.Extended/Collections/IObservableCollection.cs @@ -0,0 +1,26 @@ +using System; + +namespace MonoGame.Extended.Collections +{ + /// Interface for collections that can be observed + /// Type of items managed in the collection + public interface IObservableCollection + { + /// Raised when an item has been added to the collection + event EventHandler> ItemAdded; + + /// Raised when an item is removed from the collection + event EventHandler> ItemRemoved; + + /// Raised when the collection is about to be cleared + /// + /// This could be covered by calling ItemRemoved for each item currently + /// contained in the collection, but it is often simpler and more efficient + /// to process the clearing of the entire collection as a special operation. + /// + event EventHandler Clearing; + + /// Raised when the collection has been cleared of its items + event EventHandler Cleared; + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/ItemEventArgs.cs b/Source/MonoGame.Extended/Collections/ItemEventArgs.cs new file mode 100644 index 000000000..0da853b5d --- /dev/null +++ b/Source/MonoGame.Extended/Collections/ItemEventArgs.cs @@ -0,0 +1,20 @@ +using System; + +namespace MonoGame.Extended.Collections +{ + /// + /// Arguments class for collections wanting to hand over an item in an event + /// + public class ItemEventArgs : EventArgs + { + /// Initializes a new event arguments supplier + /// Item to be supplied to the event handler + public ItemEventArgs(T item) + { + Item = item; + } + + /// Obtains the collection item the event arguments are carrying + public T Item { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/ObservableCollection.cs b/Source/MonoGame.Extended/Collections/ObservableCollection.cs new file mode 100644 index 000000000..de827df1f --- /dev/null +++ b/Source/MonoGame.Extended/Collections/ObservableCollection.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace MonoGame.Extended.Collections +{ + public class ObservableCollection : Collection, IObservableCollection + { + /// + /// Initializes a new instance of the ObservableCollection class that is empty. + /// + public ObservableCollection() + { + } + + /// + /// Initializes a new instance of the ObservableCollection class as a wrapper + /// for the specified list. + /// + /// The list that is wrapped by the new collection. + /// + /// List is null. + /// + public ObservableCollection(IList list) : base(list) + { + } + + /// Raised when an item has been added to the collection + public event EventHandler> ItemAdded; + + /// Raised when an item is removed from the collection + public event EventHandler> ItemRemoved; + + /// Raised when the collection is about to be cleared + /// + /// This could be covered by calling ItemRemoved for each item currently + /// contained in the collection, but it is often simpler and more efficient + /// to process the clearing of the entire collection as a special operation. + /// + public event EventHandler Clearing; + + /// Raised when the collection has been cleared + public event EventHandler Cleared; + + /// Removes all elements from the Collection + protected override void ClearItems() + { + OnClearing(); + base.ClearItems(); + OnCleared(); + } + + /// + /// Inserts an element into the ObservableCollection at the specified index + /// + /// + /// The object to insert. The value can be null for reference types. + /// + /// The zero-based index at which item should be inserted + protected override void InsertItem(int index, T item) + { + base.InsertItem(index, item); + OnAdded(item); + } + + /// + /// Removes the element at the specified index of the ObservableCollection + /// + /// The zero-based index of the element to remove + protected override void RemoveItem(int index) + { + var item = base[index]; + base.RemoveItem(index); + OnRemoved(item); + } + + /// Replaces the element at the specified index + /// + /// The new value for the element at the specified index. The value can be null + /// for reference types + /// + /// The zero-based index of the element to replace + protected override void SetItem(int index, T item) + { + var oldItem = base[index]; + base.SetItem(index, item); + OnRemoved(oldItem); + OnAdded(item); + } + + /// Fires the 'ItemAdded' event + /// Item that has been added to the collection + protected virtual void OnAdded(T item) + { + ItemAdded?.Invoke(this, new ItemEventArgs(item)); + } + + /// Fires the 'ItemRemoved' event + /// Item that has been removed from the collection + protected virtual void OnRemoved(T item) + { + ItemRemoved?.Invoke(this, new ItemEventArgs(item)); + } + + /// Fires the 'Clearing' event + protected virtual void OnClearing() + { + Clearing?.Invoke(this, EventArgs.Empty); + } + + /// Fires the 'Cleared' event + protected virtual void OnCleared() + { + Cleared?.Invoke(this, EventArgs.Empty); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Collections/Pool.cs b/Source/MonoGame.Extended/Collections/Pool.cs index 698893130..072ff728a 100644 --- a/Source/MonoGame.Extended/Collections/Pool.cs +++ b/Source/MonoGame.Extended/Collections/Pool.cs @@ -12,7 +12,8 @@ namespace MonoGame.Extended.Collections /// /// /// Requesting a free element from the is a O(1) operation. Returning a used element back to - /// the is an O(1) operation for the oldest or newest elements or O(n) otherwise, where n is the . + /// the is an O(1) operation for the oldest or newest elements or O(n) otherwise, where n is + /// the . /// /// /// @@ -47,7 +48,7 @@ namespace MonoGame.Extended.Collections /// // Helper method for this instance that should reset the state in preperation for the next time it is requested /// public void Reset() /// { - /// // TODO: Reset the state of your object here + /// // Reset the state of your object here /// } /// /// // Called by you or the Pool when this object is to be returned @@ -79,25 +80,8 @@ public class Pool : ICollection // on a 32-bit machine, a reference is 4 bytes // on a 64-bit machine, a reference is 8 bytes private readonly Deque _freeItems; - private readonly Deque _usedItems; private readonly Func _instantiationFunction; - - /// - /// Gets the number of elements contained in the . - /// - /// The number of elements contained in the . - public int Count => _usedItems.Count; - - /// - /// Gets or sets the total number of elements the internal data structure can hold. - /// - /// The number of elements that the can contain. - /// - /// Once set, can not be changed. - /// - public int Capacity => _usedItems.Count; - - bool ICollection.IsReadOnly => true; + private readonly Deque _usedItems; /// /// Initializes a new instance of the class that has a specified capacity and an element @@ -108,9 +92,7 @@ public class Pool : ICollection public Pool(int capacity, Func instantiationFunction) { if (instantiationFunction == null) - { throw new ArgumentNullException(nameof(instantiationFunction)); - } _instantiationFunction = instantiationFunction; _freeItems = new Deque(capacity); @@ -122,60 +104,22 @@ public Pool(int capacity, Func instantiationFunction) } } - private T CreateObject(int index) - { - var newObject = _instantiationFunction(index); - if (newObject == null) - { - throw new NullReferenceException($"The created pooled object of type '{typeof (T).Name}' is null."); - } - return newObject; - } - /// - /// Get a free element from the . + /// Gets or sets the total number of elements the internal data structure can hold. /// - /// - /// true to forcibly kill an existing, in use, element in the if is - /// equal to ; otherwise, false. - /// - /// A free element from the . + /// The number of elements that the can contain. /// - /// This method is an O(1) operation. + /// Once set, can not be changed. /// - public T Request(bool killExistingObjectIfFull = false) - { - while (true) - { - T poolable; - - if (_freeItems.RemoveFromFront(out poolable)) - { - poolable.Initialize(Return); - _usedItems.AddToBack(poolable); - return poolable; - } - - if (!killExistingObjectIfFull) - { - return null; - } - if (!_usedItems.GetFront(out poolable)) - { - return null; - } + public int Capacity => _usedItems.Count; - poolable.Return(); - killExistingObjectIfFull = false; - } - } + /// + /// Gets the number of elements contained in the . + /// + /// The number of elements contained in the . + public int Count => _usedItems.Count; - private void Return(IPoolable poolable) - { - var poolable1 = (T)poolable; - _freeItems.AddToBack(poolable1); - _usedItems.Remove(poolable1); - } + bool ICollection.IsReadOnly => true; public IEnumerator GetEnumerator() { @@ -228,7 +172,54 @@ void ICollection.CopyTo(T[] array, int arrayIndex) { _usedItems.CopyTo(array, arrayIndex); } - } -} + private T CreateObject(int index) + { + var newObject = _instantiationFunction(index); + if (newObject == null) + throw new NullReferenceException($"The created pooled object of type '{typeof(T).Name}' is null."); + return newObject; + } + + /// + /// Get a free element from the . + /// + /// + /// true to forcibly kill an existing, in use, element in the if is + /// equal to ; otherwise, false. + /// + /// A free element from the . + /// + /// This method is an O(1) operation. + /// + public T Request(bool killExistingObjectIfFull = false) + { + while (true) + { + T poolable; + + if (_freeItems.RemoveFromFront(out poolable)) + { + poolable.Initialize(Return); + _usedItems.AddToBack(poolable); + return poolable; + } + if (!killExistingObjectIfFull) + return null; + if (!_usedItems.GetFront(out poolable)) + return null; + + poolable.Return(); + killExistingObjectIfFull = false; + } + } + + private void Return(IPoolable poolable) + { + var poolable1 = (T) poolable; + _freeItems.AddToBack(poolable1); + _usedItems.Remove(poolable1); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/ColorExtensions.cs b/Source/MonoGame.Extended/ColorExtensions.cs new file mode 100644 index 000000000..794665b58 --- /dev/null +++ b/Source/MonoGame.Extended/ColorExtensions.cs @@ -0,0 +1,20 @@ +using System.Globalization; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + /// + /// Provides additional methods for working with color + /// + public static class ColorExtensions + { + public static Color FromHex(string value) + { + var r = int.Parse(value.Substring(1, 2), NumberStyles.HexNumber); + var g = int.Parse(value.Substring(3, 2), NumberStyles.HexNumber); + var b = int.Parse(value.Substring(5, 2), NumberStyles.HexNumber); + var a = value.Length > 7 ? int.Parse(value.Substring(7, 2), NumberStyles.HexNumber) : 255; + return new Color(r, g, b, a); + } + } +} diff --git a/Source/MonoGame.Extended/ColorHelper.cs b/Source/MonoGame.Extended/ColorHelper.cs new file mode 100644 index 000000000..370af3dc9 --- /dev/null +++ b/Source/MonoGame.Extended/ColorHelper.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + public static class ColorHelper + { + //http://stackoverflow.com/questions/2353211/hsl-to-rgb-color-conversion + public static Color FromHsl(float hue, float saturation, float lightness) + { + var hsl = new Vector4(hue, saturation, lightness, 1); + var color = new Vector4(0, 0, 0, hsl.W); + + // ReSharper disable once CompareOfFloatsByEqualityOperator + if (hsl.Y == 0.0f) + color.X = color.Y = color.Z = hsl.Z; + else + { + var q = hsl.Z < 0.5f ? hsl.Z*(1.0f + hsl.Y) : hsl.Z + hsl.Y - hsl.Z*hsl.Y; + var p = 2.0f*hsl.Z - q; + + color.X = HueToRgb(p, q, hsl.X + 1.0f/3.0f); + color.Y = HueToRgb(p, q, hsl.X); + color.Z = HueToRgb(p, q, hsl.X - 1.0f/3.0f); + } + + return new Color(color); + } + + private static float HueToRgb(float p, float q, float t) + { + if (t < 0.0f) t += 1.0f; + if (t > 1.0f) t -= 1.0f; + if (t < 1.0f/6.0f) return p + (q - p)*6.0f*t; + if (t < 1.0f/2.0f) return q; + if (t < 2.0f/3.0f) return p + (q - p)*(2.0f/3.0f - t)*6.0f; + return p; + } + + public static Color FromHex(string value) + { + if (string.IsNullOrEmpty(value)) + return Color.Transparent; + var startIndex = 0; + if (value.StartsWith("#")) + startIndex++; + var r = int.Parse(value.Substring(startIndex, 2), NumberStyles.HexNumber); + var g = int.Parse(value.Substring(startIndex + 2, 2), NumberStyles.HexNumber); + var b = int.Parse(value.Substring(startIndex + 4, 2), NumberStyles.HexNumber); + var a = value.Length > 6 + startIndex ? int.Parse(value.Substring(startIndex + 6, 2), NumberStyles.HexNumber) : 255; + + return new Color(r, g, b, a); + } + + public static string ToHex(Color color) + { + var rx = $"{color.R:x2}"; + var gx = $"{color.G:x2}"; + var bx = $"{color.B:x2}"; + var ax = $"{color.A:x2}"; + return $"#{rx}{gx}{bx}{ax}"; + } + + private static readonly Dictionary _colorsByName = typeof(Color) + .GetRuntimeProperties() + .Where(p => p.PropertyType == typeof(Color)) + .ToDictionary(p => p.Name, p => (Color) p.GetValue(null), StringComparer.OrdinalIgnoreCase); + + public static Color FromName(string name) + { + Color color; + + if(_colorsByName.TryGetValue(name, out color)) + return color; + + throw new InvalidOperationException($"{name} is not a valid color"); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Content/ContentManagerExtensions.cs b/Source/MonoGame.Extended/Content/ContentManagerExtensions.cs index 3651c80e8..dd323e4fb 100644 --- a/Source/MonoGame.Extended/Content/ContentManagerExtensions.cs +++ b/Source/MonoGame.Extended/Content/ContentManagerExtensions.cs @@ -18,8 +18,9 @@ public static GraphicsDevice GetGraphicsDevice(this ContentManager contentManage { // http://konaju.com/?p=21 var serviceProvider = contentManager.ServiceProvider; - var graphicsDeviceService = (IGraphicsDeviceService) serviceProvider.GetService(typeof(IGraphicsDeviceService)); + var graphicsDeviceService = + (IGraphicsDeviceService) serviceProvider.GetService(typeof(IGraphicsDeviceService)); return graphicsDeviceService.GraphicsDevice; } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Content/ContentReaderExtensions.cs b/Source/MonoGame.Extended/Content/ContentReaderExtensions.cs index 111383d7a..9dbc35f38 100644 --- a/Source/MonoGame.Extended/Content/ContentReaderExtensions.cs +++ b/Source/MonoGame.Extended/Content/ContentReaderExtensions.cs @@ -1,34 +1,45 @@ using System; -using System.Collections.Generic; -using System.Linq; +using System.IO; +using System.Reflection; using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; namespace MonoGame.Extended.Content { - internal static class ContentReaderExtensions + public static class ContentReaderExtensions { - public static string GetRelativeAssetPath(this ContentReader contentReader, string relativePath) + private static readonly FieldInfo _contentReaderGraphicsDeviceFieldInfo = typeof(ContentReader).GetTypeInfo().GetDeclaredField("graphicsDevice"); + private static byte[] _scratchBuffer; + + public static GraphicsDevice GetGraphicsDevice(this ContentReader contentReader) + { + return (GraphicsDevice)_contentReaderGraphicsDeviceFieldInfo.GetValue(contentReader); + } + + public static string GetRelativeAssetName(this ContentReader contentReader, string relativeName) { - var assetName = contentReader.AssetName; - var assetNodes = assetName.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); - var relativeNodes = relativePath.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); - var relativeIndex = assetNodes.Length - 1; - var newPathNodes = new List(); + var assetDirectory = Path.GetDirectoryName(contentReader.AssetName); + var assetName = Path.Combine(assetDirectory, relativeName).Replace('\\', '/'); - foreach (var relativeNode in relativeNodes) + var ellipseIndex = assetName.IndexOf("/../", StringComparison.Ordinal); + while (ellipseIndex != -1) { - if (relativeNode == "..") - relativeIndex--; - else - newPathNodes.Add(relativeNode); + var lastDirectoryIndex = assetName.LastIndexOf('/', ellipseIndex - 1); + if (lastDirectoryIndex == -1) + lastDirectoryIndex = 0; + assetName = assetName.Remove(lastDirectoryIndex, ellipseIndex + 4); + ellipseIndex = assetName.IndexOf("/../", StringComparison.Ordinal); } - var values = assetNodes - .Take(relativeIndex) - .Concat(newPathNodes) - .ToArray(); + return assetName; + } - return string.Join("/", values); + internal static byte[] GetScratchBuffer(this ContentReader contentReader, int size) + { + size = Math.Max(size, 1024 * 1024); + if (_scratchBuffer == null || _scratchBuffer.Length < size) + _scratchBuffer = new byte[size]; + return _scratchBuffer; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/EllipseF.cs b/Source/MonoGame.Extended/EllipseF.cs new file mode 100644 index 000000000..8676bcbbe --- /dev/null +++ b/Source/MonoGame.Extended/EllipseF.cs @@ -0,0 +1,48 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + public class EllipseF + { + public EllipseF(Vector2 center, float radiusX, float radiusY) + { + Center = center; + RadiusX = radiusX; + RadiusY = radiusY; + } + + public Vector2 Center { get; set; } + public float RadiusX { get; set; } + public float RadiusY { get; set; } + public float Left => Center.X - RadiusX; + public float Top => Center.Y - RadiusY; + public float Right => Center.X + RadiusX; + public float Bottom => Center.Y + RadiusY; + + public RectangleF BoundingRectangle + { + get + { + var minX = Left; + var minY = Top; + var maxX = Right; + var maxY = Bottom; + return new RectangleF(minX, minY, maxX - minX, maxY - minY); + } + } + + public bool Contains(float x, float y) + { + float xCalc = (float) (Math.Pow(x - Center.X, 2) / Math.Pow(RadiusX, 2)); + float yCalc = (float) (Math.Pow(y - Center.Y, 2) / Math.Pow(RadiusY, 2)); + + return xCalc + yCalc <= 1; + } + + public bool Contains(Vector2 point) + { + return Contains(point.X, point.Y); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/EventHandlerExtensions.cs b/Source/MonoGame.Extended/EventHandlerExtensions.cs deleted file mode 100644 index 848b14e2d..000000000 --- a/Source/MonoGame.Extended/EventHandlerExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; - -namespace MonoGame.Extended -{ - internal static class EventHandlerExtensions - { - public static void Raise(this EventHandler eventHandler, object sender, T args) - where T : EventArgs - { - var handler = eventHandler; - - if (handler != null) - handler(sender, args); - } - - public static void Raise(this EventHandler eventHandler, object sender, EventArgs args) - { - var handler = eventHandler; - - if (handler != null) - handler(sender, args); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/FastRandom.cs b/Source/MonoGame.Extended/FastRandom.cs new file mode 100644 index 000000000..472518b63 --- /dev/null +++ b/Source/MonoGame.Extended/FastRandom.cs @@ -0,0 +1,127 @@ +using System; +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + /// + /// A random number generator that uses a fast algorithm to generate random values. + /// The speed comes at the price of true 'randomness' though, there are noticeable + /// patterns & it compares quite unfavourably to other algorithms in that respect. + /// It's a good choice in situations where speed is more desirable than a + /// good random distribution, and a poor choice when random distribution is important. + /// + public class FastRandom + { + private int _state; + + public FastRandom() + : this(1) + { + } + + public FastRandom(int seed) + { + if (seed < 1) + throw new ArgumentOutOfRangeException(nameof(seed), "seed must be greater than zero"); + + _state = seed; + } + + /// + /// Gets the next random integer value. + /// + /// A random positive integer. + public int Next() + { + _state = 214013*_state + 2531011; + return (_state >> 16) & 0x7FFF; + } + + /// + /// Gets the next random integer value which is greater than zero and less than or equal to + /// the specified maxmimum value. + /// + /// The maximum random integer value to return. + /// A random integer value between zero and the specified maximum value. + public int Next(int max) + { + return (int) (max*NextSingle() + 0.5f); + } + + /// + /// Gets the next random integer between the specified minimum and maximum values. + /// + /// The inclusive minimum value. + /// The inclusive maximum value. + public int Next(int min, int max) + { + return (int) ((max - min)*NextSingle() + 0.5f) + min; + } + + /// + /// Gets the next random integer between the specified range of values. + /// + /// A range representing the inclusive minimum and maximum values. + /// A random integer between the specified minumum and maximum values. + public int Next(Range range) + { + return Next(range.Min, range.Max); + } + + /// + /// Gets the next random single value. + /// + /// A random single value between 0 and 1. + public float NextSingle() + { + return Next()/(float) short.MaxValue; + } + + /// + /// Gets the next random single value which is greater than zero and less than or equal to + /// the specified maxmimum value. + /// + /// The maximum random single value to return. + /// A random single value between zero and the specified maximum value. + public float NextSingle(float max) + { + return max*NextSingle(); + } + + /// + /// Gets the next random single value between the specified minimum and maximum values. + /// + /// The inclusive minimum value. + /// The inclusive maximum value. + /// A random single value between the specified minimum and maximum values. + public float NextSingle(float min, float max) + { + return (max - min)*NextSingle() + min; + } + + /// + /// Gets the next random single value between the specified range of values. + /// + /// A range representing the inclusive minimum and maximum values. + /// A random single value between the specified minimum and maximum values. + public float NextSingle(Range range) + { + return NextSingle(range.Min, range.Max); + } + + /// + /// Gets the next random angle value. + /// + /// A random angle value. + public float NextAngle() + { + return NextSingle(-MathHelper.Pi, MathHelper.Pi); + } + + public void NextUnitVector(out Vector2 vector) + { + var angle = NextAngle(); + vector = new Vector2((float) Math.Cos(angle), (float) Math.Sin(angle)); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/FloatHelper.cs b/Source/MonoGame.Extended/FloatHelper.cs new file mode 100644 index 000000000..a3792e669 --- /dev/null +++ b/Source/MonoGame.Extended/FloatHelper.cs @@ -0,0 +1,15 @@ +using System.Runtime.CompilerServices; + +namespace MonoGame.Extended +{ + public static class FloatHelper + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Swap(ref float value1, ref float value2) + { + var temp = value1; + value1 = value2; + value2 = temp; + } + } +} diff --git a/Source/MonoGame.Extended/FramesPerSecondCounter.cs b/Source/MonoGame.Extended/FramesPerSecondCounter.cs index 75c57d2cc..432f1ac60 100644 --- a/Source/MonoGame.Extended/FramesPerSecondCounter.cs +++ b/Source/MonoGame.Extended/FramesPerSecondCounter.cs @@ -1,51 +1,34 @@ -using System.Collections.Generic; -using System.Linq; +using System; using Microsoft.Xna.Framework; namespace MonoGame.Extended { public class FramesPerSecondCounter : IUpdate { - public FramesPerSecondCounter(int maximumSamples = 100) - { - MaximumSamples = maximumSamples; - } - - private readonly Queue _sampleBuffer = new Queue(); + private static readonly TimeSpan _oneSecondTimeSpan = new TimeSpan(0, 0, 1); + private int _framesCounter; + private TimeSpan _timer = _oneSecondTimeSpan; - public long TotalFrames { get; private set; } - public float AverageFramesPerSecond { get; private set; } - public float CurrentFramesPerSecond { get; private set; } - public int MaximumSamples { get; } - - public void Reset() + public FramesPerSecondCounter() { - TotalFrames = 0; - _sampleBuffer.Clear(); } - public void Update(float deltaTime) - { - CurrentFramesPerSecond = 1.0f / deltaTime; + public int FramesPerSecond { get; private set; } - _sampleBuffer.Enqueue(CurrentFramesPerSecond); - - if (_sampleBuffer.Count > MaximumSamples) - { - _sampleBuffer.Dequeue(); - AverageFramesPerSecond = _sampleBuffer.Average(i => i); - } - else - { - AverageFramesPerSecond = CurrentFramesPerSecond; - } + public void Update(GameTime gameTime) + { + _timer += gameTime.ElapsedGameTime; + if (_timer <= _oneSecondTimeSpan) + return; - TotalFrames++; + FramesPerSecond = _framesCounter; + _framesCounter = 0; + _timer -= _oneSecondTimeSpan; } - public void Update(GameTime gameTime) + public void Draw(GameTime gameTime) { - Update((float)gameTime.ElapsedGameTime.TotalSeconds); + _framesCounter++; } } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/FramesPerSecondCounterComponent.cs b/Source/MonoGame.Extended/FramesPerSecondCounterComponent.cs index 2ac70210c..ef3607228 100644 --- a/Source/MonoGame.Extended/FramesPerSecondCounterComponent.cs +++ b/Source/MonoGame.Extended/FramesPerSecondCounterComponent.cs @@ -1,54 +1,27 @@ -using System.Collections.Generic; -using System.Linq; -using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework; namespace MonoGame.Extended { public class FramesPerSecondCounterComponent : DrawableGameComponent { - FramesPerSecondCounter fpsCounter; + private readonly FramesPerSecondCounter _fpsCounter; - public FramesPerSecondCounterComponent(Game game, int maximumSamples = 100) + public FramesPerSecondCounterComponent(Game game) : base(game) { - fpsCounter = new FramesPerSecondCounter(maximumSamples); + _fpsCounter = new FramesPerSecondCounter(); } - public long TotalFrames - { - get { return fpsCounter.TotalFrames; } - } - - public float AverageFramesPerSecond - { - get { return fpsCounter.AverageFramesPerSecond; } - } - - public float CurrentFramesPerSecond - { - get { return fpsCounter.CurrentFramesPerSecond; } - } - - public int MaximumSamples - { - get { return fpsCounter.MaximumSamples; } - } - - public void Reset() - { - fpsCounter.Reset(); - } + public int FramesPerSecond => _fpsCounter.FramesPerSecond; public override void Update(GameTime gameTime) { - base.Update(gameTime); + _fpsCounter.Update(gameTime); } public override void Draw(GameTime gameTime) { - fpsCounter.Update((float)gameTime.ElapsedGameTime.TotalSeconds); - base.Draw(gameTime); + _fpsCounter.Draw(gameTime); } } -} - +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/GameTimeExtensions.cs b/Source/MonoGame.Extended/GameTimeExtensions.cs index dfc436b45..01c879021 100644 --- a/Source/MonoGame.Extended/GameTimeExtensions.cs +++ b/Source/MonoGame.Extended/GameTimeExtensions.cs @@ -6,7 +6,7 @@ public static class GameTimeExtensions { public static float GetElapsedSeconds(this GameTime gameTime) { - return (float)gameTime.ElapsedGameTime.TotalSeconds; + return (float) gameTime.ElapsedGameTime.TotalSeconds; } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended/IColorable.cs b/Source/MonoGame.Extended/IColorable.cs new file mode 100644 index 000000000..ad3c35c2c --- /dev/null +++ b/Source/MonoGame.Extended/IColorable.cs @@ -0,0 +1,9 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended +{ + public interface IColorable + { + Color Color { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/IDraw.cs b/Source/MonoGame.Extended/IDraw.cs deleted file mode 100644 index 58a6540af..000000000 --- a/Source/MonoGame.Extended/IDraw.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.Xna.Framework; - -namespace MonoGame.Extended -{ - public interface IDraw - { - void Draw(GameTime gameTime); - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/IEquatableByRef.cs b/Source/MonoGame.Extended/IEquatableByRef.cs new file mode 100644 index 000000000..678e5102a --- /dev/null +++ b/Source/MonoGame.Extended/IEquatableByRef.cs @@ -0,0 +1,21 @@ +namespace MonoGame.Extended +{ + /// + /// Defines a generalized method that a value type or class implements to create a type-specific method for + /// determining equality of instances by reference. + /// + /// The type of values or objects to compare. + public interface IEquatableByRef + { + /// + /// Indicates whether the current value or object is equal to another value or object of the same type by + /// reference. + /// + /// + /// true if the current value or object is equal to the parameter; otherwise, + /// false. + /// + /// A value or object to compare with this value or object. + bool Equals(ref T other); + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/IPoolable.cs b/Source/MonoGame.Extended/IPoolable.cs index de2168bd8..1877a9f14 100644 --- a/Source/MonoGame.Extended/IPoolable.cs +++ b/Source/MonoGame.Extended/IPoolable.cs @@ -27,4 +27,4 @@ public interface IPoolable /// void Return(); } -} +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/IRectangular.cs b/Source/MonoGame.Extended/IRectangular.cs new file mode 100644 index 000000000..719d6757d --- /dev/null +++ b/Source/MonoGame.Extended/IRectangular.cs @@ -0,0 +1,8 @@ + +namespace MonoGame.Extended +{ + public interface IRectangular + { + RectangleF BoundingRectangle { get; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/ISizable.cs b/Source/MonoGame.Extended/ISizable.cs new file mode 100644 index 000000000..5b55058e9 --- /dev/null +++ b/Source/MonoGame.Extended/ISizable.cs @@ -0,0 +1,8 @@ + +namespace MonoGame.Extended +{ + public interface ISizable + { + Size2 Size { get; set; } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/GamePadListenerSettings.cs b/Source/MonoGame.Extended/InputListeners/GamePadListenerSettings.cs deleted file mode 100644 index 33b538920..000000000 --- a/Source/MonoGame.Extended/InputListeners/GamePadListenerSettings.cs +++ /dev/null @@ -1,121 +0,0 @@ -using Microsoft.Xna.Framework; - -namespace MonoGame.Extended.InputListeners -{ - /// - /// This is a class that contains settings to be used to initialise a . - /// - /// - public class GamePadListenerSettings : InputListenerSettings - { - /// - /// This is a class that contains settings to be used to initialise a . - /// Note: There are a number of extra settings that are settable properties. - /// - /// The index of the controller the listener will be tied to. - /// Whether vibration is enabled on the controller. - /// General setting for the strength of the left motor. - /// This motor has a slow, deep, powerful rumble. - /// This setting will modify all future vibrations - /// through this listener. - /// General setting for the strength of the right motor. - /// This motor has a snappy, quick, high-pitched rumble. - /// This setting will modify all future vibrations - /// through this listener. - public GamePadListenerSettings(PlayerIndex playerIndex, bool vibrationEnabled = true, - float vibrationStrengthLeft = 1.0f, float vibrationStrengthRight = 1.0f) - { - PlayerIndex = playerIndex; - VibrationEnabled = vibrationEnabled; - VibrationStrengthLeft = vibrationStrengthLeft; - VibrationStrengthRight = vibrationStrengthRight; - TriggerDownTreshold = 0.15f; - ThumbstickDownTreshold = 0.5f; - RepeatInitialDelay = 500; - RepeatDelay = 50; - } - - /// - /// The index of the controller. - /// - public PlayerIndex PlayerIndex { get; set; } - - /// - /// When a button is held down, the interval in which - /// ButtonRepeated fires. Value in milliseconds. - /// - public int RepeatDelay { get; set; } - - /// - /// The amount of time a button has to be held down - /// in order to fire ButtonRepeated the first time. - /// Value in milliseconds. - /// - public int RepeatInitialDelay { get; set; } - - - /// - /// Whether vibration is enabled for this controller. - /// - public bool VibrationEnabled { get; set; } - - /// - /// General setting for the strength of the left motor. - /// This motor has a slow, deep, powerful rumble. - /// This setting will modify all future vibrations - /// through this listener. - /// - public float VibrationStrengthLeft { get; set; } - - /// - /// General setting for the strength of the right motor. - /// This motor has a snappy, quick, high-pitched rumble. - /// This setting will modify all future vibrations - /// through this listener. - /// - public float VibrationStrengthRight { get; set; } - - /// - /// The treshold of movement that has to be met in order - /// for the listener to fire an event with the trigger's - /// updated position. - /// In essence this defines the event's - /// resolution. - /// At a value of 0 this will fire every time - /// the trigger's position is not 0f. - /// - public float TriggerDeltaTreshold { get; set; } - - /// - /// The treshold of movement that has to be met in order - /// for the listener to fire an event with the thumbstick's - /// updated position. - /// In essence this defines the event's - /// resolution. - /// At a value of 0 this will fire every time - /// the thumbstick's position is not {x:0, y:0}. - /// - public float ThumbStickDeltaTreshold { get; set; } - - /// - /// How deep the triggers have to be depressed in order to - /// register as a ButtonDown event. - /// - public float TriggerDownTreshold { get; set; } - - /// - /// How deep the triggers have to be depressed in order to - /// register as a ButtonDown event. - /// - public float ThumbstickDownTreshold { get; private set; } - - internal override GamePadListener CreateListener() - { - return new GamePadListener(this); - } - - // For internal use only. This limits the user to only having - // one controller. - internal GamePadListenerSettings() : this(PlayerIndex.One) { } - } -} diff --git a/Source/MonoGame.Extended/InputListeners/InputListener.cs b/Source/MonoGame.Extended/InputListeners/InputListener.cs deleted file mode 100644 index 58d237375..000000000 --- a/Source/MonoGame.Extended/InputListeners/InputListener.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.Xna.Framework; -using MonoGame.Extended.ViewportAdapters; - -namespace MonoGame.Extended.InputListeners -{ - public abstract class InputListener - { - protected InputListener() - { - } - - internal ViewportAdapter ViewportAdapter { get; set; } - - internal abstract void Update(GameTime gameTime); - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/InputListenerManager.cs b/Source/MonoGame.Extended/InputListeners/InputListenerManager.cs deleted file mode 100644 index d4d7305e0..000000000 --- a/Source/MonoGame.Extended/InputListeners/InputListenerManager.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using Microsoft.Xna.Framework; -using MonoGame.Extended.ViewportAdapters; - -namespace MonoGame.Extended.InputListeners -{ - public class InputListenerManager : IUpdate - { - public InputListenerManager() - : this(null) - { - } - - public InputListenerManager(ViewportAdapter viewportAdapter) - { - _viewportAdapter = viewportAdapter; - _listeners = new List(); - } - - private readonly ViewportAdapter _viewportAdapter; - private readonly List _listeners; - - public IEnumerable Listeners => _listeners; - - public T AddListener(InputListenerSettings settings) - where T : InputListener - { - var listener = settings.CreateListener(); - _listeners.Add(listener); - return listener; - } - - public T AddListener() - where T : InputListener - { - var constructors = typeof(T) - .GetTypeInfo().DeclaredConstructors - .Where(c => !c.GetParameters().Any()) - .ToArray(); - - if (!constructors.Any()) - throw new InvalidOperationException($"No parameterless constructor defined for type {typeof (T).Name}"); - - var listener = (T)constructors[0].Invoke(new object[0]); - listener.ViewportAdapter = _viewportAdapter; - _listeners.Add(listener); - return listener; - } - - public void RemoveListener(InputListener listener) - { - _listeners.Remove(listener); - } - - public void Update(GameTime gameTime) - { - foreach (var listener in _listeners) - listener.Update(gameTime); - - GamePadListener.CheckConnections(); - } - } -} diff --git a/Source/MonoGame.Extended/InputListeners/KeyboardEventArgs.cs b/Source/MonoGame.Extended/InputListeners/KeyboardEventArgs.cs deleted file mode 100644 index 552f07f62..000000000 --- a/Source/MonoGame.Extended/InputListeners/KeyboardEventArgs.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using Microsoft.Xna.Framework.Input; - -namespace MonoGame.Extended.InputListeners -{ - public class KeyboardEventArgs : EventArgs - { - internal KeyboardEventArgs(Keys key, KeyboardState keyboardState) - { - Key = key; - - Modifiers = KeyboardModifiers.None; - - if (keyboardState.IsKeyDown(Keys.LeftControl) || keyboardState.IsKeyDown(Keys.RightControl)) - Modifiers |= KeyboardModifiers.Control; - - if (keyboardState.IsKeyDown(Keys.LeftShift) || keyboardState.IsKeyDown(Keys.RightShift)) - Modifiers |= KeyboardModifiers.Shift; - - if (keyboardState.IsKeyDown(Keys.LeftAlt) || keyboardState.IsKeyDown(Keys.RightAlt)) - Modifiers |= KeyboardModifiers.Alt; - } - - public Keys Key { get; } - public KeyboardModifiers Modifiers { get; } - - public char? Character => ToChar(Key, Modifiers); - - private static char? ToChar(Keys key, KeyboardModifiers modifiers = KeyboardModifiers.None) - { - var isShiftDown = ((modifiers & KeyboardModifiers.Shift) == KeyboardModifiers.Shift); - - if (key == Keys.A) { return isShiftDown ? 'A' : 'a'; } - if (key == Keys.B) { return isShiftDown ? 'B' : 'b'; } - if (key == Keys.C) { return isShiftDown ? 'C' : 'c'; } - if (key == Keys.D) { return isShiftDown ? 'D' : 'd'; } - if (key == Keys.E) { return isShiftDown ? 'E' : 'e'; } - if (key == Keys.F) { return isShiftDown ? 'F' : 'f'; } - if (key == Keys.G) { return isShiftDown ? 'G' : 'g'; } - if (key == Keys.H) { return isShiftDown ? 'H' : 'h'; } - if (key == Keys.I) { return isShiftDown ? 'I' : 'i'; } - if (key == Keys.J) { return isShiftDown ? 'J' : 'j'; } - if (key == Keys.K) { return isShiftDown ? 'K' : 'k'; } - if (key == Keys.L) { return isShiftDown ? 'L' : 'l'; } - if (key == Keys.M) { return isShiftDown ? 'M' : 'm'; } - if (key == Keys.N) { return isShiftDown ? 'N' : 'n'; } - if (key == Keys.O) { return isShiftDown ? 'O' : 'o'; } - if (key == Keys.P) { return isShiftDown ? 'P' : 'p'; } - if (key == Keys.Q) { return isShiftDown ? 'Q' : 'q'; } - if (key == Keys.R) { return isShiftDown ? 'R' : 'r'; } - if (key == Keys.S) { return isShiftDown ? 'S' : 's'; } - if (key == Keys.T) { return isShiftDown ? 'T' : 't'; } - if (key == Keys.U) { return isShiftDown ? 'U' : 'u'; } - if (key == Keys.V) { return isShiftDown ? 'V' : 'v'; } - if (key == Keys.W) { return isShiftDown ? 'W' : 'w'; } - if (key == Keys.X) { return isShiftDown ? 'X' : 'x'; } - if (key == Keys.Y) { return isShiftDown ? 'Y' : 'y'; } - if (key == Keys.Z) { return isShiftDown ? 'Z' : 'z'; } - - if ((key == Keys.D0 && !isShiftDown) || key == Keys.NumPad0) { return '0'; } - if ((key == Keys.D1 && !isShiftDown) || key == Keys.NumPad1) { return '1'; } - if ((key == Keys.D2 && !isShiftDown) || key == Keys.NumPad2) { return '2'; } - if ((key == Keys.D3 && !isShiftDown) || key == Keys.NumPad3) { return '3'; } - if ((key == Keys.D4 && !isShiftDown) || key == Keys.NumPad4) { return '4'; } - if ((key == Keys.D5 && !isShiftDown) || key == Keys.NumPad5) { return '5'; } - if ((key == Keys.D6 && !isShiftDown) || key == Keys.NumPad6) { return '6'; } - if ((key == Keys.D7 && !isShiftDown) || key == Keys.NumPad7) { return '7'; } - if ((key == Keys.D8 && !isShiftDown) || key == Keys.NumPad8) { return '8'; } - if ((key == Keys.D9 && !isShiftDown) || key == Keys.NumPad9) { return '9'; } - - if (key == Keys.D0 && isShiftDown) { return ')'; } - if (key == Keys.D1 && isShiftDown) { return '!'; } - if (key == Keys.D2 && isShiftDown) { return '@'; } - if (key == Keys.D3 && isShiftDown) { return '#'; } - if (key == Keys.D4 && isShiftDown) { return '$'; } - if (key == Keys.D5 && isShiftDown) { return '%'; } - if (key == Keys.D6 && isShiftDown) { return '^'; } - if (key == Keys.D7 && isShiftDown) { return '&'; } - if (key == Keys.D8 && isShiftDown) { return '*'; } - if (key == Keys.D9 && isShiftDown) { return '('; } - - if (key == Keys.Space) { return ' '; } - if (key == Keys.Tab) { return '\t'; } - if (key == Keys.Enter) { return (char)13; } - if (key == Keys.Back) { return (char)8; } - - if (key == Keys.Add) { return '+'; } - if (key == Keys.Decimal) { return '.'; } - if (key == Keys.Divide) { return '/'; } - if (key == Keys.Multiply) { return '*'; } - if (key == Keys.OemBackslash) { return '\\'; } - if (key == Keys.OemComma && !isShiftDown) { return ','; } - if (key == Keys.OemComma && isShiftDown) { return '<'; } - if (key == Keys.OemOpenBrackets && !isShiftDown) { return '['; } - if (key == Keys.OemOpenBrackets && isShiftDown) { return '{'; } - if (key == Keys.OemCloseBrackets && !isShiftDown) { return ']'; } - if (key == Keys.OemCloseBrackets && isShiftDown) { return '}'; } - if (key == Keys.OemPeriod && !isShiftDown) { return '.'; } - if (key == Keys.OemPeriod && isShiftDown) { return '>'; } - if (key == Keys.OemPipe && !isShiftDown) { return '\\'; } - if (key == Keys.OemPipe && isShiftDown) { return '|'; } - if (key == Keys.OemPlus && !isShiftDown) { return '='; } - if (key == Keys.OemPlus && isShiftDown) { return '+'; } - if (key == Keys.OemMinus && !isShiftDown) { return '-'; } - if (key == Keys.OemMinus && isShiftDown) { return '_'; } - if (key == Keys.OemQuestion && !isShiftDown) { return '/'; } - if (key == Keys.OemQuestion && isShiftDown) { return '?'; } - if (key == Keys.OemQuotes && !isShiftDown) { return '\''; } - if (key == Keys.OemQuotes && isShiftDown) { return '"'; } - if (key == Keys.OemSemicolon && !isShiftDown) { return ';'; } - if (key == Keys.OemSemicolon && isShiftDown) { return ':'; } - if (key == Keys.OemTilde && !isShiftDown) { return '`'; } - if (key == Keys.OemTilde && isShiftDown) { return '~'; } - if (key == Keys.Subtract) { return '-'; } - - return null; - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/TouchEventArgs.cs b/Source/MonoGame.Extended/InputListeners/TouchEventArgs.cs deleted file mode 100644 index 3bc12d0e3..000000000 --- a/Source/MonoGame.Extended/InputListeners/TouchEventArgs.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using Microsoft.Xna.Framework.Input.Touch; - -namespace MonoGame.Extended.InputListeners -{ - public class TouchEventArgs : EventArgs - { - internal TouchEventArgs(TouchLocation location) - { - Location = location; - } - - public TouchLocation Location { get; } - - public override bool Equals(object other) - { - var args = other as TouchEventArgs; - - if (args == null) - return false; - - return ReferenceEquals(this, args) || Location.Id.Equals(args.Location.Id); - } - - public override int GetHashCode() - { - return Location.Id.GetHashCode(); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/InputListeners/TouchListener.cs b/Source/MonoGame.Extended/InputListeners/TouchListener.cs deleted file mode 100644 index c0c0e18df..000000000 --- a/Source/MonoGame.Extended/InputListeners/TouchListener.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Input.Touch; - -namespace MonoGame.Extended.InputListeners -{ - public class TouchListener : InputListener - { - internal TouchListener() - : this(new TouchListenerSettings()) - { - } - - // ReSharper disable once UnusedParameter.Local - internal TouchListener(TouchListenerSettings settings) - { - } - - public event EventHandler TouchStarted; - public event EventHandler TouchEnded; - public event EventHandler TouchMoved; - public event EventHandler TouchCancelled; - - internal override void Update(GameTime gameTime) - { - var touchCollection = TouchPanel.GetState(); - - foreach (var touchLocation in touchCollection) - { - switch (touchLocation.State) - { - case TouchLocationState.Pressed: - TouchStarted.Raise(this, new TouchEventArgs(touchLocation)); - break; - case TouchLocationState.Moved: - TouchMoved.Raise(this, new TouchEventArgs(touchLocation)); - break; - case TouchLocationState.Released: - TouchEnded.Raise(this, new TouchEventArgs(touchLocation)); - break; - case TouchLocationState.Invalid: - TouchCancelled.Raise(this, new TouchEventArgs(touchLocation)); - break; - } - } - } - } -} diff --git a/Source/MonoGame.Extended/InputListeners/TouchListenerSettings.cs b/Source/MonoGame.Extended/InputListeners/TouchListenerSettings.cs deleted file mode 100644 index b5af1ed52..000000000 --- a/Source/MonoGame.Extended/InputListeners/TouchListenerSettings.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace MonoGame.Extended.InputListeners -{ - public class TouchListenerSettings : InputListenerSettings - { - public TouchListenerSettings() - { - } - - internal override TouchListener CreateListener() - { - return new TouchListener(); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/CollisionWorldExtensions.cs b/Source/MonoGame.Extended/Maps/Tiled/CollisionWorldExtensions.cs deleted file mode 100644 index d2dbdc0ae..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/CollisionWorldExtensions.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Linq; -using MonoGame.Extended.Collisions; - -namespace MonoGame.Extended.Maps.Tiled -{ - public static class CollisionWorldExtensions - { - public static CollisionGrid CreateGrid(this CollisionWorld world, TiledTileLayer tileLayer) - { - var data = tileLayer.Tiles - .Select(t => t.Id) - .ToArray(); - - return world.CreateGrid(data, tileLayer.Width, tileLayer.Height, tileLayer.TileWidth, tileLayer.TileHeight); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/SpriteBatchExtensions.cs b/Source/MonoGame.Extended/Maps/Tiled/SpriteBatchExtensions.cs deleted file mode 100644 index d04213afe..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/SpriteBatchExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Shapes; - -namespace MonoGame.Extended.Maps.Tiled -{ - public static class SpriteBatchExtensions - { - public static void Draw(this SpriteBatch spriteBatch, TiledMap tiledMap, Rectangle? visibleRectangle = null) - { - tiledMap.Draw(spriteBatch, visibleRectangle); - } - - public static void Draw(this SpriteBatch spriteBatch, TiledMap tiledMap, Camera2D camera) - { - tiledMap.Draw(spriteBatch, camera); - } - - public static void Draw(this SpriteBatch spriteBatch, TiledLayer layer, Rectangle? visibleRectangle = null) - { - layer.Draw(spriteBatch, visibleRectangle); - } - - public static void Draw(this SpriteBatch spriteBatch, TiledLayer layer, Camera2D camera) - { - layer.Draw(spriteBatch, camera.GetBoundingRectangle().ToRectangle()); - } - } -} diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledImageLayer.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledImageLayer.cs deleted file mode 100644 index b34058ffa..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledImageLayer.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledImageLayer : TiledLayer, IMovable - { - private readonly Texture2D _texture; - - public TiledImageLayer(string name, Texture2D texture, Vector2 position) - : base(name) - { - Position = position; - _texture = texture; - } - - public override void Dispose() - { - } - - public Vector2 Position { get; set; } - - public override void Draw(SpriteBatch spriteBatch, Rectangle? visibleRectangle = null, Color? backgroundColor = null) - { - if (!IsVisible) - return; - - spriteBatch.Draw(_texture, Position, Color.White * Opacity); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledLayer.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledLayer.cs deleted file mode 100644 index 7fa4a36a0..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledLayer.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - -namespace MonoGame.Extended.Maps.Tiled -{ - public abstract class TiledLayer : IDisposable - { - protected TiledLayer(string name) - { - Name = name; - Properties = new TiledProperties(); - IsVisible = true; - Opacity = 1.0f; - } - - public abstract void Dispose(); - - public string Name { get; } - public TiledProperties Properties { get; } - public bool IsVisible { get; set; } - public float Opacity { get; set; } - - public abstract void Draw(SpriteBatch spriteBatch, Rectangle? visibleRectangle = null, Color? backgroundColor = null); - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledMap.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledMap.cs deleted file mode 100644 index 0a01289a4..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledMap.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Shapes; -using MonoGame.Extended.TextureAtlases; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledMap : IDisposable - { - public TiledMap(GraphicsDevice graphicsDevice, int width, int height, int tileWidth, int tileHeight, - TiledMapOrientation orientation = TiledMapOrientation.Orthogonal) - { - _graphicsDevice = graphicsDevice; - _layers = new List(); - _objectGroups = new List(); - _tilesets = new List(); - - Width = width; - Height = height; - TileWidth = tileWidth; - TileHeight = tileHeight; - Properties = new TiledProperties(); - Orientation = orientation; - } - - public void Dispose() - { - foreach (var tiledLayer in _layers) - tiledLayer.Dispose(); - } - - private readonly List _tilesets; - private readonly GraphicsDevice _graphicsDevice; - private readonly List _layers; - private readonly List _objectGroups; - - public int Width { get; } - public int Height { get; } - public int TileWidth { get; } - public int TileHeight { get; } - public Color? BackgroundColor { get; set; } - public TiledRenderOrder RenderOrder { get; set; } - public TiledProperties Properties { get; private set; } - public TiledMapOrientation Orientation { get; private set; } - - public List ObjectGroups => _objectGroups; - public IEnumerable Layers => _layers; - public IEnumerable ImageLayers => _layers.OfType(); - public IEnumerable TileLayers => _layers.OfType(); - public int WidthInPixels => Width * TileWidth; - public int HeightInPixels => Height * TileHeight; - - public TiledTileset CreateTileset(Texture2D texture, int firstId, int tileWidth, int tileHeight, int spacing = 2, int margin = 2) - { - var tileset = new TiledTileset(texture, firstId, tileWidth, tileHeight, spacing, margin); - _tilesets.Add(tileset); - return tileset; - } - - public TiledTileLayer CreateTileLayer(string name, int width, int height, int[] data) - { - var layer = new TiledTileLayer(this, _graphicsDevice, name, width, height, data); - _layers.Add(layer); - return layer; - } - - public TiledImageLayer CreateImageLayer(string name, Texture2D texture, Vector2 position) - { - var layer = new TiledImageLayer(name, texture, position); - _layers.Add(layer); - return layer; - } - - public TiledObjectGroup CreateObjectGroup(string name, TiledObject[] objects, bool isVisible) - { - var objectGroup = new TiledObjectGroup(name, objects) {IsVisible = isVisible}; - _objectGroups.Add(objectGroup); - return objectGroup; - } - - public TiledLayer GetLayer(string name) - { - return _layers.FirstOrDefault(i => i.Name == name); - } - - public T GetLayer(string name) - where T : TiledLayer - { - return (T) GetLayer(name); - } - - public TiledObjectGroup GetObjectGroup(string name) - { - return _objectGroups.FirstOrDefault(i => i.Name == name); - } - - - public void Draw(SpriteBatch spriteBatch, Rectangle? visibleRectangle = null) - { - foreach (var layer in _layers.Where(i => i.IsVisible)) - layer.Draw(spriteBatch, visibleRectangle); - } - - public void Draw(SpriteBatch spriteBatch, Camera2D camera) - { - var visibleRectangle = camera.GetBoundingRectangle().ToRectangle(); - Draw(spriteBatch, visibleRectangle); - } - - public TextureRegion2D GetTileRegion(int id) - { - if (id == 0) - return null; - - var tileset = _tilesets.LastOrDefault(i => i.FirstId <= id); - - if (tileset == null) - throw new InvalidOperationException($"No tileset found for id {id}"); - - return tileset.GetTileRegion(id); - } - } -} diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledMapOrientation.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledMapOrientation.cs deleted file mode 100644 index d2b3b037e..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledMapOrientation.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MonoGame.Extended.Maps.Tiled -{ - public enum TiledMapOrientation - { - Orthogonal = 1, - Isometric = 2, - Staggered = 3 - } -} diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledMapReader.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledMapReader.cs deleted file mode 100644 index ebb80108e..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledMapReader.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Content; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledMapReader : ContentTypeReader - { - protected override TiledMap Read(ContentReader reader, TiledMap existingInstance) - { - var backgroundColor = reader.ReadColor(); - var renderOrder = (TiledRenderOrder) Enum.Parse(typeof (TiledRenderOrder), reader.ReadString(), true); - var tiledMap = new TiledMap( - graphicsDevice: reader.ContentManager.GetGraphicsDevice(), - width: reader.ReadInt32(), - height: reader.ReadInt32(), - tileWidth: reader.ReadInt32(), - tileHeight: reader.ReadInt32(), - orientation: (TiledMapOrientation)reader.ReadInt32()) - { - BackgroundColor = backgroundColor, - RenderOrder = renderOrder - }; - - ReadCustomProperties(reader, tiledMap.Properties); - - var tilesetCount = reader.ReadInt32(); - - for (var i = 0; i < tilesetCount; i++) - { - var textureAssetName = reader.GetRelativeAssetPath(reader.ReadString()); - var texture = reader.ContentManager.Load(textureAssetName); - var tileset = tiledMap.CreateTileset( - texture: texture, - firstId: reader.ReadInt32(), - tileWidth: reader.ReadInt32(), - tileHeight: reader.ReadInt32(), - spacing: reader.ReadInt32(), - margin: reader.ReadInt32()); - ReadCustomProperties(reader, tileset.Properties); - } - - var layerCount = reader.ReadInt32(); - - for (var i = 0; i < layerCount; i++) - { - var layer = ReadLayer(reader, tiledMap); - ReadCustomProperties(reader, layer.Properties); - } - - var objectGroupsCount = reader.ReadInt32(); - - for (var i = 0; i < objectGroupsCount; i++) - { - var objectGroup = ReadObjectGroup(reader, tiledMap); - ReadCustomProperties(reader, objectGroup.Properties); - } - - return tiledMap; - } - - private static TiledObjectGroup ReadObjectGroup(ContentReader reader, TiledMap tiledMap) - { - var groupName = reader.ReadString(); - var visible = reader.ReadBoolean(); - var opacity = reader.ReadSingle(); - var count = reader.ReadInt32(); - var objects = new TiledObject[count]; - - for (var i = 0; i < count; i++) - { - var objectType = (TiledObjectType) reader.ReadInt32(); - var id = reader.ReadInt32(); - var gid = reader.ReadInt32(); - var x = reader.ReadSingle(); - var y = reader.ReadSingle(); - var width = reader.ReadSingle(); - var height = reader.ReadSingle(); - var rotation = reader.ReadSingle(); - var name = reader.ReadString(); - var type = reader.ReadString(); - var isVisible = reader.ReadBoolean(); - - objects[i] = new TiledObject(objectType, id, gid >= 0 ? gid : (int?) null, x, y, width, height) - { - IsVisible = isVisible, - Opacity = opacity, - Rotation = rotation, - Name = name, - Type = type - }; - - if (objectType == TiledObjectType.Polyline || objectType == TiledObjectType.Polygon) - { - var pointsCount = reader.ReadInt32(); - - for (var j = 0; j < pointsCount; j++) - objects[i].Points.Add(reader.ReadVector2()); - } - - ReadCustomProperties(reader, objects[i].Properties); - } - - return tiledMap.CreateObjectGroup(groupName, objects, visible); - } - - private static void ReadCustomProperties(ContentReader reader, TiledProperties properties) - { - var count = reader.ReadInt32(); - - for (var i = 0; i < count; i++) - properties.Add(reader.ReadString(), reader.ReadString()); - } - - private static TiledLayer ReadLayer(ContentReader reader, TiledMap tiledMap) - { - var layerName = reader.ReadString(); - var visible = reader.ReadBoolean(); - var opacity = reader.ReadSingle(); - var layerType = reader.ReadString(); - var layer = ReadLayerTypeProperties(reader, tiledMap, layerName, layerType); - layer.IsVisible = visible; - layer.Opacity = opacity; - return layer; - } - - private static TiledLayer ReadLayerTypeProperties(ContentReader reader, TiledMap tiledMap, string layerName, string layerType) - { - if (layerType == "TileLayer") - return ReadTileLayer(reader, tiledMap, layerName); - - if (layerType == "ImageLayer") - return ReadImageLayer(reader, tiledMap, layerName); - - throw new NotSupportedException($"Layer type {layerType} is not supported"); - } - - private static TiledTileLayer ReadTileLayer(ContentReader reader, TiledMap tileMap, string layerName) - { - var tileDataCount = reader.ReadInt32(); - var tileData = new int[tileDataCount]; - - for (var d = 0; d < tileDataCount; d++) - tileData[d] = reader.ReadInt32(); - - return tileMap.CreateTileLayer(name: layerName, width: reader.ReadInt32(), height: reader.ReadInt32(), data: tileData); - } - - private static TiledImageLayer ReadImageLayer(ContentReader reader, TiledMap tileMap, string layerName) - { - var assetName = reader.GetRelativeAssetPath(reader.ReadString()); - var texture = reader.ContentManager.Load(assetName); - var position = reader.ReadVector2(); - - return tileMap.CreateImageLayer(layerName, texture, position); - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledObject.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledObject.cs deleted file mode 100644 index 0eaecbd8d..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledObject.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System.Collections.Generic; -using Microsoft.Xna.Framework; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledObject - { - public TiledObject(TiledObjectType objectType, int id, int? gid, float x, float y, float width, float height) - { - ObjectType = objectType; - Id = id; - Gid = gid; - X = x; - Y = y; - Width = width; - Height = height; - Points = new List(); - Properties = new TiledProperties(); - } - - public int Id { get; } - public int? Gid { get; } - public TiledObjectType ObjectType { get; } - public string Name { get; set; } - public float X { get; } - public float Y { get; } - public float Width { get; } - public float Height { get; } - public TiledProperties Properties { get; } - public List Points { get; } - public bool IsVisible { get; set; } - public float Opacity { get; set; } - public float Rotation { get; set; } - public string Type { get; set; } - - - public override string ToString() - { - return $"{Id}"; - } - } - - public enum TiledObjectType - { - Rectangle = 1, - Ellipse = 2, - Polygon = 3, - Polyline = 4, - Tile = 5 - } -} diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledObjectGroup.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledObjectGroup.cs deleted file mode 100644 index 0f98d9b12..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledObjectGroup.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledObjectGroup - { - public TiledObjectGroup(string name, TiledObject[] objects) - { - Name = name; - Objects = objects; - Properties = new TiledProperties(); - } - - public string Name { get; } - public TiledObject[] Objects { get; } - public TiledProperties Properties { get; } - public bool IsVisible { get; set; } - } -} diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledProperties.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledProperties.cs deleted file mode 100644 index 3ecd3ddd4..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledProperties.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Collections.Generic; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledProperties : Dictionary - { - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledTile.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledTile.cs deleted file mode 100644 index 1f0d88ab1..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledTile.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledTile - { - public TiledTile (int id, int x, int y) - { - Id = id; - X = x; - Y = y; - } - - public int Id { get; } - public int X { get; private set; } - public int Y { get; private set; } - - public override string ToString() - { - return $"{Id}"; - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledTileLayer.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledTileLayer.cs deleted file mode 100644 index fda875b15..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledTileLayer.cs +++ /dev/null @@ -1,192 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.TextureAtlases; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledTileLayer : TiledLayer - { - public TiledTileLayer(TiledMap map, GraphicsDevice graphicsDevice, string name, int width, int height, int[] data) - : base(name) - { - Width = width; - Height = height; - - _renderTargetSpriteBatch = new SpriteBatch(graphicsDevice); - _map = map; - _tiles = CreateTiles(data); - } - - public override void Dispose() - { - _renderTargetSpriteBatch.Dispose(); - } - - public int Width { get; } - public int Height { get; } - - private readonly TiledMap _map; - private readonly TiledTile[] _tiles; - private readonly SpriteBatch _renderTargetSpriteBatch; - private RenderTarget2D _renderTarget; - - public IEnumerable Tiles => _tiles; - public int TileWidth => _map.TileWidth; - public int TileHeight => _map.TileHeight; - - private TiledTile[] CreateTiles(int[] data) - { - var tiles = new TiledTile[data.Length]; - var index = 0; - - for (var y = 0; y < Height; y++) - { - for (var x = 0; x < Width; x++) - { - tiles[x + y * Width] = new TiledTile(data[index], x, y); - index++; - } - } - - return tiles; - } - - public override void Draw(SpriteBatch spriteBatch, Rectangle? visibleRectangle = null, Color? backgroundColor = null) - { - if(!IsVisible) - return; - - if (_renderTarget == null) - { - // create and render the entire map to a single render target. - // this gives the best frame rate performance at the cost of memory. - // ideally, we'd like to have a couple of different draw strategies for different situations. - _renderTarget = new RenderTarget2D(_renderTargetSpriteBatch.GraphicsDevice, _map.WidthInPixels, _map.WidthInPixels); - - using (_renderTarget.BeginDraw(_renderTargetSpriteBatch.GraphicsDevice, backgroundColor ?? Color.Transparent)) - { - //var vr = visibleRectangle ?? new Rectangle(0, 0, _map.WidthInPixels, _map.HeightInPixels); - var vr = new Rectangle(0, 0, _map.WidthInPixels, _map.HeightInPixels); - var renderOrderFunction = GetRenderOrderFunction(); - var tileLocationFunction = GetTileLocationFunction(); - var firstCol = vr.Left < 0 ? 0 : (int) Math.Floor(vr.Left/(float) _map.TileWidth); - var firstRow = vr.Top < 0 ? 0 : (int) Math.Floor(vr.Top/(float) _map.TileHeight); - - // +3 to cover any gaps - var columns = Math.Min(_map.Width, vr.Width/_map.TileWidth) + 3; - var rows = Math.Min(_map.Height, vr.Height/_map.TileHeight) + 3; - - _renderTargetSpriteBatch.Begin(blendState: BlendState.AlphaBlend, samplerState: SamplerState.PointClamp); - - foreach (var tile in renderOrderFunction(firstCol, firstRow, firstCol + columns, firstRow + rows)) - { - var region = tile != null ? _map.GetTileRegion(tile.Id) : null; - - if (region != null) - { - var point = tileLocationFunction(tile); - var destinationRectangle = new Rectangle(point.X, point.Y, region.Width, region.Height); - _renderTargetSpriteBatch.Draw(region, destinationRectangle, Color.White*Opacity); - } - } - - _renderTargetSpriteBatch.End(); - } - } - - spriteBatch.Draw(_renderTarget, Vector2.Zero, Color.White); - } - - private Func GetTileLocationFunction() - { - switch (_map.Orientation) - { - case TiledMapOrientation.Orthogonal: - return GetOrthogonalLocation; - case TiledMapOrientation.Isometric: - return GetIsometricLocation; - case TiledMapOrientation.Staggered: - throw new NotImplementedException(@"Staggered maps are not yet implemented"); - default: - throw new NotSupportedException($"{_map.Orientation} is not supported"); - } - } - - private Point GetOrthogonalLocation(TiledTile tile) - { - var tx = tile.X * _map.TileWidth; - var ty = tile.Y * _map.TileHeight; - return new Point(tx, ty); - } - - private Point GetIsometricLocation(TiledTile tile) - { - var halfTileWidth = _map.TileWidth / 2; - var halfTileHeight = _map.TileHeight / 2; - var tx = tile.X * halfTileWidth - tile.Y * halfTileWidth + _map.Width * halfTileWidth; - var ty = tile.Y * halfTileHeight + tile.X * halfTileHeight - _map.TileWidth + _map.TileHeight; - return new Point(tx, ty); - } - - public TiledTile GetTile(int x, int y) - { - var index = x + y * Width; - return index < 0 || index >= _tiles.Length ? null : _tiles[index]; - } - - private Func> GetRenderOrderFunction() - { - switch (_map.RenderOrder) - { - case TiledRenderOrder.LeftDown: - return GetTilesLeftDown; - case TiledRenderOrder.LeftUp: - return GetTilesLeftUp; - case TiledRenderOrder.RightDown: - return GetTilesRightDown; - case TiledRenderOrder.RightUp: - return GetTilesRightUp; - default: - throw new NotSupportedException($"{_map.RenderOrder} is not supported"); - } - } - - private IEnumerable GetTilesRightDown(int left, int top, int right, int bottom) - { - for (var y = top; y < bottom; y++) - { - for (var x = left; x < right; x++) - yield return GetTile(x, y); - } - } - - private IEnumerable GetTilesRightUp(int left, int top, int right, int bottom) - { - for (var y = bottom - 1; y >= top; y--) - { - for (var x = left; x < right; x++) - yield return GetTile(x, y); - } - } - - private IEnumerable GetTilesLeftDown(int left, int top, int right, int bottom) - { - for (var y = top; y < bottom; y++) - { - for (var x = right - 1; x >= left; x--) - yield return GetTile(x, y); - } - } - - private IEnumerable GetTilesLeftUp(int left, int top, int right, int bottom) - { - for (var y = bottom - 1; y >= top; y--) - { - for (var x = right - 1; x >= left; x--) - yield return GetTile(x, y); - } - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Maps/Tiled/TiledTileSet.cs b/Source/MonoGame.Extended/Maps/Tiled/TiledTileSet.cs deleted file mode 100644 index b741874ec..000000000 --- a/Source/MonoGame.Extended/Maps/Tiled/TiledTileSet.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.TextureAtlases; - -namespace MonoGame.Extended.Maps.Tiled -{ - public class TiledTileset - { - public TiledTileset(Texture2D texture, int firstId, int tileWidth, int tileHeight, int spacing = 2, int margin = 2) - { - //if (texture.Width % tileWidth != 0 || texture.Height % tileHeight != 0) - // throw new InvalidOperationException("The tileset texture must be an exact multiple of the tile size"); - - Texture = texture; - FirstId = firstId; - TileWidth = tileWidth; - TileHeight = tileHeight; - Spacing = spacing; - Margin = margin; - Properties = new TiledProperties(); - - var id = FirstId; - _regions = new Dictionary(); - - for (var y = Margin; y < texture.Height - Margin; y += TileHeight + Spacing) - { - for (var x = Margin; x < texture.Width - Margin; x += TileWidth + Spacing) - { - _regions.Add(id, new TextureRegion2D(Texture, x, y, TileWidth, TileHeight)); - id++; - } - } - } - - private readonly Dictionary _regions; - - public Texture2D Texture { get; } - public int FirstId { get; } - public int TileWidth { get; } - public int TileHeight { get; } - public int Spacing { get; } - public int Margin { get; } - public TiledProperties Properties { get; private set; } - - public TextureRegion2D GetTileRegion(int id) - { - return id == 0 ? null : _regions[id]; - } - } -} \ No newline at end of file diff --git a/Source/MonoGame.Extended/Matrix2D.cs b/Source/MonoGame.Extended/Matrix2D.cs new file mode 100644 index 000000000..bea8c35d9 --- /dev/null +++ b/Source/MonoGame.Extended/Matrix2D.cs @@ -0,0 +1,1026 @@ +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using Microsoft.Xna.Framework; + +// ReSharper disable CompareOfFloatsByEqualityOperator + +namespace MonoGame.Extended +{ + // https://en.wikipedia.org/wiki/Matrix_(mathematics) + // "Immersive Linear Algebra"; Jacob Ström, Kalle Åström & Tomas Akenine-Möller; 2015-2016. Chapter 6: The Matrix. http://immersivemath.com/ila/ch06_matrices/ch06.html + // "Real-Time Collision Detection"; Christer Ericson; 2005. Chapter 3.1: A Math and Geometry Primer - Matrices. pg 23-34 + + // Original code was from Matrix2D.cs in the Nez Library: https://github.com/prime31/Nez/ + + /// + /// Defines a 3x3 matrix using floating point numbers which can store two dimensional translation, scale and rotation + /// information in a right-handed coordinate system. + /// + /// + /// + /// Matrices use a row vector layout in the XNA / MonoGame Framework but, in general, matrices can be either have + /// a row vector or column vector layout. Row vector matrices view vectors as a row from left to right, while + /// column vector matrices view vectors as a column from top to bottom. For example, the + /// corresponds to the fields and . + /// + /// + /// The fields M13 and M23 always have a value of 0.0f, and thus are removed from the + /// to reduce its memory footprint. Same is true for the field M33, except it always has a + /// value of 1.0f. + /// + /// + [DebuggerDisplay("{DebugDisplayString,nq}")] + public struct Matrix2D : IEquatable, IEquatableByRef + { + public float M11; // x scale, also used for rotation + public float M12; // used for rotation + + public float M21; // used for rotation + public float M22; // y scale, also used for rotation + + public float M31; // x translation + public float M32; // y translation + + /// + /// Gets the identity matrix. + /// + /// + /// The identity matrix. + /// + public static Matrix2D Identity { get; } = new Matrix2D(1f, 0f, 0f, 1f, 0f, 0f); + + /// + /// Gets the translation. + /// + /// + /// The translation. + /// + /// The is equal to the vector (M31, M32). + public Vector2 Translation => new Vector2(M31, M32); + + /// + /// Gets the rotation angle in radians. + /// + /// + /// The rotation angle in radians. + /// + /// + /// The is equal to Atan2(M21, M11). + /// + public float Rotation => (float)Math.Atan2(M21, M11); + + /// + /// Gets the scale. + /// + /// + /// The scale. + /// + /// + /// The is equal to the vector + /// (Sqrt(M11 * M11 + M21 * M21), Sqrt(M12 * M12 + M22 * M22)). + /// + public Vector2 Scale + { + get + { + var scaleX = (float)Math.Sqrt(M11 * M11 + M21 * M21); + var scaleY = (float)Math.Sqrt(M12 * M12 + M22 * M22); + return new Vector2(scaleX, scaleY); + } + } + + /// + /// Initializes a new instance of the struct. + /// + /// The value to initialize to. + /// The value to initialize to. + /// The value to initialize to. + /// The value to initialize to. + /// The value to initialize to. + /// The value to initialize to. + /// + /// + /// The fields M13 and M23 always have a value of 0.0f, and thus are removed from the + /// to reduce its memory footprint. Same is true for the field M33, except it always has a + /// value of 1.0f. + /// + /// + public Matrix2D(float m11, float m12, float m21, float m22, float m31, float m32) + { + M11 = m11; + M12 = m12; + + M21 = m21; + M22 = m22; + + M31 = m31; + M32 = m32; + } + + /// + /// Transforms the specified by this . + /// + /// The vector. + /// The resulting . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public Vector2 Transform(Vector2 vector) + { + Vector2 result; + Transform(vector, out result); + return result; + } + + /// + /// Transforms the specified by this . + /// + /// The vector. + /// The resulting . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Transform(Vector2 vector, out Vector2 result) + { + result.X = vector.X * M11 + vector.Y * M21 + M31; + result.Y = vector.X * M12 + vector.Y * M22 + M32; + } + + /// + /// Transforms the specified by this . + /// + /// The x value of the vector. + /// The y value of the vector. + /// The resulting . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Transform(float x, float y, out Vector2 result) + { + result.X = x * M11 + y * M21 + M31; + result.Y = x * M12 + y * M22 + M32; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Transform(float x, float y, ref Vector3 result) + { + result.X = x * M11 + y * M21 + M31; + result.Y = x * M12 + y * M22 + M32; + } + + /// + /// Initializes a new instance of the struct that can be used to translate, rotate, and scale a set of vertices in two dimensions. + /// + /// The amounts to translate by on the x and y axes. + /// The amount, in radians, in which to rotate around the z-axis. + /// The amount to scale by on the x and y axes. + /// The point which to rotate and scale around. + /// The resulting + public static void CreateFrom(Vector2 position, float rotation, Vector2? scale, Vector2? origin, + out Matrix2D transformMatrix) + { + transformMatrix = Identity; + + if (origin.HasValue) + { + transformMatrix.M31 = -origin.Value.X; + transformMatrix.M32 = -origin.Value.Y; + } + + if (scale.HasValue) + { + var scaleMatrix = CreateScale(scale.Value); + Multiply(ref transformMatrix, ref scaleMatrix, out transformMatrix); + } + + // ReSharper disable once CompareOfFloatsByEqualityOperator + if (rotation != 0f) + { + var rotationMatrix = CreateRotationZ(-rotation); + Multiply(ref transformMatrix, ref rotationMatrix, out transformMatrix); + } + + var translationMatrix = CreateTranslation(position); + Multiply(ref transformMatrix, ref translationMatrix, out transformMatrix); + } + + /// + /// Initializes a new instance of the struct that can be used to translate, rotate, and scale a set of vertices in two dimensions. + /// + /// The amounts to translate by on the x and y axes. + /// The amount, in radians, in which to rotate around the z-axis. + /// The amount to scale by on the x and y axes. + /// The point which to rotate and scale around. + /// The resulting . + public static Matrix2D CreateFrom(Vector2 position, float rotation, Vector2? scale = null, Vector2? origin = null) + { + var transformMatrix = Identity; + + if (origin.HasValue) + { + transformMatrix.M31 = -origin.Value.X; + transformMatrix.M32 = -origin.Value.Y; + } + + if (scale.HasValue) + { + var scaleMatrix = CreateScale(scale.Value); + transformMatrix = Multiply(transformMatrix, scaleMatrix); + } + + // ReSharper disable once CompareOfFloatsByEqualityOperator + if (rotation != 0f) + { + var rotationMatrix = CreateRotationZ(-rotation); + transformMatrix = Multiply(transformMatrix, rotationMatrix); + } + + var translationMatrix = CreateTranslation(position); + transformMatrix = Multiply(transformMatrix, translationMatrix); + + return transformMatrix; + } + + /// + /// Initializes a new instance of the struct that can be used to rotate a set of vertices + /// around the z-axis. + /// + /// The amount, in radians, in which to rotate around the z-axis. + /// The resulting . + public static Matrix2D CreateRotationZ(float radians) + { + Matrix2D result; + CreateRotationZ(radians, out result); + return result; + } + + /// + /// Calculates the struct that can be used to rotate a set of vertices around the z-axis. + /// + /// The amount, in radians, in which to rotate around the z-axis. + /// The resulting . + public static void CreateRotationZ(float radians, out Matrix2D result) + { + var val1 = (float)Math.Cos(radians); + var val2 = (float)Math.Sin(radians); + + result.M11 = val1; + result.M12 = val2; + + result.M21 = -val2; + result.M22 = val1; + + result.M31 = 0; + result.M32 = 0; + } + + /// + /// Initializes a new instance of the struct that can be used to scale a set vertices. + /// + /// The amount to scale by on the x and y axes. + /// The resulting . + public static Matrix2D CreateScale(float scale) + { + Matrix2D result; + CreateScale(scale, scale, out result); + return result; + } + + /// + /// Calculates the struct that can be used to scale a set vertices. + /// + /// The amount to scale by on the x and y axes. + /// The resulting . + public static void CreateScale(float scale, out Matrix2D result) + { + CreateScale(scale, scale, out result); + } + + /// + /// Initializes a new instance of the struct that can be used to scale a set vertices. + /// + /// The amount to scale by on the x-axis. + /// The amount to scale by on the y-axis. + /// The resulting . + public static Matrix2D CreateScale(float xScale, float yScale) + { + Matrix2D result; + CreateScale(xScale, yScale, out result); + return result; + } + + /// + /// Calculates the struct that can be used to scale a set vertices. + /// + /// The amount to scale by on the x-axis. + /// The amount to scale by on the y-axis. + /// The resulting . + public static void CreateScale(float xScale, float yScale, out Matrix2D result) + { + result.M11 = xScale; + result.M12 = 0; + + result.M21 = 0; + result.M22 = yScale; + + result.M31 = 0; + result.M32 = 0; + } + + /// + /// Initializes a new instance of the struct that can be used to scale a set vertices. + /// + /// The amounts to scale by on the x and y axes. + /// The resulting . + public static Matrix2D CreateScale(Vector2 scale) + { + Matrix2D result; + CreateScale(ref scale, out result); + return result; + } + + /// + /// Calculates the struct that can be used to scale a set vertices. + /// + /// The amounts to scale by on the x and y axes. + /// The resulting . + public static void CreateScale(ref Vector2 scale, out Matrix2D result) + { + result.M11 = scale.X; + result.M12 = 0; + + result.M21 = 0; + result.M22 = scale.Y; + + result.M31 = 0; + result.M32 = 0; + } + + /// + /// Initializes a new instance of the struct that can be used to translate a set vertices. + /// + /// The amount to translate by on the x-axis. + /// The amount to translate by on the y-axis. + /// The resulting . + public static Matrix2D CreateTranslation(float xPosition, float yPosition) + { + Matrix2D result; + CreateTranslation(xPosition, yPosition, out result); + return result; + } + + /// + /// Calculates the struct that can be used to translate a set vertices. + /// + /// The amount to translate by on the x-axis. + /// The amount to translate by on the y-axis. + /// The resulting . + public static void CreateTranslation(float xPosition, float yPosition, out Matrix2D result) + { + result.M11 = 1; + result.M12 = 0; + + result.M21 = 0; + result.M22 = 1; + + result.M31 = xPosition; + result.M32 = yPosition; + } + + /// + /// Initializes a new instance of the struct that can be used to translate a set vertices. + /// + /// The amounts to translate by on the x and y axes. + /// The resulting . + public static Matrix2D CreateTranslation(Vector2 position) + { + Matrix2D result; + CreateTranslation(ref position, out result); + return result; + } + + /// + /// Calculates the struct that can be used to translate a set vertices. + /// + /// The amounts to translate by on the x and y axes. + /// The resulting . + public static void CreateTranslation(ref Vector2 position, out Matrix2D result) + { + result.M11 = 1; + result.M12 = 0; + + result.M21 = 0; + result.M22 = 1; + + result.M31 = position.X; + result.M32 = position.Y; + } + + /// + /// Calculates the determinant of the . + /// + /// The determinant of the . + public float Determinant() + { + return M11 * M22 - M12 * M21; + } + + /// + /// Initializes a new instance of the struct with the summation of two + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D Add(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 += matrix2.M11; + matrix1.M12 += matrix2.M12; + + matrix1.M21 += matrix2.M21; + matrix1.M22 += matrix2.M22; + + matrix1.M31 += matrix2.M31; + matrix1.M32 += matrix2.M32; + + return matrix1; + } + + /// + /// Calculates the summation of two s. + /// + /// The first . + /// The second . + /// The resulting . + public static void Add(ref Matrix2D matrix1, ref Matrix2D matrix2, out Matrix2D result) + { + result.M11 = matrix1.M11 + matrix2.M11; + result.M12 = matrix1.M12 + matrix2.M12; + + result.M21 = matrix1.M21 + matrix2.M21; + result.M22 = matrix1.M22 + matrix2.M22; + + result.M31 = matrix1.M31 + matrix2.M31; + result.M32 = matrix1.M32 + matrix2.M32; + } + + /// + /// Initializes a new instance of the struct with the summation of two + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D operator +(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 = matrix1.M11 + matrix2.M11; + matrix1.M12 = matrix1.M12 + matrix2.M12; + + matrix1.M21 = matrix1.M21 + matrix2.M21; + matrix1.M22 = matrix1.M22 + matrix2.M22; + + matrix1.M31 = matrix1.M31 + matrix2.M31; + matrix1.M32 = matrix1.M32 + matrix2.M32; + + return matrix1; + } + + /// + /// Initializes a new instance of the struct with the substraction of two + /// + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D Subtract(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 = matrix1.M11 - matrix2.M11; + matrix1.M12 = matrix1.M12 - matrix2.M12; + + matrix1.M21 = matrix1.M21 - matrix2.M21; + matrix1.M22 = matrix1.M22 - matrix2.M22; + + matrix1.M31 = matrix1.M31 - matrix2.M31; + matrix1.M32 = matrix1.M32 - matrix2.M32; + return matrix1; + } + + /// + /// Calculates the substraction of two s. + /// + /// The first . + /// The second . + /// The resulting . + public static void Subtract(ref Matrix2D matrix1, ref Matrix2D matrix2, out Matrix2D result) + { + result.M11 = matrix1.M11 - matrix2.M11; + result.M12 = matrix1.M12 - matrix2.M12; + + result.M21 = matrix1.M21 - matrix2.M21; + result.M22 = matrix1.M22 - matrix2.M22; + + result.M31 = matrix1.M31 - matrix2.M31; + result.M32 = matrix1.M32 - matrix2.M32; + } + + /// + /// Initializes a new instance of the struct with the substraction of two + /// + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D operator -(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 = matrix1.M11 - matrix2.M11; + matrix1.M12 = matrix1.M12 - matrix2.M12; + + matrix1.M21 = matrix1.M21 - matrix2.M21; + matrix1.M22 = matrix1.M22 - matrix2.M22; + + matrix1.M31 = matrix1.M31 - matrix2.M31; + matrix1.M32 = matrix1.M32 - matrix2.M32; + return matrix1; + } + + /// + /// Initializes a new instance of the struct with the multiplication of two + /// + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D Multiply(Matrix2D matrix1, Matrix2D matrix2) + { + var m11 = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21; + var m12 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22; + + var m21 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21; + var m22 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22; + + var m31 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix2.M31; + var m32 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix2.M32; + + matrix1.M11 = m11; + matrix1.M12 = m12; + + matrix1.M21 = m21; + matrix1.M22 = m22; + + matrix1.M31 = m31; + matrix1.M32 = m32; + + return matrix1; + } + + /// + /// Calculates the multiplication of two s. + /// + /// The first . + /// The second . + /// The resulting . + public static void Multiply(ref Matrix2D matrix1, ref Matrix2D matrix2, out Matrix2D result) + { + var m11 = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21; + var m12 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22; + + var m21 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21; + var m22 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22; + + var m31 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix2.M31; + var m32 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix2.M32; + + result.M11 = m11; + result.M12 = m12; + + result.M21 = m21; + result.M22 = m22; + + result.M31 = m31; + result.M32 = m32; + } + + /// + /// Initializes a new instance of the struct with the division of a by + /// a scalar. + /// + /// The . + /// The amount to divide the by. + /// The resulting . + public static Matrix2D Multiply(Matrix2D matrix, float scalar) + { + matrix.M11 *= scalar; + matrix.M12 *= scalar; + + matrix.M21 *= scalar; + matrix.M22 *= scalar; + + matrix.M31 *= scalar; + matrix.M32 *= scalar; + return matrix; + } + + /// + /// Calculates the multiplication of a by a scalar. + /// + /// The . + /// The amount to multiple the by. + /// The resulting . + public static void Multiply(ref Matrix2D matrix, float scalar, out Matrix2D result) + { + result.M11 = matrix.M11 * scalar; + result.M12 = matrix.M12 * scalar; + + result.M21 = matrix.M21 * scalar; + result.M22 = matrix.M22 * scalar; + + result.M31 = matrix.M31 * scalar; + result.M32 = matrix.M32 * scalar; + } + + /// + /// Initializes a new instance of the struct with the multiplication of two + /// + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D operator *(Matrix2D matrix1, Matrix2D matrix2) + { + var m11 = matrix1.M11 * matrix2.M11 + matrix1.M12 * matrix2.M21; + var m12 = matrix1.M11 * matrix2.M12 + matrix1.M12 * matrix2.M22; + + var m21 = matrix1.M21 * matrix2.M11 + matrix1.M22 * matrix2.M21; + var m22 = matrix1.M21 * matrix2.M12 + matrix1.M22 * matrix2.M22; + + var m31 = matrix1.M31 * matrix2.M11 + matrix1.M32 * matrix2.M21 + matrix2.M31; + var m32 = matrix1.M31 * matrix2.M12 + matrix1.M32 * matrix2.M22 + matrix2.M32; + + matrix1.M11 = m11; + matrix1.M12 = m12; + + matrix1.M21 = m21; + matrix1.M22 = m22; + + matrix1.M31 = m31; + matrix1.M32 = m32; + + return matrix1; + } + + /// + /// Initializes a new instance of the struct with the division of a by + /// a scalar. + /// + /// The . + /// The amount to divide the by. + /// The resulting . + public static Matrix2D operator *(Matrix2D matrix, float scalar) + { + matrix.M11 = matrix.M11 * scalar; + matrix.M12 = matrix.M12 * scalar; + + matrix.M21 = matrix.M21 * scalar; + matrix.M22 = matrix.M22 * scalar; + + matrix.M31 = matrix.M31 * scalar; + matrix.M32 = matrix.M32 * scalar; + + return matrix; + } + + /// + /// Initializes a new instance of the struct with the division of two + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D Divide(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 = matrix1.M11 / matrix2.M11; + matrix1.M12 = matrix1.M12 / matrix2.M12; + + matrix1.M21 = matrix1.M21 / matrix2.M21; + matrix1.M22 = matrix1.M22 / matrix2.M22; + + matrix1.M31 = matrix1.M31 / matrix2.M31; + matrix1.M32 = matrix1.M32 / matrix2.M32; + return matrix1; + } + + /// + /// Calculates the division of two s. + /// + /// The first . + /// The second . + /// The resulting . + public static void Divide(ref Matrix2D matrix1, ref Matrix2D matrix2, out Matrix2D result) + { + result.M11 = matrix1.M11 / matrix2.M11; + result.M12 = matrix1.M12 / matrix2.M12; + + result.M21 = matrix1.M21 / matrix2.M21; + result.M22 = matrix1.M22 / matrix2.M22; + + result.M31 = matrix1.M31 / matrix2.M31; + result.M32 = matrix1.M32 / matrix2.M32; + } + + /// + /// Initializes a new instance of the struct with the division of a by + /// a scalar. + /// + /// The . + /// The amount to divide the by. + /// The resulting . + public static Matrix2D Divide(Matrix2D matrix, float scalar) + { + var num = 1f / scalar; + matrix.M11 = matrix.M11 * num; + matrix.M12 = matrix.M12 * num; + + matrix.M21 = matrix.M21 * num; + matrix.M22 = matrix.M22 * num; + + matrix.M31 = matrix.M31 * num; + matrix.M32 = matrix.M32 * num; + + return matrix; + } + + /// + /// Calculates the division of a by a scalar. + /// + /// The . + /// The amount to divide the by. + /// The resulting . + public static void Divide(ref Matrix2D matrix, float scalar, out Matrix2D result) + { + var num = 1f / scalar; + result.M11 = matrix.M11 * num; + result.M12 = matrix.M12 * num; + + result.M21 = matrix.M21 * num; + result.M22 = matrix.M22 * num; + + result.M31 = matrix.M31 * num; + result.M32 = matrix.M32 * num; + } + + /// + /// Initializes a new instance of the struct with the division of two + /// s. + /// + /// The first . + /// The second . + /// The resulting . + public static Matrix2D operator /(Matrix2D matrix1, Matrix2D matrix2) + { + matrix1.M11 = matrix1.M11 / matrix2.M11; + matrix1.M12 = matrix1.M12 / matrix2.M12; + + matrix1.M21 = matrix1.M21 / matrix2.M21; + matrix1.M22 = matrix1.M22 / matrix2.M22; + + matrix1.M31 = matrix1.M31 / matrix2.M31; + matrix1.M32 = matrix1.M32 / matrix2.M32; + return matrix1; + } + + /// + /// Initializes a new instance of the struct with the division of a by + /// a scalar. + /// + /// The . + /// The amount to divide the by. + /// The resulting . + public static Matrix2D operator /(Matrix2D matrix, float scalar) + { + var num = 1f / scalar; + matrix.M11 = matrix.M11 * num; + matrix.M12 = matrix.M12 * num; + + matrix.M21 = matrix.M21 * num; + matrix.M22 = matrix.M22 * num; + + matrix.M31 = matrix.M31 * num; + matrix.M32 = matrix.M32 * num; + return matrix; + } + + /// + /// Initializes a new instance of the struct with the inversion of a . + /// + /// The . + /// The resulting . + public static Matrix2D Invert(Matrix2D matrix) + { + var det = 1 / matrix.Determinant(); + + var m11 = matrix.M22 * det; + var m12 = -matrix.M12 * det; + + var m21 = -matrix.M21 * det; + var m22 = matrix.M11 * det; + + var m31 = (matrix.M32 * matrix.M21 - matrix.M31 * matrix.M22) * det; + var m32 = -(matrix.M32 * matrix.M11 - matrix.M31 * matrix.M12) * det; + + return new Matrix2D(m11, m12, m21, m22, m31, m32); + } + + /// + /// Calculates the inversion of a . + /// + /// The . + /// The resulting . + public static void Invert(ref Matrix2D matrix, out Matrix2D result) + { + var det = 1 / matrix.Determinant(); + + result.M11 = matrix.M22 * det; + result.M12 = -matrix.M12 * det; + + result.M21 = -matrix.M21 * det; + result.M22 = matrix.M11 * det; + + result.M31 = (matrix.M32 * matrix.M21 - matrix.M31 * matrix.M22) * det; + result.M32 = -(matrix.M32 * matrix.M11 - matrix.M31 * matrix.M12) * det; + } + + /// + /// Initializes a new instance of the struct with the inversion of a . + /// + /// The . + /// The resulting . + public static Matrix2D operator -(Matrix2D matrix) + { + matrix.M11 = -matrix.M11; + matrix.M12 = -matrix.M12; + + matrix.M21 = -matrix.M21; + matrix.M22 = -matrix.M22; + + matrix.M31 = -matrix.M31; + matrix.M32 = -matrix.M32; + return matrix; + } + + /// + /// Compares a for equality with another without any tolerance. + /// + /// The first . + /// The second . + /// true if the s are equal; false otherwise. + public static bool operator ==(Matrix2D matrix1, Matrix2D matrix2) + { + return (matrix1.M11 == matrix2.M11) && (matrix1.M12 == matrix2.M12) && (matrix1.M21 == matrix2.M21) && + (matrix1.M22 == matrix2.M22) && (matrix1.M31 == matrix2.M31) && (matrix1.M32 == matrix2.M32); + } + + /// + /// Compares a for inequality with another without any tolerance. + /// + /// The first . + /// The second . + /// true if the s are not equal; false otherwise. + public static bool operator !=(Matrix2D matrix1, Matrix2D matrix2) + { + return (matrix1.M11 != matrix2.M11) || (matrix1.M12 != matrix2.M12) || (matrix1.M21 != matrix2.M21) || + (matrix1.M22 != matrix2.M22) || (matrix1.M31 != matrix2.M31) || (matrix1.M32 != matrix2.M32); + } + + /// + /// Returns a value that indicates whether the current is equal to a specified + /// . + /// + /// The with which to make the comparison. + /// + /// true if the current is equal to the specified ; + /// false otherwise. + /// + public bool Equals(ref Matrix2D matrix) + { + return (M11 == matrix.M11) && (M12 == matrix.M12) && (M21 == matrix.M21) && (M22 == matrix.M22) && + (M31 == matrix.M31) && (M32 == matrix.M32); + } + + /// + /// Returns a value that indicates whether the current is equal to a specified + /// . + /// + /// The with which to make the comparison. + /// + /// true if the current is equal to the specified ; + /// false otherwise. + /// + public bool Equals(Matrix2D matrix) + { + return Equals(ref matrix); + } + + /// + /// Returns a value that indicates whether the current is equal to a specified object. + /// + /// The object with which to make the comparison. + /// + /// true if the current is equal to the specified object; + /// false otherwise. + /// + public override bool Equals(object obj) + { + return obj is Matrix2D && Equals((Matrix2D)obj); + } + + /// + /// Returns a hash code for this . + /// + /// + /// A hash code for this , suitable for use in hashing algorithms and data structures like a + /// hash table. + /// + public override int GetHashCode() + { + // ReSharper disable NonReadonlyMemberInGetHashCode + return M11.GetHashCode() + M12.GetHashCode() + M21.GetHashCode() + M22.GetHashCode() + M31.GetHashCode() + + M32.GetHashCode(); + // ReSharper restore NonReadonlyMemberInGetHashCode + } + + /// + /// Performs an implicit conversion from to . + /// + /// The . + /// + /// The resulting . + /// + public static implicit operator Matrix(Matrix2D matrix) + { + return new Matrix(matrix.M11, matrix.M12, 0, 0, matrix.M21, matrix.M22, 0, 0, 0, 0, 1, 0, matrix.M31, + matrix.M32, 0, 1); + } + + /// + /// Performs an explicit conversion from a specified to a . + /// + /// The . + /// The depth value. + /// The resulting . + public static void ToMatrix(ref Matrix2D matrix, float depth, out Matrix result) + { + result.M11 = matrix.M11; + result.M12 = matrix.M12; + result.M13 = 0; + result.M14 = 0; + + result.M21 = matrix.M21; + result.M22 = matrix.M22; + result.M23 = 0; + result.M24 = 0; + + result.M31 = 0; + result.M32 = 0; + result.M33 = 1; + result.M34 = 0; + + result.M41 = matrix.M31; + result.M42 = matrix.M32; + result.M43 = depth; + result.M44 = 1; + } + + /// + /// Performs an explicit conversion from a specified to a . + /// + /// The depth value. + /// The resulting . + public Matrix ToMatrix(float depth = 0) + { + Matrix result; + ToMatrix(ref this, depth, out result); + return result; + } + + /// + /// Gets the debug display string. + /// + /// + /// The debug display string. + /// + internal string DebugDisplayString => this == Identity + ? "Identity" + : $"T:({Translation.X:0.##},{Translation.Y:0.##}), R:{MathHelper.ToDegrees(Rotation):0.##}°, S:({Scale.X:0.##},{Scale.Y:0.##})" + ; + + /// + /// Returns a that represents this . + /// + /// + /// A that represents this . + /// + public override string ToString() + { + return $"{{M11:{M11} M12:{M12}}} {{M21:{M21} M22:{M22}}} {{M31:{M31} M32:{M32}}}"; + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended/MonoGame.Extended.csproj b/Source/MonoGame.Extended/MonoGame.Extended.csproj index 081cf0ea8..df8746898 100644 --- a/Source/MonoGame.Extended/MonoGame.Extended.csproj +++ b/Source/MonoGame.Extended/MonoGame.Extended.csproj @@ -24,7 +24,8 @@ TRACE;DEBUG prompt 4 - true + false + 6 pdbonly @@ -33,136 +34,83 @@ TRACE prompt 4 - true + false - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - + + + + + + + - + - - - - - - - - - - + @@ -170,20 +118,24 @@ - - - ..\..\Dependencies\MonoGame.Framework.dll + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll - - ..\packages\Newtonsoft.Json.8.0.3\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + + + ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll True + + + + + \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/Properties/AssemblyInfo.cs b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..6a6028ae2 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Content.Pipeline.Tests.Tiled")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Content.Pipeline.Tests.Tiled")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("90b096cb-61a5-485f-ba3e-2530166e5e72")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/isometric.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/isometric.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/isometric.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/isometric.tmx diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/isometric_tileset.png b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/isometric_tileset.png similarity index 100% rename from Source/Demos/Demo.SpriteSheetAnimations/Content/Tilesets/isometric_tileset.png rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/isometric_tileset.png diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/level01.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/level01.tmx similarity index 99% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/level01.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/level01.tmx index a10d7dbf0..39eb90035 100644 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/level01.tmx +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/level01.tmx @@ -3,7 +3,7 @@ - + diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-object-layer.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-object-layer.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-base64.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-base64.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-base64.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-base64.tmx diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-csv.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-csv.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-csv.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-csv.tmx diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-gzip.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-gzip.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-gzip.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-gzip.tmx diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-xml.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-xml.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-xml.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-xml.tmx diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-zlib.tmx b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-zlib.tmx similarity index 100% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/TestData/test-tileset-zlib.tmx rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-tileset-zlib.tmx diff --git a/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs new file mode 100644 index 000000000..18275fb49 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs @@ -0,0 +1,197 @@ +//using System.Linq; + +//namespace MonoGame.Extended.Content.Pipeline.Tests.Tiled +//{ +// [TestFixture] +// public class TiledMapImporterProcessorTests +// { +// [Test] +// public void TiledMapImporter_Import_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "level01.tmx"); + +// var logger = Substitute.For(); +// var importer = new TmxMapImporter(); +// var importerContext = Substitute.For(); +// importerContext.Logger.Returns(logger); + +// var map = importer.Import(filePath, importerContext); + +// Assert.AreEqual("1.0", map.Version); +// Assert.AreEqual(TmxOrientation.Orthogonal, map.Orientation); +// Assert.AreEqual(TmxRenderOrder.RightDown, map.RenderOrder); +// Assert.AreEqual(20, map.Width); +// Assert.AreEqual(10, map.Height); +// Assert.AreEqual(128, map.TileWidth); +// Assert.AreEqual(128, map.TileHeight); +// Assert.AreEqual("#7d7d7d", map.BackgroundColor); +// Assert.AreEqual("awesome", map.Properties[0].Name); +// Assert.AreEqual("42", map.Properties[0].Value); +// Assert.AreEqual(1, map.Tilesets.Count); +// Assert.AreEqual(3, map.Layers.Count); +// Assert.AreEqual(TmxOrientation.Orthogonal,map.Orientation); + +// var tileset = map.Tilesets.First(); +// Assert.AreEqual(1, tileset.FirstGlobalIdentifier); +// Assert.AreEqual("free-tileset.png", tileset.Image.Source); +// Assert.AreEqual(652, tileset.Image.Width); +// Assert.AreEqual(783, tileset.Image.Height); +// Assert.AreEqual(2, tileset.Margin); +// Assert.AreEqual(30, tileset.TileCount); +// Assert.AreEqual("free-tileset", tileset.Name); +// Assert.AreEqual(null, tileset.Source); +// Assert.AreEqual(2, tileset.Spacing); +// Assert.AreEqual(0, tileset.TerrainTypes.Count); +// Assert.AreEqual(0, tileset.Properties.Count); +// Assert.AreEqual(128, tileset.TileHeight); +// Assert.AreEqual(128, tileset.TileWidth); +// Assert.AreEqual(0, tileset.TileOffset.X); +// Assert.AreEqual(0, tileset.TileOffset.Y); + +// var tileLayer2 = (TmxTileLayer) map.Layers[0]; +// Assert.AreEqual("Tile Layer 2", tileLayer2.Name); +// Assert.AreEqual(1, tileLayer2.Opacity); +// Assert.AreEqual(0, tileLayer2.Properties.Count); +// Assert.AreEqual(true, tileLayer2.Visible); +// Assert.AreEqual(200, tileLayer2.Data.Tiles.Count); +// Assert.AreEqual(0, tileLayer2.X); +// Assert.AreEqual(0, tileLayer2.Y); + +// var imageLayer = (TmxImageLayer)map.Layers[1]; +// Assert.AreEqual("Image Layer 1", imageLayer.Name); +// Assert.AreEqual(1, imageLayer.Opacity); +// Assert.AreEqual(0, imageLayer.Properties.Count); +// Assert.AreEqual(true, imageLayer.Visible); +// Assert.AreEqual("hills.png", imageLayer.Image.Source); +// Assert.AreEqual(100, imageLayer.X); +// Assert.AreEqual(100, imageLayer.Y); + +// var tileLayer1 = (TmxTileLayer)map.Layers[2]; +// Assert.AreEqual("Tile Layer 1", tileLayer1.Name); +// Assert.AreEqual(2, tileLayer1.Properties.Count); + +// Assert.AreEqual("customlayerprop", tileLayer1.Properties[0].Name); +// Assert.AreEqual("1", tileLayer1.Properties[0].Value); + +// Assert.AreEqual("customlayerprop2", tileLayer1.Properties[1].Name); +// Assert.AreEqual("2", tileLayer1.Properties[1].Value); +// } + +// [Test] +// public void TiledMapImporter_Xml_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-tileset-xml.tmx"); +// var map = ImportAndProcessMap(filePath); +// var layer = map.Layers.OfType().First(); +// var actualData = layer.Data.Tiles.Select(i => i.GlobalIdentifier).ToArray(); + +// Assert.IsNull(layer.Data.Encoding); +// Assert.IsNull(layer.Data.Compression); +// Assert.IsTrue(new uint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(actualData)); +// } + +// [Test] +// public void TiledMapImporter_Csv_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-tileset-csv.tmx"); +// var map = ImportAndProcessMap(filePath); +// var layer = map.Layers.OfType().First(); +// var data = layer.Data.Tiles.Select(i => i.GlobalIdentifier).ToArray(); + +// Assert.AreEqual("csv", layer.Data.Encoding); +// Assert.IsNull(layer.Data.Compression); +// Assert.IsTrue(new uint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); +// } + +// [Test] +// public void TiledMapImporter_Base64_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-tileset-base64.tmx"); +// var map = ImportAndProcessMap(filePath); +// var layer = map.Layers.OfType().First(); +// var data = layer.Data.Tiles.Select(i => i.GlobalIdentifier).ToArray(); + +// Assert.AreEqual("base64", layer.Data.Encoding); +// Assert.IsNull(layer.Data.Compression); +// Assert.IsTrue(new uint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); +// } + +// [Test] +// public void TiledMapImporter_Gzip_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-tileset-gzip.tmx"); +// var map = ImportAndProcessMap(filePath); +// var layer = map.Layers.OfType().First(); +// var data = layer.Data.Tiles.Select(i => i.GlobalIdentifier).ToArray(); + +// Assert.AreEqual("base64", layer.Data.Encoding); +// Assert.AreEqual("gzip", layer.Data.Compression); +// Assert.IsTrue(new uint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); +// } + + +// [Test] +// public void TiledMapImporter_Zlib_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-tileset-zlib.tmx"); +// var map = ImportAndProcessMap(filePath); +// var layer = map.Layers.OfType().First(); +// var data = layer.Data.Tiles.Select(i => i.GlobalIdentifier).ToArray(); + +// Assert.AreEqual("base64", layer.Data.Encoding); +// Assert.AreEqual("zlib", layer.Data.Compression); +// Assert.IsTrue(new uint[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }.SequenceEqual(data)); +// } + +// [Test] +// public void TiledMapImporter_ObjectLayer_Test() +// { +// var filePath = PathExtensions.GetApplicationFullPath("TestData", "test-object-layer.tmx"); +// var map = ImportAndProcessMap(filePath); + +// Assert.AreEqual(1, map.Layers.Count); +// Assert.IsInstanceOf(map.Layers[0]); +// var tmxObjectGroup = map.Layers[0] as TmxObjectLayer; +// var tmxObject = tmxObjectGroup.Objects[0]; +// var tmxPolygon = tmxObjectGroup.Objects[3].Polygon; +// var tmxPolyline = tmxObjectGroup.Objects[4].Polyline; + +// Assert.AreEqual("Object Layer 1", tmxObjectGroup.Name); +// Assert.AreEqual(1, tmxObject.Identifier); +// Assert.AreEqual(131.345f, tmxObject.X); +// Assert.AreEqual(65.234f, tmxObject.Y); +// Assert.AreEqual(311.111f, tmxObject.Width); +// Assert.AreEqual(311.232f, tmxObject.Height); +// Assert.AreEqual(1, tmxObject.Properties.Count); +// Assert.AreEqual("shape", tmxObject.Properties[0].Name); +// Assert.AreEqual("circle", tmxObject.Properties[0].Value); +// Assert.IsNotNull(tmxObject.Ellipse); +// Assert.IsFalse(tmxObjectGroup.Objects[1].Visible); +// Assert.AreEqual(-1, tmxObjectGroup.Objects[1].GlobalIdentifier); +// Assert.AreEqual(23, tmxObjectGroup.Objects[5].GlobalIdentifier); +// Assert.AreEqual("rectangle", tmxObjectGroup.Objects[2].Type); +// Assert.IsNotNull(tmxPolygon); +// Assert.AreEqual("0,0 180,90 -8,275 -45,81 38,77", tmxPolygon.Points); +// Assert.IsNotNull(tmxPolyline); +// Assert.AreEqual("0,0 28,299 326,413 461,308", tmxPolyline.Points); +// } + + +// private static TmxMap ImportAndProcessMap(string filename) +// { +// var logger = Substitute.For(); +// var importer = new TmxMapImporter(); +// var importerContext = Substitute.For(); +// importerContext.Logger.Returns(logger); + +// var processor = new TmxMapProcessor(); +// var processorContext = Substitute.For(); +// processorContext.Logger.Returns(logger); + +// var import = importer.Import(filename, importerContext); +// var result = processor.Process(import, processorContext); + +// return result; +// } +// } +//} diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/packages.config b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/packages.config similarity index 58% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/packages.config rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/packages.config index 00a9b9c5d..2fa1da357 100644 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/packages.config +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs similarity index 97% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs index 7f4f93ec2..e1da58dd7 100644 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorImporterTests.cs @@ -11,7 +11,7 @@ public class AstridAnimatorImporterTests [Test] public void AstridAnimatorImporter_Import_Test() { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\astrid-animator.aa"); + var filePath = PathExtensions.GetApplicationFullPath("TestData", "astrid-animator.aa"); var importer = new AstridAnimatorImporter(); var result = importer.Import(filePath, null); var data = result.Data; diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs similarity index 96% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs index 5edbea4e5..7ca9dbf94 100644 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/AstridAnimatorProcessorTests.cs @@ -11,7 +11,7 @@ public class AstridAnimatorProcessorTests [Test] public void AstridAnimatorProcessor_Process_Test() { - var filePath = PathExtensions.GetApplicationFullPath(@"TestData\astrid-animator.aa"); + var filePath = PathExtensions.GetApplicationFullPath("TestData", "astrid-animator.aa"); var importer = new AstridAnimatorImporter(); var importerResult = importer.Import(filePath, null); diff --git a/Source/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj similarity index 67% rename from Source/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj rename to Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj index 293e6e656..2e28fd014 100644 --- a/Source/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj +++ b/Source/Tests/MonoGame.Extended.Content.Pipeline.Tests/MonoGame.Extended.Content.Pipeline.Tests.csproj @@ -35,14 +35,14 @@ True - $(MSBuildExtensionsPath)\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll - - ..\packages\NSubstitute.1.9.2.0\lib\net45\NSubstitute.dll + + ..\..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll True - ..\packages\NUnit.2.6.4\lib\nunit.framework.dll + ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll True @@ -57,57 +57,41 @@ - - - Designer - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - PreserveNewest PreserveNewest - - - Designer + + PreserveNewest - + + {e41b1841-fb13-489f-92da-beee176a2c57} + MonoGame.Extended.Content.Pipeline.Animations + + + {96BE0F14-3DC8-43B9-992F-654BD36CC3C7} + MonoGame.Extended.Content.Pipeline.Tiled + + {28CD24BD-432C-4987-9E9D-65CFCF120EA0} MonoGame.Extended.Content.Pipeline - + {41724C52-3D50-45BB-81EB-3C8A247EAFD1} MonoGame.Extended + + + + \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Gui.Tests/Properties/AssemblyInfo.cs b/Source/Tests/MonoGame.Extended.Gui.Tests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..596d8f524 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Gui.Tests/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Extended.Gui.Tests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Extended.Gui.Tests")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("43cba868-9bfc-4e02-8a7a-142c603b087e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/Tests/MonoGame.Extended.Gui.Tests/packages.config b/Source/Tests/MonoGame.Extended.Gui.Tests/packages.config new file mode 100644 index 000000000..09e803f94 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Gui.Tests/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/AngleTest.cs b/Source/Tests/MonoGame.Extended.Tests/AngleTest.cs new file mode 100644 index 000000000..35478f449 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/AngleTest.cs @@ -0,0 +1,91 @@ +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests +{ + [TestFixture] + public class AngleTest + { + private const float _delta = 0.00001f; + + [Test] + public void ConstructorTest() + { + const float value = 0.5f; + // ReSharper disable once RedundantArgumentDefaultValue + var radians = new Angle(value, AngleType.Radian); + var degrees = new Angle(value, AngleType.Degree); + var gradians = new Angle(value, AngleType.Gradian); + var revolutions = new Angle(value, AngleType.Revolution); + + Assert.That(0.5f, Is.EqualTo(radians.Radians).Within(_delta)); + Assert.That(0.5f, Is.EqualTo(degrees.Degrees).Within(_delta)); + Assert.That(0.5f, Is.EqualTo(gradians.Gradians).Within(_delta)); + Assert.That(0.5f, Is.EqualTo(revolutions.Revolutions).Within(_delta)); + } + + [Test] + public void ConversionTest() + { + //from radians + var radians = new Angle(MathHelper.Pi); + Assert.AreEqual(180f, radians.Degrees, _delta); + Assert.AreEqual(200f, radians.Gradians, _delta); + Assert.AreEqual(0.5f, radians.Revolutions, _delta); + //to radians + var degrees = new Angle(180f, AngleType.Degree); + var gradians = new Angle(200f, AngleType.Gradian); + var revolutions = new Angle(0.5f, AngleType.Revolution); + + Assert.That(MathHelper.Pi, Is.EqualTo(degrees.Radians).Within(_delta)); + Assert.That(MathHelper.Pi, Is.EqualTo(gradians.Radians).Within(_delta)); + Assert.That(MathHelper.Pi, Is.EqualTo(revolutions.Radians).Within(_delta)); + } + + [Test] + public void WrapTest() + { + for (var f = -10f; f < 10f; f += 0.1f) + { + var wrappositive = new Angle(f); + wrappositive.WrapPositive(); + + var wrap = new Angle(f); + wrap.Wrap(); + + Assert.GreaterOrEqual(wrappositive.Radians, 0); + Assert.Less(wrappositive.Radians, 2d * MathHelper.Pi); + + Assert.GreaterOrEqual(wrap.Radians, -MathHelper.Pi); + Assert.Less(wrap.Radians, MathHelper.Pi); + } + } + + [Test] + public void VectorTest() + { + var angle = Angle.FromVector(Vector2.One); + Assert.AreEqual(-MathHelper.Pi / 4d, angle.Radians, _delta); + Assert.AreEqual(10f, angle.ToVector(10f).Length()); + + angle = Angle.FromVector(Vector2.UnitX); + Assert.AreEqual(0, angle.Radians, _delta); + Assert.IsTrue(Vector2.UnitX.EqualsWithTolerence(angle.ToUnitVector())); + + angle = Angle.FromVector(-Vector2.UnitY); + Assert.AreEqual(MathHelper.Pi / 2d, angle.Radians, _delta); + Assert.IsTrue((-Vector2.UnitY).EqualsWithTolerence(angle.ToUnitVector())); + } + + [Test] + public void EqualsTest() + { + var angle1 = new Angle(0); + var angle2 = new Angle(MathHelper.Pi * 2f); + Assert.IsTrue(angle1 == angle2); + angle2.Radians = MathHelper.Pi * 4f; + Assert.IsTrue(angle1.Equals(angle2)); + } + + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/AssertExtensions.cs b/Source/Tests/MonoGame.Extended.Tests/AssertExtensions.cs new file mode 100644 index 000000000..72347ca0b --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/AssertExtensions.cs @@ -0,0 +1,21 @@ +using System; + +namespace MonoGame.Extended.Tests +{ + public static class AssertExtensions + { + public static bool AreApproximatelyEqual(Point2 firstPoint, Point2 secondPoint) + { + return Math.Abs(firstPoint.X - secondPoint.X) < float.Epsilon && + Math.Abs(firstPoint.Y - secondPoint.Y) < float.Epsilon; + } + + public static bool AreApproximatelyEqual(RectangleF firstRectangle, RectangleF secondRectangle) + { + return Math.Abs(firstRectangle.X - secondRectangle.X) < float.Epsilon && + Math.Abs(firstRectangle.Y - secondRectangle.Y) < float.Epsilon && + Math.Abs(firstRectangle.Width - secondRectangle.Width) < float.Epsilon && + Math.Abs(firstRectangle.Height - secondRectangle.Height) < float.Epsilon; + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/BitmapFonts/BitmapFontTests.cs b/Source/Tests/MonoGame.Extended.Tests/BitmapFonts/BitmapFontTests.cs new file mode 100644 index 000000000..fea457881 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/BitmapFonts/BitmapFontTests.cs @@ -0,0 +1,81 @@ +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.TextureAtlases; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.BitmapFonts +{ + [TestFixture] + public class BitmapFontTests + { + [Test] + public void BitmapFont_Constructor_Test() + { + var font = CreateTestFont(); + + Assert.That(font.Name, Is.EqualTo("Impact")); + Assert.That(font.LineHeight, Is.EqualTo(22)); + } + + [Test] + public void BitmapFont_MeasureString_SingleWord_Test() + { + var font = CreateTestFont(); + var size = font.MeasureString("fox"); + + Assert.That(size.Width, Is.EqualTo(40)); + Assert.That(size.Height, Is.EqualTo(font.LineHeight)); + } + + [Test] + public void BitmapFont_MeasureString_WithLetterSpacing_Test() + { + var font = CreateTestFont(); + font.LetterSpacing = 3; + + var size = font.MeasureString("fox"); + + Assert.That(size.Width, Is.EqualTo(46)); + Assert.That(size.Height, Is.EqualTo(font.LineHeight)); + } + + [Test] + public void BitmapFont_MeasureString_MultipleLines_Test() + { + var font = CreateTestFont(); + var size = font.MeasureString("box fox\nbox of fox"); + + Assert.That(size.Width, Is.EqualTo(123)); + Assert.That(size.Height, Is.EqualTo(font.LineHeight * 2)); + } + + [Test] + public void BitmapFont_MeasureString_EmptyString_Test() + { + var font = CreateTestFont(); + var size = font.MeasureString(string.Empty); + + Assert.That(size.Width, Is.EqualTo(0)); + Assert.That(size.Height, Is.EqualTo(0)); + } + + private static BitmapFont CreateTestFont() + { + var graphicsDevice = new TestGraphicsDevice(); + var texture = new Texture2D(graphicsDevice, width: 256, height: 256); + var textureRegion = new TextureRegion2D(texture, x: 219, y: 61, width: 16, height: 18); + var regions = new[] + { + // extracted from 'Impact' font. 'x' is particularly interesting because it has a negative x offset + new BitmapFontRegion(textureRegion, character: ' ', xOffset: 0, yOffset: 0, xAdvance: 6), + new BitmapFontRegion(textureRegion, character: 'b', xOffset: 0, yOffset: 7, xAdvance: 17), + new BitmapFontRegion(textureRegion, character: 'f', xOffset: 0, yOffset: 7, xAdvance: 9), + new BitmapFontRegion(textureRegion, character: 'o', xOffset: 0, yOffset: 11, xAdvance: 16), + new BitmapFontRegion(textureRegion, character: 'x', xOffset: -1, yOffset: 11, xAdvance: 13), + }; + + var font = new BitmapFont("Impact", regions, lineHeight: 22); + return font; + } + } +} diff --git a/Source/MonoGame.Extended.Tests/Camera2DTests.cs b/Source/Tests/MonoGame.Extended.Tests/Camera2DTests.cs similarity index 96% rename from Source/MonoGame.Extended.Tests/Camera2DTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Camera2DTests.cs index 6113b4e30..c85dfc9ef 100644 --- a/Source/MonoGame.Extended.Tests/Camera2DTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/Camera2DTests.cs @@ -1,6 +1,5 @@ using Microsoft.Xna.Framework; using MonoGame.Extended.ViewportAdapters; -using NSubstitute; using NUnit.Framework; namespace MonoGame.Extended.Tests @@ -40,7 +39,7 @@ public void Camera2D_GetBoundingFrustum_Test() } [Test] - public void Camera2D_GetBoundingRectangle_Test() + public void Camera2D_BoundingRectangle_Test() { var graphicsDevice = TestHelper.CreateGraphicsDevice(); var viewport = new DefaultViewportAdapter(graphicsDevice); @@ -48,7 +47,7 @@ public void Camera2D_GetBoundingRectangle_Test() camera.Move(new Vector2(2, 0)); camera.Move(new Vector2(0, 3)); - var boundingRectangle = camera.GetBoundingRectangle(); + var boundingRectangle = camera.BoundingRectangle; Assert.AreEqual(2, boundingRectangle.Left, 0.01); Assert.AreEqual(3, boundingRectangle.Top, 0.01); diff --git a/Source/Tests/MonoGame.Extended.Tests/Collections/BitVector32Tests.cs b/Source/Tests/MonoGame.Extended.Tests/Collections/BitVector32Tests.cs new file mode 100644 index 000000000..94d7377e0 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Collections/BitVector32Tests.cs @@ -0,0 +1,245 @@ +using System; +using MonoGame.Extended.Collections; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Collections +{ + internal class BitVector32Tests + { + [TestFixture] + public class BitVector32Test + { + [Test] + public void Constructors() + { + var bitVector = new BitVector32((uint)31); + Assert.AreEqual(31, bitVector); + Assert.IsTrue(bitVector[31]); + Assert.IsFalse(bitVector[32]); + Assert.AreEqual(bitVector.ToString(), "BitVector32{00000000000000000000000000011111}"); + + var bitVector2 = new BitVector32(bitVector); + Assert.IsTrue(bitVector == bitVector2); + Assert.AreEqual(bitVector.GetHashCode(), bitVector2.GetHashCode()); + + bitVector2[32] = true; + Assert.IsFalse(bitVector == bitVector2); + Assert.IsFalse(bitVector.GetHashCode() == bitVector2.GetHashCode()); + } + + [Test] + public void Constructors_MaxValue() + { + var bitVector = new BitVector32(uint.MaxValue); + Assert.AreEqual(uint.MaxValue, bitVector); + Assert.AreEqual("BitVector32{11111111111111111111111111111111}", BitVector32.ToString(bitVector)); + } + + [Test] + public void Constructors_MinValue() + { + var bitVector = new BitVector32(uint.MinValue); + Assert.AreEqual(uint.MinValue, bitVector); + Assert.AreEqual("BitVector32{00000000000000000000000000000000}", BitVector32.ToString(bitVector)); + } + + [Test] + public void Indexers() + { + var bitVector = new BitVector32((uint)7); + Assert.IsTrue(bitVector[0]); + Assert.IsTrue(bitVector[1]); + Assert.IsTrue(bitVector[2]); + Assert.IsTrue(bitVector[4]); + Assert.IsTrue(!bitVector[8]); + Assert.IsTrue(!bitVector[16]); + bitVector[8] = true; + Assert.IsTrue(bitVector[4]); + Assert.IsTrue(bitVector[8]); + Assert.IsTrue(!bitVector[16]); + bitVector[8] = false; + Assert.IsTrue(bitVector[4]); + Assert.IsTrue(!bitVector[8]); + Assert.IsTrue(!bitVector[16]); + + var section = BitVector32.CreateSection(31); + section = BitVector32.CreateSection(64, section); + + var bitVector1 = new BitVector32((uint)0xffff77); + var bitVector2 = new BitVector32((uint)bitVector1[section]); + Assert.AreEqual(123, bitVector1[section]); + } + + [Test] + public void CreateMask() + { + Assert.AreEqual(1, BitVector32.CreateMask()); + Assert.AreEqual(1, BitVector32.CreateMask(0)); + Assert.AreEqual(2, BitVector32.CreateMask(1)); + Assert.AreEqual(32, BitVector32.CreateMask(16)); + var overflow = -2; + Assert.AreEqual((uint)overflow, BitVector32.CreateMask(int.MaxValue)); + // ReSharper disable once ConvertToConstant.Local + var overflow2 = -4; + Assert.AreEqual((uint)overflow2, BitVector32.CreateMask((uint)overflow)); + // ReSharper disable once ConvertToConstant.Local + overflow = int.MinValue + 1; + Assert.AreEqual(2, BitVector32.CreateMask((uint)overflow)); + } + + [Test] + [ExpectedException(typeof (InvalidOperationException))] + public void CreateMask_MinValue() + { + // ReSharper disable once ConvertToConstant.Local + var overflow = int.MinValue; + BitVector32.CreateMask((uint)overflow); + } + + [Test] + public void CreateSection() + { + var section = BitVector32.CreateSection(1); + Assert.AreEqual(1, section.Mask); + + section = BitVector32.CreateSection(2); + Assert.AreEqual(3, section.Mask); + + section = BitVector32.CreateSection(3); + Assert.AreEqual(3, section.Mask); + + section = BitVector32.CreateSection(5); + Assert.AreEqual(7, section.Mask); + + section = BitVector32.CreateSection(20); + Assert.AreEqual(0x1f, section.Mask); + + section = BitVector32.CreateSection(short.MaxValue); + Assert.AreEqual(0x7fff, section.Mask); + + section = BitVector32.CreateSection(short.MaxValue - 100); + Assert.AreEqual(0x7fff, section.Mask); + + try + { + BitVector32.CreateSection(0); + Assert.Fail(); + } + catch (ArgumentException) + { + } + + try + { + BitVector32.CreateSection(-1); + Assert.Fail(); + } + catch (ArgumentException) + { + } + + try + { + BitVector32.CreateSection(short.MinValue); + Assert.Fail(); + } + catch (ArgumentException) + { + } + + section = BitVector32.CreateSection(20); + Assert.AreEqual(0x1f, section.Mask); + Assert.AreEqual(0x00, section.Offset); + section = BitVector32.CreateSection(120, section); + Assert.AreEqual(0x7f, section.Mask); + Assert.AreEqual(0x05, section.Offset); + section = BitVector32.CreateSection(1000, section); + Assert.AreEqual(0x3ff, section.Mask); + Assert.AreEqual(0x0c, section.Offset); + } + + [Test] + public void Section() + { + var section1 = BitVector32.CreateSection(20); + Assert.AreEqual(31, section1.Mask); + Assert.AreEqual(0, section1.Offset); + Assert.AreEqual("Section{0x1f, 0x0}", BitVector32.Section.ToString(section1)); + + var section2 = BitVector32.CreateSection(20); + Assert.IsTrue(section1.Equals(section2)); + Assert.IsTrue(section2.Equals((object)section1)); + Assert.AreEqual(section1.GetHashCode(), section2.GetHashCode()); + Assert.AreEqual("Section{0x1f, 0x0}", section2.ToString()); + } + + [Test] + public void SectionCorrectSize() + { + var section1 = BitVector32.CreateSection(32767); + var section2 = BitVector32.CreateSection(32767, section1); + var section3 = BitVector32.CreateSection(3, section2); + var bitVector = new BitVector32((uint)0) + { + [section3] = 3 + }; + Assert.AreEqual(bitVector[section3], 3); + } + + [Test] + public void SectionIncorrectSize() + { + var section1 = BitVector32.CreateSection(32767); + var section2 = BitVector32.CreateSection(32767, section1); + BitVector32.CreateSection(4, section2); + } + + [Test] + public void NegativeIndexer() + { + var bitVector = new BitVector32(uint.MaxValue); + Assert.IsTrue(bitVector[uint.MinValue], "UInt32.MinValue"); + } + + [Test] + public void TestSectionIndexer() + { + var bitVector = new BitVector32(uint.MaxValue); + var section = BitVector32.CreateSection(1); + section = BitVector32.CreateSection(short.MaxValue, section); + section = BitVector32.CreateSection(short.MaxValue, section); + section = BitVector32.CreateSection(1, section); + Assert.AreEqual(1, bitVector[section]); + bitVector[section] = 0; + + Assert.AreEqual(int.MaxValue, bitVector); + } + + [Test, ExpectedException(typeof (ArgumentException))] + public void TestCreateSection1() + { + var section = BitVector32.CreateSection(short.MaxValue); + BitVector32.CreateSection(0, section); + } + + [Test, ExpectedException(typeof (ArgumentException))] + public void TestCreateSection2() + { + var section = BitVector32.CreateSection(short.MaxValue); + BitVector32.CreateSection(-1, section); + } + + [Test, ExpectedException(typeof (ArgumentException))] + public void TestCreateSection3() + { + var section = BitVector32.CreateSection(short.MaxValue); + BitVector32.CreateSection(short.MinValue, section); + } + + private void Print(BitVector32.Section s) + { + Console.WriteLine(s + " : " + s.Mask + " : " + s.Offset); + } + } + } +} diff --git a/Source/MonoGame.Extended.Tests/Collections/DequeTests.cs b/Source/Tests/MonoGame.Extended.Tests/Collections/DequeTests.cs similarity index 100% rename from Source/MonoGame.Extended.Tests/Collections/DequeTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Collections/DequeTests.cs diff --git a/Source/MonoGame.Extended.Tests/Collections/PoolTests.cs b/Source/Tests/MonoGame.Extended.Tests/Collections/PoolTests.cs similarity index 97% rename from Source/MonoGame.Extended.Tests/Collections/PoolTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Collections/PoolTests.cs index 00120db6b..31f79de53 100644 --- a/Source/MonoGame.Extended.Tests/Collections/PoolTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/Collections/PoolTests.cs @@ -1,4 +1,5 @@ -using MonoGame.Extended.Collections; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Collections; using NUnit.Framework; namespace MonoGame.Extended.Tests.Collections diff --git a/Source/MonoGame.Extended.Tests/MockGameWindow.cs b/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs similarity index 79% rename from Source/MonoGame.Extended.Tests/MockGameWindow.cs rename to Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs index d703211f5..4ed4f1fbc 100644 --- a/Source/MonoGame.Extended.Tests/MockGameWindow.cs +++ b/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs @@ -1,13 +1,21 @@ using System; +using System.Drawing; using Microsoft.Xna.Framework; +using Point = Microsoft.Xna.Framework.Point; +using Rectangle = Microsoft.Xna.Framework.Rectangle; namespace MonoGame.Extended.Tests { public class MockGameWindow : GameWindow { - public void RaiseOnClientSizeChangedEvent() + public override bool AllowUserResizing { get; set; } + public override Rectangle ClientBounds { get; } + public override DisplayOrientation CurrentOrientation { get; } + public override IntPtr Handle { get; } + public override string ScreenDeviceName { get; } + + public MockGameWindow() { - OnClientSizeChanged(); } public override void BeginScreenDeviceChange(bool willBeFullScreen) @@ -26,11 +34,8 @@ protected override void SetTitle(string title) { } - public override bool AllowUserResizing { get; set; } - public override Rectangle ClientBounds { get; } - public override Point Position { get; set; } - public override DisplayOrientation CurrentOrientation { get; } - public override IntPtr Handle { get; } - public override string ScreenDeviceName { get; } +#if __MonoCS__ + public override Icon Icon { get; set; } +#endif } } \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj b/Source/Tests/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj new file mode 100644 index 000000000..e3807dda7 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj @@ -0,0 +1,129 @@ + + + + + Debug + AnyCPU + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1} + Library + Properties + MonoGame.Extended.Tests + MonoGame.Extended.Tests + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + + False + ..\..\..\Dependencies\MonoGame.Framework.dll + + + ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + + + ..\..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll + True + + + ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + MonoGame.Extended.Graphics + + + {6c8b9e29-d09b-4901-80fd-45aaa35882c6} + MonoGame.Extended.Particles + + + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + MonoGame.Extended.Tiled + + + {41724C52-3D50-45BB-81EB-3C8A247EAFD1} + MonoGame.Extended + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tests/OpenTK.dll.config b/Source/Tests/MonoGame.Extended.Tests/OpenTK.dll.config similarity index 100% rename from Source/MonoGame.Extended.Tests/OpenTK.dll.config rename to Source/Tests/MonoGame.Extended.Tests/OpenTK.dll.config diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/AssertionModifier.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/AssertionModifier.cs new file mode 100644 index 000000000..b243b3aa2 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/AssertionModifier.cs @@ -0,0 +1,25 @@ +using System; +using MonoGame.Extended.Particles; +using MonoGame.Extended.Particles.Modifiers; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles +{ + internal class AssertionModifier : IModifier + { + private readonly Predicate _predicate; + + public AssertionModifier(Predicate predicate) + { + _predicate = predicate; + } + + public unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator) + { + while (iterator.HasNext) { + var particle = iterator.Next(); + Assert.IsTrue(_predicate(*particle)); + } + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/ColourTests.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/ColourTests.cs new file mode 100644 index 000000000..be34cbed7 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/ColourTests.cs @@ -0,0 +1,116 @@ +using System; +using System.Globalization; +using MonoGame.Extended.Particles; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles +{ + [TestFixture] + public class ColourTests + { + public class Constructor + { + [Test] + public void WhenGivenValues_ReturnsInitializedColour() + { + var colour = new HslColor(1f, 1f, 1f); + Assert.AreEqual(colour.H, 1f); + Assert.AreEqual(colour.S, 1f); + Assert.AreEqual(colour.L, 1f); + } + } + + public class AreEqualColourMethod + { + [Test] + public void WhenGivenEqualValues_ReturnsTrue() + { + var x = new HslColor(360f, 1f, 1f); + var y = new HslColor(360f, 1f, 1f); + Assert.AreEqual(x, y); + } + + [Test] + public void WhenGivenDifferentValues_ReturnsFalse() + { + var x = new HslColor(0f, 1f, 0f); + var y = new HslColor(360f, 1f, 1f); + Assert.IsFalse(x.Equals(y)); + } + } + + public class AreEqualObjectMethod + { + [Test] + public void WhenGivenNull_ReturnsFalse() + { + var colour = new HslColor(360f, 1f, 1f); + Assert.IsNotNull(colour); + } + + [Test] + + public void WhenGivenEqualColour_ReturnsTrue() + { + var x = new HslColor(360f, 1f, 1f); + + Object y = new HslColor(360f, 1f, 1f); + Assert.AreEqual(x, y); + } + + [Test] + + public void WhenGivenDifferentColour_ReturnsFalse() + { + var x = new HslColor(360f, 1f, 1f); + + Object y = new HslColor(0f, 1f, 0f); + Assert.IsFalse(x.Equals(y)); + } + + [Test] + + public void WhenGivenObjectOfAntotherType_ReturnsFalse() + { + var colour = new HslColor(360f, 1f, 1f); + + // ReSharper disable once SuspiciousTypeConversion.Global + Assert.IsFalse(colour.Equals(DateTime.Now)); + } + } + + public class GetHashCodeMethod + { + [Test] + + public void WhenObjectsAreDifferent_YieldsDifferentHashCodes() + { + var x = new HslColor(0f, 1f, 0f); + var y = new HslColor(360f, 1f, 1f); + Assert.AreNotEqual(x.GetHashCode(), y.GetHashCode()); + } + + [Test] + + public void WhenObjectsAreSame_YieldsIdenticalHashCodes() + { + var x = new HslColor(180f, 0.5f, 0.5f); + var y = new HslColor(180f, 0.5f, 0.5f); + Assert.AreEqual(x.GetHashCode(), y.GetHashCode()); + } + } + + public class ToStringMethod + { + [Theory] + [TestCase(360f, 1f, 1f, "H:0.0° S:100.0 L:100.0")] + [TestCase(180f, 0.5f, 0.5f, "H:180.0° S:50.0 L:50.0")] + [TestCase(0f, 0f, 0f, "H:0.0° S:0.0 L:0.0")] + public void ReturnsCorrectValue(float h, float s, float l, string expected) + { + var colour = new HslColor(h, s, l); + Assert.AreEqual(expected, colour.ToString()); + } + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/EmitterTests.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/EmitterTests.cs new file mode 100644 index 000000000..877582471 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/EmitterTests.cs @@ -0,0 +1,129 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Particles; +using MonoGame.Extended.Particles.Modifiers; +using MonoGame.Extended.Particles.Profiles; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles +{ + [TestFixture] + public class EmitterTests + { + public class UpdateMethod + { + [Test] + public void WhenThereAreParticlesToExpire_DecreasesActiveParticleCount() + { + var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point()) + { + Parameters = new ParticleReleaseParameters + { + Quantity = 1 + } + }; + + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 1); + + subject.Update(2f); + Assert.AreEqual(subject.ActiveParticles, 0); + } + + [Test] + public void WhenThereAreParticlesToExpire_DoesNotPassExpiredParticlesToModifiers() + { + var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point()) + { + Parameters = new ParticleReleaseParameters() + { + Quantity = 1 + }, + Modifiers = new IModifier[] { + new AssertionModifier(particle => particle.Age <= 1f) + } + }; + + subject.Trigger(new Vector2(0f, 0f)); + subject.Update(0.5f); + subject.Trigger(new Vector2(0f, 0f)); + subject.Update(0.5f); + subject.Trigger(new Vector2(0f, 0f)); + subject.Update(0.5f); + } + + [Test] + public void WhenThereAreNoActiveParticles_GracefullyDoesNothing() + { + var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point(), autoTrigger: false); + + subject.Update(0.5f); + Assert.AreEqual(subject.ActiveParticles, 0); + } + } + + public class TriggerMethod + { + [Test] + public void WhenEnoughHeadroom_IncreasesActiveParticlesCountByReleaseQuantity() + { + var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point()) + { + Parameters = new ParticleReleaseParameters + { + Quantity = 10 + } + }; + Assert.AreEqual(subject.ActiveParticles, 0); + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 10); + } + + [Test] + public void WhenNotEnoughHeadroom_IncreasesActiveParticlesCountByRemainingParticles() + { + var subject = new ParticleEmitter(null, 15, TimeSpan.FromSeconds(1), Profile.Point()) + { + Parameters = new ParticleReleaseParameters + { + Quantity = 10 + } + }; + + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 10); + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 15); + } + + [Test] + public void WhenNoRemainingParticles_DoesNotIncreaseActiveParticlesCount() + { + var subject = new ParticleEmitter(null, 10, TimeSpan.FromSeconds(1), Profile.Point()) + { + Parameters = new ParticleReleaseParameters + { + Quantity = 10 + } + }; + + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 10); + subject.Trigger(new Vector2(0f, 0f)); + Assert.AreEqual(subject.ActiveParticles, 10); + } + } + + public class DisposeMethod + { + [Test] + public void IsIdempotent() + { + var subject = new ParticleEmitter(null, 10, TimeSpan.FromSeconds(1), Profile.Point()); + + subject.Dispose(); + subject.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/ParticleBufferTests.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/ParticleBufferTests.cs new file mode 100644 index 000000000..9510d1025 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/ParticleBufferTests.cs @@ -0,0 +1,184 @@ +using System; +using MonoGame.Extended.Particles; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles +{ + [TestFixture] + public class ParticleBufferTests + { + public class AvailableProperty + { + [Test] + public void WhenNoParticlesReleased_ReturnsBufferSize() + { + var subject = new ParticleBuffer(100); + + Assert.AreEqual(subject.Available, 100); + } + + [Test] + public void WhenSomeParticlesReleased_ReturnsAvailableCount() + { + var subject = new ParticleBuffer(100); + + subject.Release(10); + Assert.AreEqual(subject.Available, 90); + } + + [Test] + public void WhenAllParticlesReleased_ReturnsZero() + { + var subject = new ParticleBuffer(100); + + subject.Release(100); + Assert.AreEqual(subject.Available, 0); + + } + } + + public class CountProperty + { + [Test] + public void WhenNoParticlesReleased_ReturnsZero() + { + var subject = new ParticleBuffer(100); + Assert.AreEqual(subject.Count, 0); + } + + [Test] + public void WhenSomeParticlesReleased_ReturnsCount() + { + var subject = new ParticleBuffer(100); + + subject.Release(10); + Assert.AreEqual(subject.Count, 10); + + } + + [Test] + public void WhenAllParticlesReleased_ReturnsZero() + { + var subject = new ParticleBuffer(100); + + subject.Release(100); + Assert.AreEqual(subject.Count, 100); + + } + } + + public class ReleaseMethod + { + [Test] + public void WhenPassedReasonableQuantity_ReturnsNumberReleased() + { + var subject = new ParticleBuffer(100); + + var count = subject.Release(50); + + Assert.AreEqual(count.Total, 50); + } + + [Test] + public void WhenPassedImpossibleQuantity_ReturnsNumberActuallyReleased() + { + var subject = new ParticleBuffer(100); + + var count = subject.Release(200); + Assert.AreEqual(count.Total, 100); + } + } + + public class ReclaimMethod + { + [Test] + public void WhenPassedReasonableNumber_ReclaimsParticles() + { + var subject = new ParticleBuffer(100); + + subject.Release(100); + Assert.AreEqual(subject.Count, 100); + + subject.Reclaim(50); + Assert.AreEqual(subject.Count, 50); + } + } + + public class CopyToMethod + { + [Test] + public void WhenBufferIsSequential_CopiesParticlesInOrder() + { + unsafe + { + var subject = new ParticleBuffer(10); + var iterator = subject.Release(5); + + do + { + var particle = iterator.Next(); + particle->Age = 1f; + } + while (iterator.HasNext); + + var destination = new Particle[10]; + + fixed (Particle* buffer = destination) + { + subject.CopyTo((IntPtr)buffer); + } + + Assert.AreEqual(destination[0].Age, 1f, 0.0001); + Assert.AreEqual(destination[1].Age, 1f, 0.0001); + Assert.AreEqual(destination[2].Age, 1f, 0.0001); + Assert.AreEqual(destination[3].Age, 1f, 0.0001); + Assert.AreEqual(destination[4].Age, 1f, 0.0001); + } + } + } + + public class CopyToReverseMethod + { + [Test] + public void WhenBufferIsSequential_CopiesParticlesInReverseOrder() + { + unsafe + { + var subject = new ParticleBuffer(10); + var iterator = subject.Release(5); + + do + { + var particle = iterator.Next(); + particle->Age = 1f; + } + while (iterator.HasNext); + + var destination = new Particle[10]; + + fixed (Particle* buffer = destination) + { + subject.CopyToReverse((IntPtr)buffer); + } + + Assert.AreEqual(destination[0].Age, 1f, 0.0001); + Assert.AreEqual(destination[1].Age, 1f, 0.0001); + Assert.AreEqual(destination[2].Age, 1f, 0.0001); + Assert.AreEqual(destination[3].Age, 1f, 0.0001); + Assert.AreEqual(destination[4].Age, 1f, 0.0001); + } + } + } + + public class DisposeMethod + { + [Test] + public void IsIdempotent() + { + var subject = new ParticleBuffer(100); + subject.Dispose(); + subject.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/PointProfileTests.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/PointProfileTests.cs new file mode 100644 index 000000000..868b3baf4 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/PointProfileTests.cs @@ -0,0 +1,36 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Particles.Profiles; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles.Profiles +{ + [TestFixture] + public class PointProfileTests + { + [Test] + public void ReturnsZeroOffset() + { + var subject = new PointProfile(); + + Vector2 offset, heading; + subject.GetOffsetAndHeading(out offset, out heading); + + Assert.AreEqual(0f, offset.X); + Assert.AreEqual(0f, offset.Y); + } + + [Test] + public void ReturnsHeadingAsUnitVector() + { + var subject = new PointProfile(); + + Vector2 offset, heading; + subject.GetOffsetAndHeading(out offset, out heading); + + var length = Math.Sqrt(heading.X * heading.X + heading.Y * heading.Y); + Assert.AreEqual(1f, length, 0.000001); + } + + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/RingProfileTests.cs b/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/RingProfileTests.cs new file mode 100644 index 000000000..ec6fbc888 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Particles/Profiles/RingProfileTests.cs @@ -0,0 +1,42 @@ +using System; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Particles.Profiles; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Particles.Profiles +{ + [TestFixture] + public class RingProfileTests + { + [Test] + public void ReturnsOffsetEqualToRadius() + { + var subject = new RingProfile + { + Radius = 10f + }; + Vector2 offset, heading; + subject.GetOffsetAndHeading(out offset, out heading); + + var length = Math.Sqrt(offset.X * offset.X + offset.Y * offset.Y); + Assert.AreEqual(10f, length, 0.000001); + } + + [Test] + public void WhenRadiateIsTrue_HeadingIsEqualToNormalizedOffset() + { + var subject = new RingProfile + { + Radius = 10f, + Radiate = Profile.CircleRadiation.Out + }; + Vector2 offset, heading; + subject.GetOffsetAndHeading(out offset, out heading); + + Assert.AreEqual(heading.X, offset.X / 10, 0.000001); + Assert.AreEqual(heading.Y, offset.Y / 10, 0.000001); + + } + + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/BoundingRectangleTests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/BoundingRectangleTests.cs new file mode 100644 index 000000000..cdbc0ccca --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/BoundingRectangleTests.cs @@ -0,0 +1,396 @@ +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class BoundingRectangleTests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Vector2()).SetName( + "The empty bounding rectangle has the expected position and radii."); + yield return + new TestCaseData(new Point2(5, 5), new Vector2(15, 15)).SetName( + "A non-empty bounding rectangle has the expected position and radii."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(Point2 centre, Vector2 radii) + { + var boundingRectangle = new BoundingRectangle(centre, radii); + Assert.AreEqual(centre, boundingRectangle.Center); + Assert.AreEqual(radii, boundingRectangle.HalfExtents); + } + + public IEnumerable CreateFromMinimumMaximumTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), new BoundingRectangle()).SetName( + "The bounding rectangle created from the zero minimum point and zero maximum point is the empty bounding rectangle.") + ; + yield return + new TestCaseData(new Point2(5, 5), new Point2(15, 15), + new BoundingRectangle(new Point2(10, 10), new Size2(5, 5))).SetName( + "The bounding rectangle created from the non-zero minimum point and the non-zero maximum point is the expected bounding rectangle.") + ; + } + } + + [Test] + [TestCaseSource(nameof(CreateFromMinimumMaximumTestCases))] + public void CreateFromMinimumMaximum(Point2 minimum, Point2 maximum, BoundingRectangle expectedBoundingRectangle) + { + var actualBoundingRectangle = BoundingRectangle.CreateFrom(minimum, maximum); + Assert.AreEqual(expectedBoundingRectangle, actualBoundingRectangle); + } + + public IEnumerable CreateFromPointsTestCases + { + get + { + yield return + new TestCaseData(null, new BoundingRectangle()).SetName( + "The bounding rectangle created from null points is the empty bounding rectangle."); + yield return + new TestCaseData(new Point2[0], new BoundingRectangle()).SetName( + "The bounding rectangle created from the empty set of points is the empty bounding rectangle."); + yield return + new TestCaseData( + new[] + { + new Point2(5, 5), new Point2(10, 10), new Point2(15, 15), new Point2(-5, -5), + new Point2(-15, -15) + }, new BoundingRectangle(new Point2(0, 0), new Size2(15, 15))).SetName( + "The bounding rectangle created from a non-empty set of points is the expected bounding rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(CreateFromPointsTestCases))] + public void CreateFromPoints(Point2[] points, BoundingRectangle expectedBoundingRectangle) + { + var actualBoundingRectangle = BoundingRectangle.CreateFrom(points); + Assert.AreEqual(expectedBoundingRectangle, actualBoundingRectangle); + } + + public IEnumerable CreateFromTransformedTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), Matrix2D.Identity, new BoundingRectangle()).SetName( + "The bounding rectangle created from the empty bounding rectangle transformed by the identity matrix is the empty bounding rectangle.") + ; + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(20, 20)), Matrix2D.CreateScale(2), new BoundingRectangle(new Point2(0, 0), new Size2(40, 40))).SetName( + "The bounding rectangle created from a non-empty bounding rectangle transformed by a non-identity matrix is the expected bounding rectangle.") + ; + } + } + + [Test] + [TestCaseSource(nameof(CreateFromTransformedTestCases))] + public void CreateFromTransformed(BoundingRectangle boundingRectangle, Matrix2D transformMatrix, + BoundingRectangle expectedBoundingRectangle) + { + var actualBoundingRectangle = BoundingRectangle.Transform(boundingRectangle, ref transformMatrix); + Assert.AreEqual(expectedBoundingRectangle, actualBoundingRectangle); + } + + public IEnumerable UnionTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new BoundingRectangle(), new BoundingRectangle()).SetName( + "The union of two empty bounding rectangles is the empty bounding rectangle."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(15, 15)), + new BoundingRectangle(new Point2(20, 20), new Size2(40, 40)), new BoundingRectangle(new Point2(20, 20), new Size2(40, 40))) + .SetName( + "The union of two non-empty bounding rectangles is the expected bounding rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(UnionTestCases))] + public void Union(BoundingRectangle boundingRectangle1, BoundingRectangle boundingRectangle2, BoundingRectangle expectedBoundingRectangle) + { + Assert.AreEqual(expectedBoundingRectangle, boundingRectangle1.Union(boundingRectangle2)); + Assert.AreEqual(expectedBoundingRectangle, BoundingRectangle.Union(boundingRectangle1, boundingRectangle2)); + } + + public IEnumerable IntersectionTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new BoundingRectangle(), new BoundingRectangle()).SetName( + "The intersection of two empty bounding rectangles is the empty bounding box."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(-10, -10), new Size2(15, 15)), + new BoundingRectangle(new Point2(20, 20), new Size2(40, 40)), + new BoundingRectangle(new Point2(-7.5f, -7.5f), new Size2(12.5f, 12.5f))).SetName( + "The intersection of two overlapping non-empty bounding rectangles is the expected bounding rectangle."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(-30, -30), new Size2(15, 15)), + new BoundingRectangle(new Point2(20, 20), new Size2(10, 10)), + BoundingRectangle.Empty).SetName( + "The intersection of two non-overlapping non-empty bounding rectangles is the empty bounding rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectionTestCases))] + public void Intersection(BoundingRectangle boundingRectangle1, BoundingRectangle boundingRectangle2, + BoundingRectangle? expectedBoundingRectangle) + { + Assert.AreEqual(expectedBoundingRectangle, boundingRectangle1.Intersection(boundingRectangle2)); + Assert.AreEqual(expectedBoundingRectangle, BoundingRectangle.Intersection(boundingRectangle1, boundingRectangle2)); + } + + public IEnumerable IntersectsTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new BoundingRectangle(), true).SetName( + "Two empty bounding rectangles intersect."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(-10, -10), new Size2(15, 15)), + new BoundingRectangle(new Point2(20, 20), new Size2(40, 40)), true).SetName( + "Two overlapping non-empty bounding rectangles intersect."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(-40, -50), new Size2(15, 15)), + new BoundingRectangle(new Point2(20, 20), new Size2(15, 15)), false).SetName( + "Two non-overlapping non-empty bounding rectangles do not intersect."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectsTestCases))] + public void Intersects(BoundingRectangle boundingRectangle1, BoundingRectangle boundingRectangle2, bool expectedToIntersect) + { + Assert.AreEqual(expectedToIntersect, boundingRectangle1.Intersects(boundingRectangle2)); + Assert.AreEqual(expectedToIntersect, BoundingRectangle.Intersects(boundingRectangle1, boundingRectangle2)); + } + + public IEnumerable ContainsPointTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new Point2(), true).SetName( + "The empty bounding rectangle contains the zero point."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(15, 15)), new Point2(-15, -15), true) + .SetName( + "A non-empty bounding rectangle contains a point inside it."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(15, 15)), new Point2(-16, 15), false) + .SetName( + "A non-empty bounding rectangle does not contain a point outside it."); + } + } + + [Test] + [TestCaseSource(nameof(ContainsPointTestCases))] + public void ContainsPoint(BoundingRectangle boundingRectangle, Point2 point, bool expectedToContainPoint) + { + Assert.AreEqual(expectedToContainPoint, boundingRectangle.Contains(point)); + Assert.AreEqual(expectedToContainPoint, BoundingRectangle.Contains(boundingRectangle, point)); + } + + public IEnumerable ClosestPointTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new Point2(), new Point2()).SetName( + "The closest point on the empty bounding rectangle to the zero point is the zero point."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Point2(50, 50)), new Point2(25, 25), + new Point2(25, 25)).SetName( + "The closest point on a non-empty bounding rectangle to a point which is inside the bounding rectangle is that point.") + ; + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Point2(50, 50)), new Point2(400, 0), + new Point2(50, 0)).SetName( + "The closest point on a non-empty bounding rectangle to a point which is outside the bounding rectangle is the expected point.") + ; + } + } + + [Test] + [TestCaseSource(nameof(ClosestPointTestCases))] + public void ClosestPoint(BoundingRectangle boundingRectangle, Point2 point, Point2 expectedClosestPoint) + { + var actualClosestPoint = boundingRectangle.ClosestPointTo(point); + Assert.AreEqual(expectedClosestPoint, actualClosestPoint); + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new BoundingRectangle(), true).SetName( + "Empty bounding rectangles are equal.") + ; + yield return + new TestCaseData( + new BoundingRectangle(new Point2(0, 0), new Size2(float.MaxValue, float.MinValue)), + new BoundingRectangle(new Point2(0, 0), + new Point2(float.MinValue, float.MaxValue)), false).SetName( + "Two different non-empty bounding rectangles are not equal."); + yield return + new TestCaseData( + new BoundingRectangle(new Point2(0, 0), new Size2(float.MinValue, float.MaxValue)), + new BoundingRectangle(new Point2(0, 0), + new Size2(float.MinValue, float.MaxValue)), true).SetName( + "Two identical non-empty bounding rectangles are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(BoundingRectangle boundingRectangle1, BoundingRectangle boundingRectangle2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(boundingRectangle1, boundingRectangle2) == expectedToBeEqual); + Assert.IsTrue(boundingRectangle1 == boundingRectangle2 == expectedToBeEqual); + Assert.IsFalse(boundingRectangle1 == boundingRectangle2 != expectedToBeEqual); + Assert.IsTrue(boundingRectangle1.Equals(boundingRectangle2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(boundingRectangle1.GetHashCode(), boundingRectangle2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), null, false).SetName( + "A bounding rectangle is not equal to a null object."); + yield return + new TestCaseData(new BoundingRectangle(), new object(), false).SetName( + "A bounding rectangle is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(BoundingRectangle boundingRectangle, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(boundingRectangle.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new BoundingRectangle(), true).SetName( + "Two empty bounding rectangles have the same hash code."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(50, 50)), + new BoundingRectangle(new Point2(0, 0), new Size2(50, 50)), true).SetName( + "Two indentical non-empty bounding rectangles have the same hash code."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(0, 0), new Size2(50, 50)), + new BoundingRectangle(new Point2(50, 50), new Size2(50, 50)), false).SetName( + "Two different non-empty bounding rectangles do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(BoundingRectangle boundingRectangle1, BoundingRectangle boundingRectangle2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = boundingRectangle1.GetHashCode(); + var hashCode2 = boundingRectangle2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable ToRectangleTestCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), new Rectangle()).SetName( + "The empty bounding rectangle point converted to a rectangle is the empty rectangle."); + yield return + new TestCaseData(new BoundingRectangle(new Point2(25, 25), new Size2(25, 25)), + new Rectangle(0, 0, 50, 50)).SetName( + "A non-empty bounding rectangle converted to a rectangle is the expected rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(ToRectangleTestCases))] + public void ToRectangle(BoundingRectangle boundingRectangle, Rectangle expectedRectangle) + { + var actualRectangle = (Rectangle)boundingRectangle; + Assert.AreEqual(expectedRectangle, actualRectangle); + } + + public IEnumerable FromRectangleTestCases + { + get + { + yield return + new TestCaseData(new Rectangle(), new BoundingRectangle()).SetName( + "The empty rectangle converted to a bounding rectangle is the empty bounding rectangle."); + yield return + new TestCaseData(new Rectangle(0, 0, 50, 50), + new BoundingRectangle(new Point2(25, 25), new Size2(25, 25))).SetName( + "A non-empty rectangle converted to a bounding rectangle is the expected bounding rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(FromRectangleTestCases))] + public void FromRectangle(Rectangle rectangle, BoundingRectangle expectedBoundingRectangle) + { + var actualBoundingRectangle = (BoundingRectangle)rectangle; + Assert.AreEqual(expectedBoundingRectangle, actualBoundingRectangle); + } + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new BoundingRectangle(), + string.Format(CultureInfo.CurrentCulture, "Centre: {0}, Radii: {1}", new Point2(), + new Vector2())).SetName( + "The empty bounding rectangle has the expected string representation using the current culture."); + yield return new TestCaseData(new BoundingRectangle(new Point2(5.1f, -5.123f), new Size2(5.4f, -5.4123f)), + string.Format(CultureInfo.CurrentCulture, "Centre: {0}, Radii: {1}", new Point2(5.1f, -5.123f), + new Vector2(5.4f, -5.4123f))).SetName( + "A non-empty bounding rectangle has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(BoundingRectangle boundingRectangle, string expectedString) + { + var actualString = boundingRectangle.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/CircleFTests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/CircleFTests.cs new file mode 100644 index 000000000..ef94901c3 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/CircleFTests.cs @@ -0,0 +1,411 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class CircleFTests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(new Point2(), 0.0f).SetName( + "The empty circle has the expected position and radius."); + yield return + new TestCaseData(new Point2(5, 5), 15f).SetName( + "A non-empty circle has the expected position and radius."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(Point2 centre, float radius) + { + var circle = new CircleF(centre, radius); + Assert.AreEqual(centre, circle.Center); + Assert.AreEqual(radius, circle.Radius); + } + + public IEnumerable CreateFromMinimumMaximumTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), new CircleF()).SetName( + "The bounding circle created from the zero minimum point and zero maximum point is the empty bounding circle.") + ; + yield return + new TestCaseData(new Point2(5, 5), new Point2(15, 15), + new CircleF(new Point2(10, 10), 5f)).SetName( + "The bounding circle created from the non-zero minimum point and the non-zero maximum point is the expected bounding circle.") + ; + } + } + + [Test] + [TestCaseSource(nameof(CreateFromMinimumMaximumTestCases))] + public void CreateFromMinimumMaximum(Point2 minimum, Point2 maximum, CircleF expectedBoundingCircle) + { + var actualBoundingCircle = CircleF.CreateFrom(minimum, maximum); + Assert.AreEqual(expectedBoundingCircle, actualBoundingCircle); + } + + public IEnumerable CreateFromPointsTestCases + { + get + { + yield return + new TestCaseData(null, new CircleF()).SetName( + "The bounding circle created from null points is the empty bounding circle."); + yield return + new TestCaseData(new Point2[0], new CircleF()).SetName( + "The bounding circle created from the empty set of points is the empty bounding circle."); + yield return + new TestCaseData( + new[] + { + new Point2(5, 5), new Point2(10, 10), new Point2(15, 15), new Point2(-5, -5), + new Point2(-15, -15) + }, new CircleF(new Point2(0, 0), 15)).SetName( + "The bounding circle created from a non-empty set of points is the expected bounding circle."); + } + } + + [Test] + [TestCaseSource(nameof(CreateFromPointsTestCases))] + public void CreateFromPoints(Point2[] points, CircleF expectedCircle) + { + var actualCircle = CircleF.CreateFrom(points); + Assert.AreEqual(expectedCircle, actualCircle); + } + + public IEnumerable IntersectsCircleTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new CircleF(), true).SetName( + "Two empty circles intersect."); + yield return + new TestCaseData(new CircleF(new Point2(-10, -10), 15), + new CircleF(new Point2(20, 20), 40), true).SetName( + "Two overlapping non-empty circles intersect."); + yield return + new TestCaseData(new CircleF(new Point2(-40, -50), 15), + new CircleF(new Point2(20, 20), 15), false).SetName( + "Two non-overlapping non-empty circles do not intersect."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectsCircleTestCases))] + public void Intersects(CircleF circle, CircleF circle2, bool expectedToIntersect) + { + Assert.AreEqual(expectedToIntersect, circle.Intersects(circle2)); + Assert.AreEqual(expectedToIntersect, CircleF.Intersects(circle, circle2)); + } + + public IEnumerable IntersectsRectangleTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new RectangleF(), true).SetName( + "The empty circle and the empty rectangle intersect."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 15), + new RectangleF(new Point2(0, 0), new Size2(40, 40)), true).SetName( + "The non-empty circle and a non-empty overlapping rectangle intersect."); + yield return + new TestCaseData(new CircleF(new Point2(-40, -50), 15), + new RectangleF(new Point2(20, 20), new Size2(15, 15)), false).SetName( + "The non-empty circle and a non-empty non-overlapping rectangle do not intersect."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectsRectangleTestCases))] + public void Intersects(CircleF circle, RectangleF rectangle, bool expectedToIntersect) + { + Assert.AreEqual(expectedToIntersect, circle.Intersects((BoundingRectangle)rectangle)); + Assert.AreEqual(expectedToIntersect, CircleF.Intersects(circle, (BoundingRectangle)rectangle)); + } + + public IEnumerable ContainsPointTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new Point2(), true).SetName( + "The empty circle contains the zero point."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 15), new Point2(-15, -15), true) + .SetName( + "A non-empty circle contains a point inside it."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 15), new Point2(-16, 15), false) + .SetName( + "A non-empty circle does not contain a point outside it."); + } + } + + [Test] + [TestCaseSource(nameof(ContainsPointTestCases))] + public void ContainsPoint(CircleF circle, Point2 point, bool expectedToContainPoint) + { + Assert.AreEqual(expectedToContainPoint, circle.Contains(point)); + Assert.AreEqual(expectedToContainPoint, CircleF.Contains(circle, point)); + } + + public IEnumerable ClosestPointTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new Point2(), new Point2()).SetName( + "The closest point on the empty circle to the zero point is the zero point."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 50), new Point2(25, 25), + new Point2(25, 25)).SetName( + "The closest point on a non-empty circle to a point which is inside the circle is that point.") + ; + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 50), new Point2(400, 0), + new Point2(50, 0)).SetName( + "The closest point on a non-empty circle to a point which is outside the circle is the expected point.") + ; + } + } + + [Test] + [TestCaseSource(nameof(ClosestPointTestCases))] + public void ClosestPoint(CircleF circle, Point2 point, Point2 expectedClosestPoint) + { + var actualClosestPoint = circle.ClosestPointTo(point); + Assert.AreEqual(expectedClosestPoint, actualClosestPoint); + } + + public IEnumerable BoundaryPointTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), 0.0f, new Point2()).SetName( + "The boundary point on the empty circle at an angle is the zero point."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 50), MathHelper.PiOver2, + new Point2(0, 50)).SetName( + "The boundary point on a non-empty circle at an angle is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(BoundaryPointTestCases))] + public void BoundaryPointAt(CircleF circle, float angle, Point2 expectedPoint) + { + var actualPoint = circle.BoundaryPointAt(angle); + AssertExtensions.AreApproximatelyEqual(expectedPoint, actualPoint); + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new CircleF(), true).SetName( + "Empty circles are equal.") + ; + yield return + new TestCaseData( + new CircleF(new Point2(0, 0), float.MaxValue), + new CircleF(new Point2(0, 0), float.MinValue), false).SetName( + "Two different non-empty circles are not equal."); + yield return + new TestCaseData( + new CircleF(new Point2(0, 0), float.MinValue), + new CircleF(new Point2(0, 0), float.MinValue), true).SetName( + "Two identical non-empty circles are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(CircleF circle1, CircleF circle2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(circle1, circle2) == expectedToBeEqual); + Assert.IsTrue(circle1 == circle2 == expectedToBeEqual); + Assert.IsFalse(circle1 == circle2 != expectedToBeEqual); + Assert.IsTrue(circle1.Equals(circle2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(circle1.GetHashCode(), circle2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), null, false).SetName( + "A circle is not equal to a null object."); + yield return + new TestCaseData(new CircleF(), new object(), false).SetName( + "A circle is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(CircleF circle, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(circle.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new CircleF(), true).SetName( + "Two empty circles have the same hash code."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 50), + new CircleF(new Point2(0, 0), 50), true).SetName( + "Two indentical non-empty circles have the same hash code."); + yield return + new TestCaseData(new CircleF(new Point2(0, 0), 50), + new CircleF(new Point2(50, 50), 50), false).SetName( + "Two different non-empty circles do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(CircleF circle1, CircleF circle2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = circle1.GetHashCode(); + var hashCode2 = circle2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable ToRectangleTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new Rectangle()).SetName( + "The empty circle converted to a rectangle is the empty integer rectangle."); + yield return + new TestCaseData(new CircleF(new Point2(25, 25), 25), + new Rectangle(0, 0, 50, 50)).SetName( + "A non-empty circle converted to a rectangle is the expected integer rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(ToRectangleTestCases))] + public void ToRectangle(CircleF circle, Rectangle expectedRectangle) + { + var actualRectangle = (Rectangle)circle; + Assert.AreEqual(expectedRectangle, actualRectangle); + } + + public IEnumerable ToRectangleFTestCases + { + get + { + yield return + new TestCaseData(new CircleF(), new RectangleF()).SetName( + "The empty circle converted to a rectangle is the empty float rectangle."); + yield return + new TestCaseData(new CircleF(new Point2(25, 25), 25), + new RectangleF(0, 0, 50, 50)).SetName( + "A non-empty circle converted to a rectangle is the expected float rectangle."); + } + } + + [Test] + [TestCaseSource(nameof(ToRectangleFTestCases))] + public void ToRectangleF(CircleF circle, RectangleF expectedRectangle) + { + var actualRectangle = (RectangleF)circle; + Assert.AreEqual(expectedRectangle, actualRectangle); + } + + public IEnumerable FromRectangleTestCases + { + get + { + yield return + new TestCaseData(new Rectangle(), new CircleF()).SetName( + "The empty rectangle converted to a circle is the empty circle."); + yield return + new TestCaseData(new Rectangle(0, 0, 50, 50), + new CircleF(new Point2(25, 25), 25)).SetName( + "A non-empty rectangle converted to a circle is the expected circle."); + } + } + + [Test] + [TestCaseSource(nameof(FromRectangleTestCases))] + public void FromRectangle(Rectangle rectangle, CircleF expectedCircle) + { + var actualCircle = (CircleF)rectangle; + Assert.AreEqual(expectedCircle, actualCircle); + } + + public IEnumerable FromRectangleFTestCases + { + get + { + yield return + new TestCaseData(new RectangleF(), new CircleF()).SetName( + "The empty rectangle converted to a circle is the empty circle."); + yield return + new TestCaseData(new RectangleF(0, 0, 50, 50), + new CircleF(new Point2(25, 25), 25)).SetName( + "A non-empty rectangle converted to a circle is the expected circle."); + } + } + + [Test] + [TestCaseSource(nameof(FromRectangleFTestCases))] + public void FromRectangleF(RectangleF rectangle, CircleF expectedCircle) + { + var actualCircle = (CircleF)rectangle; + Assert.AreEqual(expectedCircle, actualCircle); + } + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new CircleF(), + string.Format(CultureInfo.CurrentCulture, "Centre: {0}, Radius: {1}", new Point2(), + 0)).SetName( + "The empty circle has the expected string representation using the current culture."); + yield return new TestCaseData(new CircleF(new Point2(5.1f, -5.123f), 5.4f), + string.Format(CultureInfo.CurrentCulture, "Centre: {0}, Radius: {1}", new Point2(5.1f, -5.123f), + 5.4f)).SetName( + "A non-empty circle has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(CircleF circle, string expectedString) + { + var actualString = circle.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/EllipseFTest.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/EllipseFTest.cs new file mode 100644 index 000000000..9b09a1c1d --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/EllipseFTest.cs @@ -0,0 +1,38 @@ +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class EllipseFTest + { + [Test] + [TestCase(-1, -1, Result = false)] + [TestCase(110, 300, Result = true)] + [TestCase(200, 300, Result = true)] + [TestCase(290, 300, Result = true)] + [TestCase(400, 400, Result = false)] + public bool ContainsPoint_Circle(int x, int y) + { + var ellipse = new EllipseF(new Vector2(200.0f, 300.0f), 100.0f, 100.0f); + + return ellipse.Contains(x, y); + } + + [Test] + [TestCase(299, 400, Result = false)] + [TestCase(501, 400, Result = false)] + [TestCase(400, 199, Result = false)] + [TestCase(400, 601, Result = false)] + [TestCase(301, 400, Result = true)] + [TestCase(499, 400, Result = true)] + [TestCase(400, 201, Result = true)] + [TestCase(400, 599, Result = true)] + public bool ContainsPoint_NonCircle(int x, int y) + { + var ellipse = new EllipseF(new Vector2(400.0f, 400.0f), 100.0f, 200.0f); + + return ellipse.Contains(x, y); + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/Point2Tests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/Point2Tests.cs new file mode 100644 index 000000000..25fc8e4a2 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/Point2Tests.cs @@ -0,0 +1,356 @@ +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class Point2Tests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(0, 0).SetName( + "The zero point has the expected coordinates."); + yield return + new TestCaseData(float.MinValue, float.MaxValue).SetName + ( + "A non-zero point has the expected coordinates."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(float x, float y) + { + var point = new Point2(x, y); + Assert.AreEqual(x, point.X); + Assert.AreEqual(y, point.Y); + } + + public IEnumerable CoordinatesTestCases + { + get + { + yield return + new TestCaseData(new Point2(), 0, 0).SetName( + "The zero point has the expected coordinates."); + yield return + new TestCaseData(new Point2(float.MinValue, float.MaxValue), float.MinValue, float.MaxValue).SetName + ( + "A non-zero point has the expected coordinates."); + } + } + + [Test] + [TestCaseSource(nameof(CoordinatesTestCases))] + public void Coordinates(Point2 point, float expectedX, float expecetedY) + { + Assert.AreEqual(expectedX, point.X); + Assert.AreEqual(expecetedY, point.Y); + + point.X = 10; + Assert.AreEqual(10, point.X); + + point.Y = -10.123f; + Assert.AreEqual(-10.123f, point.Y); + } + + public IEnumerable VectorAdditionTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Vector2(), new Point2()).SetName( + "The addition of the zero point and the zero vector is the zero point."); + yield return + new TestCaseData(new Point2(5, 5), new Vector2(15, 15), new Point2(20, 20)).SetName( + "The addition of a non-zero point and a non-zero vector is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(VectorAdditionTestCases))] + public void VectorAddition(Point2 point, Vector2 vector, Point2 expectedPoint) + { + Assert.AreEqual(expectedPoint, point + vector); + Assert.AreEqual(expectedPoint, Point2.Add(point, vector)); + } + + public IEnumerable VectorSubtractionTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Vector2(), new Point2()).SetName( + "The vector subtraction of two zero points is the zero vector."); + yield return + new TestCaseData(new Point2(5, 5), new Vector2(15, 15), new Point2(-10, -10)).SetName( + "The vector subtraction of two non-zero points is the expected vector."); + } + } + + [Test] + [TestCaseSource(nameof(VectorSubtractionTestCases))] + public void VectorSubtraction(Point2 point, Vector2 vector, Point2 expectedPoint) + { + Assert.AreEqual(expectedPoint, point - vector); + Assert.AreEqual(expectedPoint, Point2.Subtract(point, vector)); + } + + + public IEnumerable DisplacementTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), new Vector2()).SetName( + "The displacement between two zero points is the zero vector."); + yield return + new TestCaseData(new Point2(5, 5), new Point2(15, 15), new Vector2(10, 10)).SetName( + "The displacement between two non-zero points is the expected vector."); + } + } + + [Test] + [TestCaseSource(nameof(DisplacementTestCases))] + public void Displacement(Point2 point1, Point2 point2, Vector2 expectedVector) + { + Assert.AreEqual(expectedVector, point2 - point1); + Assert.AreEqual(expectedVector, Point2.Displacement(point2, point1)); + } + + public IEnumerable SizeAdditionTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Size2(), new Point2()).SetName( + "The size addition of the zero point with the empty size is the zero point."); + yield return + new TestCaseData(new Point2(5, 5), new Size2(15, 15), new Point2(20, 20)).SetName( + "The size addition of a non-zero point with a non-empty size is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(SizeAdditionTestCases))] + public void SizeAdditon(Point2 point, Size2 size, Point2 expectedPoint) + { + Assert.AreEqual(expectedPoint, point + size); + Assert.AreEqual(expectedPoint, Point2.Add(point, size)); + } + + public IEnumerable SizeSubtractionTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Size2(), new Point2()).SetName( + "The size substraction of the zero point with the empty size is the zero point."); + yield return + new TestCaseData(new Point2(5, 5), new Size2(15, 15), new Point2(-10, -10)).SetName( + "The size subscration of a non-zero point with a non-empty size is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(SizeSubtractionTestCases))] + public void SizeSubtraction(Point2 point, Size2 size, Point2 expectedPoint) + { + Assert.AreEqual(expectedPoint, point - size); + Assert.AreEqual(expectedPoint, Point2.Subtract(point, size)); + } + + public IEnumerable MinimumTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), new Point2()).SetName( + "The minimum coordinates of two zero points is the coordinates of the zero point."); + yield return + new TestCaseData(new Point2(float.MaxValue, float.MinValue), new Point2(int.MaxValue, int.MinValue), + new Point2(int.MaxValue, float.MinValue)).SetName( + "The minimum coordaintes of two non-zero points is the expected coordinates."); + } + } + + [Test] + [TestCaseSource(nameof(MinimumTestCases))] + public void Minimum(Point2 point1, Point2 point2, Point2 expectedPoint) + { + var actualPoint = Point2.Minimum(point1, point2); + Assert.AreEqual(expectedPoint, actualPoint); + } + + public IEnumerable MaximumTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), new Point2()).SetName( + "The maximum coordinates of two zero points is the coordinates of the zero point."); + yield return + new TestCaseData(new Point2(float.MaxValue, float.MinValue), new Point2(int.MaxValue, int.MinValue), + new Point2(float.MaxValue, int.MinValue)).SetName( + "The maximum coordaintes of two non-zero points is the expected coordinates."); + } + } + + [Test] + [TestCaseSource(nameof(MaximumTestCases))] + public void Maximum(Point2 point1, Point2 point2, Point2 expectedPoint) + { + var actualPoint = Point2.Maximum(point1, point2); + Assert.AreEqual(expectedPoint, actualPoint); + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), true).SetName("Two zero points are equal."); + yield return + new TestCaseData(new Point2(float.MinValue, float.MaxValue), + new Point2(float.MaxValue, float.MinValue), false).SetName( + "Two different non-zero points are not equal."); + yield return + new TestCaseData( + new Point2(float.MinValue, float.MaxValue), new Point2(float.MinValue, float.MaxValue), true) + .SetName( + "Two identical non-zero points are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(Point2 point1, Point2 point2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(point1, point2) == expectedToBeEqual); + Assert.IsTrue(point1 == point2 == expectedToBeEqual); + Assert.IsFalse(point1 == point2 != expectedToBeEqual); + Assert.IsTrue(point1.Equals(point2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(point1.GetHashCode(), point2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new Point2(), null, false).SetName("A point is not equal to a null object."); + yield return + new TestCaseData(new Point2(), new object(), false).SetName( + "A point is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(Point2 point, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(point.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2(), true).SetName( + "Two zero points have the same hash code."); + yield return + new TestCaseData(new Point2(50, 50), new Point2(50, 50), true).SetName( + "Two indentical non-zero points have the same hash code."); + yield return + new TestCaseData(new Point2(0, 0), new Point2(50, 50), false).SetName( + "Two different non-zero points do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(Point2 point1, Point2 point2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = point1.GetHashCode(); + var hashCode2 = point2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable ToVectorTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Vector2()).SetName( + "The zero point converted to a vector is the zero vector."); + yield return + new TestCaseData(new Point2(float.MinValue, float.MaxValue), + new Vector2(float.MinValue, float.MaxValue)).SetName( + "A non-zero point converted to a vector is the expected vector."); + } + } + + [Test] + [TestCaseSource(nameof(ToVectorTestCases))] + public void ToVector(Point2 point, Vector2 expectedVector) + { + var actualVector = (Vector2)point; + Assert.AreEqual(expectedVector, actualVector); + } + + public IEnumerable FromVectorTestCases + { + get + { + yield return + new TestCaseData(new Vector2(), new Point2()).SetName( + "The zero vector converted to a point is the zero point."); + yield return + new TestCaseData(new Vector2(float.MinValue, float.MaxValue), + new Point2(float.MinValue, float.MaxValue)).SetName( + "A non-zero vector converted to a point is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(FromVectorTestCases))] + public void FromVector(Vector2 vector, Point2 expectedPoint) + { + var actualPoint = (Point2)vector; + Assert.AreEqual(expectedPoint, actualPoint); + } + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new Point2(), + string.Format(CultureInfo.CurrentCulture, "({0}, {1})", 0, 0)).SetName( + "The zero point has the expected string representation using the current culture."); + yield return new TestCaseData(new Point2(5.1f, -5.123f), + string.Format(CultureInfo.CurrentCulture, "({0}, {1})", 5.1f, -5.123f)).SetName( + "A non-zero point has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(Point2 point, string expectedString) + { + var actualString = point.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/Ray2DTests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/Ray2DTests.cs new file mode 100644 index 000000000..454b6da81 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/Ray2DTests.cs @@ -0,0 +1,217 @@ +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class Ray2DTests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Vector2()).SetName( + "The degenerate ray has the expected position and direction."); + yield return + new TestCaseData(new Point2(5, 5), new Vector2(15, 15)).SetName( + "A non-degenerate ray has the expected position and direction."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(Point2 position, Vector2 direction) + { + var ray = new Ray2D(position, direction); + Assert.AreEqual(position, ray.Position); + Assert.AreEqual(direction, ray.Direction); + } + + public IEnumerable PositionDirectionTestCases + { + get + { + yield return + new TestCaseData(new Ray2D(), new Point2(), new Vector2()).SetName( + "The degenerate ray has the expected position and direction."); + yield return + new TestCaseData(new Ray2D(new Point2(5, 5), new Vector2(15, 15)), new Point2(5, 5), + new Vector2(15, 15)).SetName + ( + "A non-degenerate ray has the expected position and direction."); + } + } + + [Test] + [TestCaseSource(nameof(PositionDirectionTestCases))] + public void PositionDirection(Ray2D ray, Point2 expectedPosition, Vector2 expecetedDirection) + { + Assert.AreEqual(expectedPosition, ray.Position); + Assert.AreEqual(expecetedDirection, ray.Direction); + + ray.Position.X = 10; + ray.Position.Y = 10; + Assert.AreEqual(new Point2(10, 10), ray.Position); + + ray.Direction.X = -10.123f; + ray.Direction.Y = 10.123f; + Assert.AreEqual(new Vector2(-10.123f, 10.123f), ray.Direction); + } + + public IEnumerable IntersectsBoundingRectangleTestCases + { + get + { + yield return + new TestCaseData(new Ray2D(), new BoundingRectangle(), true, Point2.Zero, Point2.Zero).SetName( + "The degenerate ray intersects the empty bounding box."); + yield return + new TestCaseData(new Ray2D(new Point2(-75, -75), new Vector2(75, -75)), + new BoundingRectangle(new Point2(), new Size2(50, 50)), false, Point2.NaN, Point2.NaN).SetName( + "A non-degenerate ray that does not cross a non-empty bounding box does not intersect the bounding box."); + yield return + new TestCaseData(new Ray2D(new Point2(0, 0), new Vector2(25, 0)), new BoundingRectangle(new Point2(), new Size2(50, 50)), + true, new Point2(0, 0), new Point2(50, 0)).SetName( + "A non-degenerate ray starting from inside a non-empty bounding box intersects the bounding box."); + yield return + new TestCaseData(new Ray2D(new Point2(-100, 0), new Vector2(100, 0)), + new BoundingRectangle(new Point2(), new Size2(50, 50)), + true, new Point2(-50, 0), new Point2(50, 0)).SetName( + "A non-degenerate ray crossing a non-empty bounding box intersects the bounding box."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectsBoundingRectangleTestCases))] + public void IntersectsBoundingRectangle(Ray2D ray, BoundingRectangle boundingRectangle, bool expectedResult, + Point2 firstExpectedIntersectionPoint, Point2 secondExpectedIntersectionPoint) + { + float rayNearDistance, rayFarDistance; + var actualResult = ray.Intersects(boundingRectangle, out rayNearDistance, out rayFarDistance); + Assert.AreEqual(expectedResult, actualResult); + + if (actualResult) + { + var firstActualIntersectionPoint = ray.Position + ray.Direction * rayNearDistance; + Assert.AreEqual(firstExpectedIntersectionPoint, firstActualIntersectionPoint); + var secondActualIntersectionPoint = ray.Position + ray.Direction * rayFarDistance; + Assert.AreEqual(secondExpectedIntersectionPoint, secondActualIntersectionPoint); + } + else + { + Assert.IsTrue(float.IsNaN(rayNearDistance)); + Assert.IsTrue(float.IsNaN(rayFarDistance)); + } + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new Ray2D(), new Ray2D(), true).SetName("Two degenerate rays are equal."); + yield return + new TestCaseData(new Ray2D(new Point2(float.MinValue, float.MaxValue), + new Vector2(float.MaxValue, float.MinValue)), new Ray2D(new Point2(float.MaxValue, float.MinValue), + new Vector2(float.MaxValue, float.MinValue)), false).SetName( + "Two different non-degenerate rays are not equal."); + yield return + new TestCaseData( + new Ray2D(new Point2(float.MinValue, float.MaxValue), + new Vector2(float.MinValue, float.MaxValue)), new Ray2D(new Point2(float.MinValue, float.MaxValue), + new Vector2(float.MinValue, float.MaxValue)), true) + .SetName( + "Two identical non-degenerate rays are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(Ray2D ray1, Ray2D ray2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(ray1, ray2) == expectedToBeEqual); + Assert.IsTrue(ray1 == ray2 == expectedToBeEqual); + Assert.IsFalse(ray1 == ray2 != expectedToBeEqual); + Assert.IsTrue(ray1.Equals(ray2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(ray1.GetHashCode(), ray2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new Ray2D(), null, false).SetName("A ray is not equal to a null object."); + yield return + new TestCaseData(new Ray2D(), new object(), false).SetName( + "A ray is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(Ray2D ray, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(ray.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new Ray2D(), new Ray2D(), true).SetName( + "Two degenerate rays have the same hash code."); + yield return + new TestCaseData(new Ray2D(new Point2(50, 50), new Vector2(50, 50)), + new Ray2D(new Point2(50, 50), new Vector2(50, 50)), true).SetName( + "Two indentical non-zero points have the same hash code."); + yield return + new TestCaseData(new Ray2D(new Point2(0, 0), new Vector2(50, 50)), + new Ray2D(new Point2(50, 50), new Vector2(50, 50)), false).SetName( + "Two different non-zero points do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(Ray2D ray1, Ray2D ray2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = ray1.GetHashCode(); + var hashCode2 = ray2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new Ray2D(), + string.Format(CultureInfo.CurrentCulture, "Position: {0}, Direction: {1}", new Point2(), + new Vector2())).SetName( + "The degenerate ray has the expected string representation using the current culture."); + yield return new TestCaseData(new Ray2D(new Point2(5.1f, -5.123f), new Vector2(0, 1)), + string.Format(CultureInfo.CurrentCulture, "Position: {0}, Direction: {1}", new Point2(5.1f, -5.123f), + new Vector2(0, 1))).SetName( + "A non-degenerate ray has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(Ray2D ray, string expectedString) + { + var actualString = ray.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/RectangleFTests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/RectangleFTests.cs new file mode 100644 index 000000000..51d6eb24c --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/RectangleFTests.cs @@ -0,0 +1,45 @@ +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class RectangleFTests + { + [Test] + public void RectangleF_Intersects_Test() + { + var rect1 = new RectangleF(0, 0, 32, 32); + var rect2 = new RectangleF(32, 32, 32, 32); + + Assert.IsFalse(rect1.Intersects(rect2)); + } + + [Test] + public void Rectangle_Intersects_Test() + { + var rect1 = new Rectangle(0, 0, 32, 32); + var rect2 = new Rectangle(32, 32, 32, 32); + + Assert.IsFalse(rect1.Intersects(rect2)); + } + + [Test] + public void PassVector2AsConstructorParameter_Test() + { + var rect1 = new RectangleF(new Vector2(0, 0), new Size2(12.34f, 56.78f)); + var rect2 = new RectangleF(new Vector2(0, 0), new Vector2(12.34f, 56.78f)); + + Assert.AreEqual(rect1, rect2); + } + + [Test] + public void PassPointAsConstructorParameter_Test() + { + var rect1 = new RectangleF(new Vector2(0, 0), new Size2(12, 56)); + var rect2 = new RectangleF(new Vector2(0, 0), new Size2(12, 56)); + + Assert.AreEqual(rect1, rect2); + } + } +} \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/Segment2DTests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/Segment2DTests.cs new file mode 100644 index 000000000..ead57b2af --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/Segment2DTests.cs @@ -0,0 +1,251 @@ +using System.Collections.Generic; +using System.Globalization; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + public class Segment2DTests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Point2()).SetName( + "The empty segment has expected starting and ending points."); + yield return + new TestCaseData( + new Point2(float.MaxValue, float.MinValue), + new Point2(int.MaxValue, int.MinValue)).SetName( + "A non-empty segment has the expected starting and ending points."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(Point2 startingPoint, Point2 endingPoint) + { + var segment = new Segment2D(startingPoint, endingPoint); + Assert.AreEqual(startingPoint, segment.Start); + Assert.AreEqual(endingPoint, segment.End); + } + + public IEnumerable ClosestPointTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), new Point2(), new Point2()).SetName( + "The closest point on the empty segment to the zero point is the zero point."); + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(200, 0)), new Point2(-100, 200), + new Point2(0, 0)).SetName( + "The closest point on a non-empty segment to a point which is projected beyond the start of the segment is the segment's starting point.") + ; + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(200, 0)), new Point2(400, 200), + new Point2(200, 0)).SetName( + "The closest point on a non-empty segment to a point which is projected beyond the end of the segment is the segment's ending point.") + ; + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(200, 0)), new Point2(100, 200), + new Point2(100, 0)).SetName( + "The closest point on a non-empty segment to a point which is projected inside the segment is the projected point.") + ; + } + } + + [Test] + [TestCaseSource(nameof(ClosestPointTestCases))] + public void ClosestPoint(Segment2D segment, Point2 point, Point2 expectedClosestPoint) + { + var actualClosestPoint = segment.ClosestPointTo(point); + Assert.AreEqual(expectedClosestPoint, actualClosestPoint); + } + + public IEnumerable SquaredDistanceToPointTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), new Point2(), 0).SetName( + "The squared distance of the zero point to the empty segment is 0."); + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(20, 0)), new Point2(-10, 20), 500) + .SetName( + "The squared distance of a point projected beyond the start of a non-empty segment is the squared distance from the segment's starting point to the point.") + ; + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(20, 0)), new Point2(40, 20), 400) + .SetName( + "The squared distance of a point projected beyond the end of a non-empty segment is the squared distance from the segment's ending point to the point.") + ; + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(20, 0)), new Point2(10, 25), 625).SetName + ( + "The squared distance of a point projected inside a non-empty segment is the squared distance from the projected point to the point.") + ; + } + } + + [Test] + [TestCaseSource(nameof(SquaredDistanceToPointTestCases))] + public void SquaredDistanceToPoint(Segment2D segment, Point2 point, + float expectedDistance) + { + var actualDistance = segment.SquaredDistanceTo(point); + Assert.AreEqual(expectedDistance, actualDistance); + } + + public IEnumerable IntersectsBoundingRectangleTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), new BoundingRectangle(), true, Point2.Zero).SetName( + "The empty segment intersects the empty bounding box."); + yield return + new TestCaseData(new Segment2D(new Point2(-75, -75), new Point2(75, -75)), + new BoundingRectangle(new Point2(), new Size2(50, 50)), false, Point2.NaN).SetName( + "A non-empty segment outside a non-empty bounding box does not intersect the bounding box."); + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(25, 0)), new BoundingRectangle(new Point2(), new Size2(50, 50)), + true, new Point2(0, 0)).SetName( + "A non-empty segment inside a non-empty bounding box intersects the bounding box."); + yield return + new TestCaseData(new Segment2D(new Point2(-100, 0), new Point2(100, 0)), + new BoundingRectangle(new Point2(), new Size2(50, 50)), + true, new Point2(-50, 0)).SetName( + "A non-empty segment crossing a non-empty bounding box intersects the bounding box."); + } + } + + [Test] + [TestCaseSource(nameof(IntersectsBoundingRectangleTestCases))] + public void IntersectsBoundingRectangle(Segment2D segment, BoundingRectangle boundingRectangle, bool expectedResult, + Point2 expectedIntersectionPoint) + { + Point2 actualIntersectionPoint; + var actualResult = segment.Intersects(boundingRectangle, out actualIntersectionPoint); + Assert.AreEqual(expectedResult, actualResult); + + if (actualResult) + { + Assert.AreEqual(expectedIntersectionPoint, actualIntersectionPoint); + } + else + { + Assert.IsTrue(float.IsNaN(actualIntersectionPoint.X)); + Assert.IsTrue(float.IsNaN(actualIntersectionPoint.Y)); + } + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), new Segment2D(), true).SetName("Empty segments are equal.") + ; + yield return + new TestCaseData( + new Segment2D(new Point2(0, 0), new Point2(float.MaxValue, float.MinValue)), + new Segment2D(new Point2(0, 0), + new Point2(float.MinValue, float.MaxValue)), false).SetName( + "Two different non-empty segments are not equal."); + yield return + new TestCaseData( + new Segment2D(new Point2(0, 0), new Point2(float.MinValue, float.MaxValue)), + new Segment2D(new Point2(0, 0), + new Point2(float.MinValue, float.MaxValue)), true).SetName( + "Two identical non-empty segments are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(Segment2D segment1, Segment2D segment2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(segment1, segment2) == expectedToBeEqual); + Assert.IsTrue(segment1 == segment2 == expectedToBeEqual); + Assert.IsFalse(segment1 == segment2 != expectedToBeEqual); + Assert.IsTrue(segment1.Equals(segment2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(segment1.GetHashCode(), segment2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), null, false).SetName("A segment is not equal to a null object."); + yield return + new TestCaseData(new Segment2D(), new object(), false).SetName( + "A segment is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(Segment2D segment, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(segment.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new Segment2D(), new Segment2D(), true).SetName( + "Two empty segments have the same hash code."); + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(50, 50)), + new Segment2D(new Point2(0, 0), new Point2(50, 50)), true).SetName( + "Two indentical non-empty segments have the same hash code."); + yield return + new TestCaseData(new Segment2D(new Point2(0, 0), new Point2(50, 50)), + new Segment2D(new Point2(50, 50), new Point2(50, 50)), false).SetName( + "Two different non-empty segments do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(Segment2D segment1, Segment2D segment2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = segment1.GetHashCode(); + var hashCode2 = segment2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new Segment2D(), + string.Format(CultureInfo.CurrentCulture, "{0} -> {1}", new Point2(), + new Point2())).SetName( + "The empty segment has the expected string representation using the current culture."); + yield return new TestCaseData(new Segment2D(new Point2(5.1f, -5.123f), new Point2(5.4f, -5.4123f)), + string.Format(CultureInfo.CurrentCulture, "{0} -> {1}", new Point2(5.1f, -5.123f), + new Point2(5.4f, -5.4123f))).SetName( + "A non-empty segment has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(Segment2D segment, string expectedString) + { + var actualString = segment.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/Tests/MonoGame.Extended.Tests/Primitives/Size2Tests.cs b/Source/Tests/MonoGame.Extended.Tests/Primitives/Size2Tests.cs new file mode 100644 index 000000000..46efd51a7 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/Primitives/Size2Tests.cs @@ -0,0 +1,304 @@ +using System.Collections.Generic; +using System.Globalization; +using Microsoft.Xna.Framework; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests.Primitives +{ + [TestFixture] + public class Size2Tests + { + public IEnumerable ConstructorTestCases + { + get + { + yield return + new TestCaseData(0, 0).SetName( + "The empty size has the expected dimensions."); + yield return + new TestCaseData(float.MinValue, float.MaxValue).SetName + ( + "A non-empty size has the expected dimensions."); + } + } + + [Test] + [TestCaseSource(nameof(ConstructorTestCases))] + public void Constructor(float width, float height) + { + var size = new Size2(width, height); + Assert.AreEqual(width, size.Width); + Assert.AreEqual(height, size.Height); + } + + public IEnumerable DimensionsTestCases + { + get + { + yield return + new TestCaseData(new Size2(), 0, 0).SetName( + "The empty size has the expected dimensions."); + yield return + new TestCaseData(new Size2(float.MinValue, float.MaxValue), float.MinValue, float.MaxValue).SetName + ( + "A non-empty size has the expected dimensions."); + } + } + + [Test] + [TestCaseSource(nameof(DimensionsTestCases))] + public void Dimensions(Size2 size, float expectedWidth, float expecetedHeight) + { + Assert.AreEqual(expectedWidth, size.Width); + Assert.AreEqual(expecetedHeight, size.Height); + + size.Width = 10; + Assert.AreEqual(10, size.Width); + + size.Height = -10.123f; + Assert.AreEqual(-10.123f, size.Height); + } + + public IEnumerable AdditionTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Size2(), new Size2()).SetName( + "The addition of two empty sizes is the empty size."); + yield return + new TestCaseData(new Size2(5, 5), new Size2(15, 15), new Size2(20, 20)).SetName( + "The addition of two non-empty sizes is the expected size."); + } + } + + [Test] + [TestCaseSource(nameof(AdditionTestCases))] + public void Addition(Size2 size1, Size2 size2, Size2 expectedSize) + { + Assert.AreEqual(expectedSize, size1 + size2); + Assert.AreEqual(expectedSize, Size2.Add(size1, size2)); + } + + public IEnumerable SubtractionTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Size2(), new Size2()).SetName( + "The subtraction of two empty sizes is the empty size."); + yield return + new TestCaseData(new Size2(5, 5), new Size2(15, 15), new Size2(-10, -10)).SetName( + "The subtraction of two non-empty sizes is the expected size."); + } + } + + [Test] + [TestCaseSource(nameof(SubtractionTestCases))] + public void Subtraction(Size2 size1, Size2 size2, Size2 expectedSize) + { + Assert.AreEqual(expectedSize, size1 - size2); + Assert.AreEqual(expectedSize, Size2.Subtract(size1, size2)); + } + + public IEnumerable EqualityTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Size2(), true).SetName("Two empty sizes are equal."); + yield return + new TestCaseData(new Size2(float.MinValue, float.MaxValue), + new Size2(float.MaxValue, float.MinValue), false).SetName( + "Two different non-empty sizes are not equal."); + yield return + new TestCaseData( + new Size2(float.MinValue, float.MaxValue), new Size2(float.MinValue, float.MaxValue), true) + .SetName( + "Two identical non-empty sizes are equal."); + } + } + + [Test] + [TestCaseSource(nameof(EqualityTestCases))] + public void Equality(Size2 size1, Size2 size2, bool expectedToBeEqual) + { + Assert.IsTrue(Equals(size1, size2) == expectedToBeEqual); + Assert.IsTrue(size1 == size2 == expectedToBeEqual); + Assert.IsFalse(size1 == size2 != expectedToBeEqual); + Assert.IsTrue(size1.Equals(size2) == expectedToBeEqual); + + if (expectedToBeEqual) + Assert.AreEqual(size1.GetHashCode(), size2.GetHashCode()); + } + + public IEnumerable InequalityTestCases + { + get + { + yield return + new TestCaseData(new Size2(), null, false).SetName("A size is not equal to a null object."); + yield return + new TestCaseData(new Size2(), new object(), false).SetName( + "A size is not equal to an instantiated object."); + } + } + + [Test] + [TestCaseSource(nameof(InequalityTestCases))] + public void Inequality(Size2 size, object obj, bool expectedToBeEqual) + { + Assert.IsTrue(size.Equals(obj) == expectedToBeEqual); + } + + public IEnumerable HashCodeTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Size2(), true).SetName( + "Two empty sizes have the same hash code."); + yield return + new TestCaseData(new Size2(50, 50), new Size2(50, 50), true).SetName( + "Two indentical non-empty sizes have the same hash code."); + yield return + new TestCaseData(new Size2(0, 0), new Size2(50, 50), false).SetName( + "Two different non-empty sizes do not have the same hash code."); + } + } + + [Test] + [TestCaseSource(nameof(HashCodeTestCases))] + public void HashCode(Size2 size1, Size2 size2, bool expectedThatHashCodesAreEqual) + { + var hashCode1 = size1.GetHashCode(); + var hashCode2 = size2.GetHashCode(); + if (expectedThatHashCodesAreEqual) + Assert.AreEqual(hashCode1, hashCode2); + else + Assert.AreNotEqual(hashCode1, hashCode2); + } + + public IEnumerable ToPointTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Point2()).SetName("The empty size converted to a point is the zero point."); + yield return + new TestCaseData(new Size2(float.MinValue, float.MaxValue), new Point2(float.MinValue, float.MaxValue)).SetName( + "A non-empty size converted to a point is the expected point."); + } + } + + [Test] + [TestCaseSource(nameof(ToPointTestCases))] + public void ToPoint(Size2 size, Point2 expectedPoint) + { + var actualPoint = (Point2)size; + Assert.AreEqual(expectedPoint, actualPoint); + } + + public IEnumerable FromPointTestCases + { + get + { + yield return + new TestCaseData(new Point2(), new Size2()).SetName("The zero point converted to a size is the empty size."); + yield return + new TestCaseData(new Point2(float.MinValue, float.MaxValue), new Size2(float.MinValue, float.MaxValue)).SetName( + "A non-zero point converted to a size is the expected size."); + } + } + + [Test] + [TestCaseSource(nameof(FromPointTestCases))] + public void FromPoint(Point2 point, Size2 expectedSize) + { + var actualSize = (Size2)point; + Assert.AreEqual(expectedSize, actualSize); + } + + public IEnumerable ToVectorTestCases + { + get + { + yield return + new TestCaseData(new Size2(), new Vector2()).SetName("The empty size converted to a vector is the zero vector."); + yield return + new TestCaseData(new Size2(float.MinValue, float.MaxValue), new Vector2(float.MinValue, float.MaxValue)).SetName( + "A non-empty size converted to a vector is the expected vector."); + } + } + + [Test] + [TestCaseSource(nameof(ToVectorTestCases))] + public void ToVector(Size2 size, Vector2 expectedVector) + { + var actualVector = (Vector2)size; + Assert.AreEqual(expectedVector, actualVector); + } + + public IEnumerable FromVectorTestCases + { + get + { + yield return + new TestCaseData(new Vector2(), new Size2()).SetName("The zero vector converted to a size is the empty size."); + yield return + new TestCaseData(new Vector2(float.MinValue, float.MaxValue), new Size2(float.MinValue, float.MaxValue)).SetName( + "A non-zero vector converted to a size is the expected size."); + } + } + + [Test] + [TestCaseSource(nameof(FromVectorTestCases))] + public void FromVector(Vector2 vector, Size2 expectedSize) + { + var actualSize = (Size2)vector; + Assert.AreEqual(expectedSize, actualSize); + } + + //public IEnumerable FromSizeTestCases + //{ + // get + // { + // yield return + // new TestCaseData(new Size2(), new Size2()).SetName("The empty size converted to a size is the empty size."); + // yield return + // new TestCaseData(new Size2(int.MinValue, int.MaxValue), new Size2(int.MinValue, int.MaxValue)).SetName( + // "A non-zero size converted to a size is the expected size."); + // } + //} + + //[Test] + //[TestCaseSource(nameof(FromSizeTestCases))] + //public void FromSize(Size2 size, Size2 expectedSize) + //{ + // var actualSize = (Size2)size; + // Assert.AreEqual(expectedSize, actualSize); + //} + + public IEnumerable StringCases + { + get + { + yield return + new TestCaseData(new Size2(), + string.Format(CultureInfo.CurrentCulture, "Width: {0}, Height: {1}", 0, 0)).SetName( + "The empty size has the expected string representation using the current culture."); + yield return new TestCaseData(new Size2(5.1f, -5.123f), + string.Format(CultureInfo.CurrentCulture, "Width: {0}, Height: {1}", 5.1f, -5.123f)).SetName( + "A non-empty size has the expected string representation using the current culture."); + } + } + + [Test] + [TestCaseSource(nameof(StringCases))] + public void String(Size2 size, string expectedString) + { + var actualString = size.ToString(); + Assert.AreEqual(expectedString, actualString); + } + } +} diff --git a/Source/MonoGame.Extended.Tests/Properties/AssemblyInfo.cs b/Source/Tests/MonoGame.Extended.Tests/Properties/AssemblyInfo.cs similarity index 100% rename from Source/MonoGame.Extended.Tests/Properties/AssemblyInfo.cs rename to Source/Tests/MonoGame.Extended.Tests/Properties/AssemblyInfo.cs diff --git a/Source/Tests/MonoGame.Extended.Tests/RangeTests.cs b/Source/Tests/MonoGame.Extended.Tests/RangeTests.cs new file mode 100644 index 000000000..4a6ef0d80 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/RangeTests.cs @@ -0,0 +1,102 @@ +using System; +using NUnit.Framework; + +namespace MonoGame.Extended.Tests +{ + [TestFixture] + public class RangeTests + { + [Test] + public void ConstructorTest() + { + //can pass min < max + Assert.DoesNotThrow(() => new Range(10, 100)); + //can't pass min > max + Assert.Throws(() => new Range(100, 10)); + //can pass min == max + Assert.DoesNotThrow(() => new Range(10, 10)); + } + + [Test] + public void DegenerateTest() + { + var proper = new Range(0, 1); + Assert.IsTrue(proper.IsProper); + Assert.IsFalse(proper.IsDegenerate); + + var degenerate = new Range(1, 1); + Assert.IsFalse(degenerate.IsProper); + Assert.IsTrue(degenerate.IsDegenerate); + } + + [Test] + public void IntegerTest() + { + var range = new Range(10, 100); + + Assert.AreEqual(range.Min, 10); + Assert.AreEqual(range.Max, 100); + + for (var i = 10; i <= 100; i++) + { + Assert.IsTrue(range.IsInBetween(i)); + } + + Assert.IsFalse(range.IsInBetween(9)); + Assert.IsFalse(range.IsInBetween(101)); + Assert.IsFalse(range.IsInBetween(10, true)); + Assert.IsFalse(range.IsInBetween(100, maxValueExclusive: true)); + } + + [Test] + public void FloatTest() + { + var range = new Range(0f, 1f); + + Assert.AreEqual(range.Min, 0f); + Assert.AreEqual(range.Max, 1f); + + for (float i = 0; i <= 1f; i += 0.001f) + { + Assert.IsTrue(range.IsInBetween(i)); + } + + Assert.IsFalse(range.IsInBetween(-float.Epsilon)); + Assert.IsFalse(range.IsInBetween(1.00001f)); + + Assert.IsFalse(range.IsInBetween(0f, true)); + Assert.IsFalse(range.IsInBetween(1f, maxValueExclusive: true)); + } + + [Test] + public void OperatorTest() + { + var rangeA = new Range(0, 1); + var rangeB = new Range(0, 1); + var rangeC = new Range(1, 2); + var rangeD = new Range(0, 1); + + Assert.IsTrue(rangeA == rangeB); + Assert.IsFalse(rangeA == rangeC); + + Assert.IsFalse(rangeA != rangeB); + Assert.IsTrue(rangeA != rangeC); + + Assert.IsTrue(rangeA.Equals(rangeB)); + Assert.IsFalse(rangeA.Equals(rangeC)); + Assert.IsFalse(rangeA.Equals(rangeD)); + + Range implict = 1; + Assert.AreEqual(implict.Max, 1); + Assert.AreEqual(implict.Min, 1); + } + + [Test] + public void ToStringTest() + { + var range = new Range(0, 1); + + Assert.AreEqual(range.ToString(), "Range [0 1]"); + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs b/Source/Tests/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs similarity index 81% rename from Source/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs index 9ea7b8efb..e41ffe53c 100644 --- a/Source/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs @@ -18,7 +18,7 @@ public void Polygon_Contains_Point_Test() new Vector2(0, 10) }; - var polygon = new PolygonF(vertices); + var polygon = new Polygon(vertices); Assert.IsTrue(polygon.Contains(new Vector2(5, 5))); Assert.IsTrue(polygon.Contains(new Vector2(0.01f, 0.01f))); @@ -38,7 +38,7 @@ public void Polygon_Transform_Translation_Test() new Vector2(0, 10) }; - var polygon = new PolygonF(vertices); + var polygon = new Polygon(vertices); polygon.Offset(new Vector2(2, 3)); Assert.AreEqual(new Vector2(2, 3), polygon.Vertices[0]); @@ -57,13 +57,13 @@ public void Polygon_Transform_Rotation_Test() new Vector2(-5, 10) }; - var polygon = new PolygonF(vertices); + var polygon = new Polygon(vertices); polygon.Rotate(MathHelper.ToRadians(90)); const float tolerance = 0.01f; - Assert.IsTrue(new Vector2(5, -5).EqualsWithTolerance(polygon.Vertices[0], tolerance)); - Assert.IsTrue(new Vector2(-10, 5).EqualsWithTolerance(polygon.Vertices[1], tolerance)); - Assert.IsTrue(new Vector2(-10, -5).EqualsWithTolerance(polygon.Vertices[2], tolerance)); + Assert.IsTrue(new Vector2(5, -5).EqualsWithTolerence(polygon.Vertices[0], tolerance)); + Assert.IsTrue(new Vector2(-10, 5).EqualsWithTolerence(polygon.Vertices[1], tolerance)); + Assert.IsTrue(new Vector2(-10, -5).EqualsWithTolerence(polygon.Vertices[2], tolerance)); } [Test] @@ -76,13 +76,13 @@ public void Polygon_Transform_Scale_Test() new Vector2(-1, 1) }; - var polygon = new PolygonF(vertices); + var polygon = new Polygon(vertices); polygon.Scale(new Vector2(1, -0.5f)); const float tolerance = 0.01f; - Assert.IsTrue(new Vector2(0, -0.5f).EqualsWithTolerance(polygon.Vertices[0], tolerance), "0"); - Assert.IsTrue(new Vector2(2f, 0.5f).EqualsWithTolerance(polygon.Vertices[1], tolerance), "1"); - Assert.IsTrue(new Vector2(-2f, 0.5f).EqualsWithTolerance(polygon.Vertices[2], tolerance), "2"); + Assert.IsTrue(new Vector2(0, -0.5f).EqualsWithTolerence(polygon.Vertices[0], tolerance), "0"); + Assert.IsTrue(new Vector2(2f, 0.5f).EqualsWithTolerence(polygon.Vertices[1], tolerance), "1"); + Assert.IsTrue(new Vector2(-2f, 0.5f).EqualsWithTolerence(polygon.Vertices[2], tolerance), "2"); } } } \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tests/Sprites/SpriteTests.cs b/Source/Tests/MonoGame.Extended.Tests/Sprites/SpriteTests.cs similarity index 94% rename from Source/MonoGame.Extended.Tests/Sprites/SpriteTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Sprites/SpriteTests.cs index 78a1f8281..3b56f5947 100644 --- a/Source/MonoGame.Extended.Tests/Sprites/SpriteTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/Sprites/SpriteTests.cs @@ -1,6 +1,5 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Shapes; using MonoGame.Extended.Sprites; using MonoGame.Extended.TextureAtlases; using NSubstitute; @@ -21,7 +20,7 @@ public void Sprite_BoundingRectangleAfterPosition_Test() Position = new Vector2(400, 240) }; - Assert.AreEqual(new RectangleF(375, 140, 50, 200), sprite.GetBoundingRectangle()); + Assert.AreEqual(new RectangleF(375, 140, 50, 200), sprite.BoundingRectangle); } [Test] @@ -34,7 +33,7 @@ public void Sprite_BoundingRectangleAfterOrigin_Test() OriginNormalized = new Vector2(1.0f, 1.0f) }; - Assert.AreEqual(new RectangleF(-50, -200, 50, 200), sprite.GetBoundingRectangle()); + Assert.AreEqual(new RectangleF(-50, -200, 50, 200), sprite.BoundingRectangle); } [Test] @@ -47,7 +46,7 @@ public void Sprite_BoundingRectangleAfterScale_Test() Scale = Vector2.One * 2.0f }; - Assert.AreEqual(new RectangleF(-50, -200, 100, 400), sprite.GetBoundingRectangle()); + Assert.AreEqual(new RectangleF(-50, -200, 100, 400), sprite.BoundingRectangle); } [Test] @@ -60,7 +59,7 @@ public void Sprite_BoundingRectangleAfterRotation_Test() Rotation = MathHelper.ToRadians(90) }; - Assert.AreEqual(new RectangleF(-100, -25, 200, 50), sprite.GetBoundingRectangle()); + AssertExtensions.AreApproximatelyEqual(new RectangleF(-100, -25, 200, 50), sprite.BoundingRectangle); } [Test] diff --git a/Source/Tests/MonoGame.Extended.Tests/TestGraphicsDevice.cs b/Source/Tests/MonoGame.Extended.Tests/TestGraphicsDevice.cs new file mode 100644 index 000000000..8a8741b19 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/TestGraphicsDevice.cs @@ -0,0 +1,12 @@ +using Microsoft.Xna.Framework.Graphics; + +namespace MonoGame.Extended.Tests +{ + public class TestGraphicsDevice : GraphicsDevice + { + public TestGraphicsDevice() + : base(GraphicsAdapter.DefaultAdapter, GraphicsProfile.Reach, new PresentationParameters()) + { + } + } +} \ No newline at end of file diff --git a/Source/MonoGame.Extended.Tests/TestHelper.cs b/Source/Tests/MonoGame.Extended.Tests/TestHelper.cs similarity index 76% rename from Source/MonoGame.Extended.Tests/TestHelper.cs rename to Source/Tests/MonoGame.Extended.Tests/TestHelper.cs index d5a66cba8..459113f76 100644 --- a/Source/MonoGame.Extended.Tests/TestHelper.cs +++ b/Source/Tests/MonoGame.Extended.Tests/TestHelper.cs @@ -15,7 +15,10 @@ public static void AreEqual(Vector3 a, Vector3 b, double delta) public static GraphicsDevice CreateGraphicsDevice() { - return new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.HiDef, new PresentationParameters()) + return new GraphicsDevice( + GraphicsAdapter.DefaultAdapter, + GraphicsProfile.HiDef, + new PresentationParameters()) { Viewport = new Viewport(0, 0, 800, 480) }; diff --git a/Source/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs b/Source/Tests/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs similarity index 88% rename from Source/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs rename to Source/Tests/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs index b73f2b974..eefc93e8c 100644 --- a/Source/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/TextureAtlases/TextureAtlasTests.cs @@ -14,7 +14,7 @@ public class TextureAtlasTests public void TextureAtlas_CreateRegion_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); var region = atlas.CreateRegion("region0", 10, 20, 30, 40); @@ -29,7 +29,7 @@ public void TextureAtlas_CreateRegion_Test() public void TextureAtlas_GetRegionsByIndex_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); var region0 = atlas.CreateRegion("region0", 10, 20, 30, 40); var region1 = atlas.CreateRegion("region1", 50, 60, 35, 45); @@ -45,7 +45,7 @@ public void TextureAtlas_GetRegionsByIndex_Test() public void TextureAtlas_GetRegionsByName_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); var region0 = atlas.CreateRegion("region0", 10, 20, 30, 40); var region1 = atlas.CreateRegion("region1", 50, 60, 35, 45); @@ -60,7 +60,7 @@ public void TextureAtlas_GetRegionsByName_Test() public void TextureAtlas_RemoveRegions_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); var region0 = atlas.CreateRegion("region0", 10, 20, 30, 40); var region1 = atlas.CreateRegion("region1", 50, 60, 35, 45); @@ -87,7 +87,7 @@ public void TextureAtlas_RemoveRegions_Test() public void TextureAtlas_CreateRegionThatAlreadyExistsThrowsException_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); atlas.CreateRegion("region0", 10, 20, 30, 40); Assert.Throws(() => atlas.CreateRegion("region0", 50, 60, 35, 45)); @@ -97,7 +97,7 @@ public void TextureAtlas_CreateRegionThatAlreadyExistsThrowsException_Test() public void TextureAtlas_GetRegion_InvalidIndexThrowsException_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); atlas.CreateRegion("region0", 10, 20, 30, 40); Assert.Throws(() => atlas.GetRegion(-1)); @@ -107,7 +107,7 @@ public void TextureAtlas_GetRegion_InvalidIndexThrowsException_Test() public void TextureAtlas_GetRegion_InvalidNameThrowsException_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); atlas.CreateRegion("region0", 10, 20, 30, 40); Assert.Throws(() => atlas.GetRegion("region1")); @@ -117,7 +117,7 @@ public void TextureAtlas_GetRegion_InvalidNameThrowsException_Test() public void TextureAtlas_EnumerateRegions_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 100, 200); - var atlas = new TextureAtlas(texture); + var atlas = new TextureAtlas(null, texture); var regions = new TextureRegion2D[3]; regions[0] = atlas.CreateRegion("region0", 10, 20, 30, 40); @@ -136,7 +136,7 @@ public void TextureAtlas_EnumerateRegions_Test() public void TextureAtlas_Create_WithDefaultParameters_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 50, 100) {Name = "testTexture"}; - var atlas = TextureAtlas.Create(texture, 25, 50); + var atlas = TextureAtlas.Create(null, texture, 25, 50); Assert.AreEqual(4, atlas.RegionCount); Assert.IsTrue(atlas.Regions.All(i => i.Width == 25)); @@ -149,7 +149,7 @@ public void TextureAtlas_Create_WithDefaultParameters_Test() public void TextureAtlas_Create_WithMaxRegionCount_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 64, 64); - var atlas = TextureAtlas.Create(texture, 32, 32, maxRegionCount: 3); + var atlas = TextureAtlas.Create(null, texture, 32, 32, maxRegionCount: 3); Assert.AreEqual(3, atlas.RegionCount); } @@ -158,7 +158,7 @@ public void TextureAtlas_Create_WithMaxRegionCount_Test() public void TextureAtlas_Create_WithMargin_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 24, 24); - var atlas = TextureAtlas.Create(texture, 10, 10, margin: 2); + var atlas = TextureAtlas.Create(null, texture, 10, 10, margin: 2); Assert.AreEqual(4, atlas.RegionCount); Assert.IsTrue(atlas.Regions.All(i => i.Width == 10 && i.Height == 10)); @@ -172,7 +172,7 @@ public void TextureAtlas_Create_WithMargin_Test() public void TextureAtlas_Create_WithSpacing_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 24, 24); - var atlas = TextureAtlas.Create(texture, 10, 10, spacing: 2); + var atlas = TextureAtlas.Create(null, texture, 10, 10, spacing: 2); Assert.AreEqual(4, atlas.RegionCount); Assert.IsTrue(atlas.Regions.All(i => i.Width == 10 && i.Height == 10)); @@ -186,7 +186,7 @@ public void TextureAtlas_Create_WithSpacing_Test() public void TextureAtlas_Create_WithMarginAndSpacing_Test() { var texture = new Texture2D(TestHelper.CreateGraphicsDevice(), 28, 28); - var atlas = TextureAtlas.Create(texture, 10, 10, margin: 3, spacing: 2); + var atlas = TextureAtlas.Create(null, texture, 10, 10, margin: 3, spacing: 2); Assert.AreEqual(4, atlas.RegionCount); Assert.IsTrue(atlas.Regions.All(i => i.Width == 10 && i.Height == 10)); diff --git a/Source/MonoGame.Extended.Tests/TextureAtlases/TextureRegion2DTests.cs b/Source/Tests/MonoGame.Extended.Tests/TextureAtlases/TextureRegion2DTests.cs similarity index 100% rename from Source/MonoGame.Extended.Tests/TextureAtlases/TextureRegion2DTests.cs rename to Source/Tests/MonoGame.Extended.Tests/TextureAtlases/TextureRegion2DTests.cs diff --git a/Source/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs b/Source/Tests/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs similarity index 85% rename from Source/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs rename to Source/Tests/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs index 851bf0801..a6ef477f3 100644 --- a/Source/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Microsoft.Xna.Framework; using NUnit.Framework; @@ -14,7 +15,7 @@ public void Vector2_EqualsWithTolerence_Test() var b = new Vector2(1.0000001f, 1.0000001f); Assert.IsFalse(a.Equals(b)); - Assert.IsTrue(a.EqualsWithTolerance(b)); + Assert.IsTrue(a.EqualsWithTolerence(b)); } [Test] @@ -23,18 +24,19 @@ public void Vector2_NormalizedCopy_Test() var a = new Vector2(5, -10); var b = a.NormalizedCopy(); - Assert.IsTrue(new Vector2(0.4472136f, -0.8944272f).EqualsWithTolerance(b)); + Assert.IsTrue(new Vector2(0.4472136f, -0.8944272f).EqualsWithTolerence(b)); } [Test] public void Vector2_Perpendicular_Test() { + // http://mathworld.wolfram.com/PerpendicularVector.html var a = new Vector2(5, -10); var b = a.PerpendicularClockwise(); var c = a.PerpendicularCounterClockwise(); - Assert.AreEqual(new Vector2(10, 5), b); - Assert.AreEqual(new Vector2(-10, -5), c); + Assert.AreEqual(new Vector2(-10, -5), b); + Assert.AreEqual(new Vector2(10, 5), c); } [Test] @@ -43,7 +45,7 @@ public void Vector2_Rotate_90_Degrees_Test() var a = new Vector2(0, -10); var b = a.Rotate(MathHelper.ToRadians(90)); - Assert.IsTrue(new Vector2(10, 0).EqualsWithTolerance(b)); + Assert.IsTrue(new Vector2(10, 0).EqualsWithTolerence(b)); } [Test] @@ -52,7 +54,7 @@ public void Vector2_Rotate_360_Degrees_Test() var a = new Vector2(0, 10); var b = a.Rotate(MathHelper.ToRadians(360)); - Assert.IsTrue(new Vector2(0, 10).EqualsWithTolerance(b)); + Assert.IsTrue(new Vector2(0, 10).EqualsWithTolerence(b)); } [Test] @@ -61,7 +63,7 @@ public void Vector2_Rotate_45_Degrees_Test() var a = new Vector2(0, -10); var b = a.Rotate(MathHelper.ToRadians(45)); - Assert.IsTrue(new Vector2(7.071068f, -7.071068f).EqualsWithTolerance(b)); + Assert.IsTrue(new Vector2(7.071068f, -7.071068f).EqualsWithTolerence(b)); } [Test] diff --git a/Source/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs b/Source/Tests/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs similarity index 92% rename from Source/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs rename to Source/Tests/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs index 1844e119d..50d099ecd 100644 --- a/Source/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs +++ b/Source/Tests/MonoGame.Extended.Tests/ViewportAdapters/BoxingViewportAdapterTests.cs @@ -15,7 +15,7 @@ public void BoxingViewportAdapter_Letterbox_Test() var viewportAdapter = new BoxingViewportAdapter(gameWindow, graphicsDevice, 800, 480); graphicsDevice.Viewport = new Viewport(0, 0, 1024, 768); - gameWindow.RaiseOnClientSizeChangedEvent(); + viewportAdapter.Reset(); Assert.AreEqual(1024, graphicsDevice.Viewport.Width); Assert.AreEqual(614, graphicsDevice.Viewport.Height); @@ -30,7 +30,7 @@ public void BoxingViewportAdapter_Pillarbox_Test() var viewportAdapter = new BoxingViewportAdapter(gameWindow, graphicsDevice, 800, 480); graphicsDevice.Viewport = new Viewport(0, 0, 900, 500); - gameWindow.RaiseOnClientSizeChangedEvent(); + viewportAdapter.Reset(); Assert.AreEqual(833, graphicsDevice.Viewport.Width); Assert.AreEqual(500, graphicsDevice.Viewport.Height); diff --git a/Source/MonoGame.Extended.Tests/ViewportAdapters/DefaultViewportAdapterTests.cs b/Source/Tests/MonoGame.Extended.Tests/ViewportAdapters/DefaultViewportAdapterTests.cs similarity index 100% rename from Source/MonoGame.Extended.Tests/ViewportAdapters/DefaultViewportAdapterTests.cs rename to Source/Tests/MonoGame.Extended.Tests/ViewportAdapters/DefaultViewportAdapterTests.cs diff --git a/Source/Tests/MonoGame.Extended.Tests/packages.config b/Source/Tests/MonoGame.Extended.Tests/packages.config new file mode 100644 index 000000000..77d6028c3 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tests/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tiled.Tests/FullMapRendererTest.cs b/Source/Tests/MonoGame.Extended.Tiled.Tests/FullMapRendererTest.cs new file mode 100644 index 000000000..5e525d3f6 --- /dev/null +++ b/Source/Tests/MonoGame.Extended.Tiled.Tests/FullMapRendererTest.cs @@ -0,0 +1,291 @@ +//using Microsoft.Xna.Framework; +//using Microsoft.Xna.Framework.Graphics; +//using MonoGame.Extended.Shapes; +//using MonoGame.Extended.TextureAtlases; +//using MonoGame.Extended.Tiled; +//using MonoGame.Extended.Tiled.Graphics; +//using NSubstitute; +//using NUnit.Framework; + +//namespace MonoGame.Extended.Tests.Tiled.Renderers +//{ +// [TestFixture] +// public class FullMapRendererTest +// { +// [Test] +// public void Draw_MapObjectLayer_MissingGID_NoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); + +// IShapeF shape = new RectangleF(1, 1, 1, 1); +// TiledObject[] objs = +// { +// new TiledObject(TiledObjectType.Tile, 1, null, shape, 1, 1) { IsVisible = true }, +// }; + +// var layer = new TiledObjectLayer("object", objs); +// m.AddLayer(layer); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_MapObjectLayer_ShapeObject_NoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); + +// IShapeF shape = new RectangleF(1, 1, 1, 1); +// TiledObject[] objs = +// { +// new TiledObject(TiledObjectType.Rectangle, 1, 1, shape, 1, 1) { IsVisible = true }, +// }; + +// var layer = new TiledObjectLayer("object", objs); +// m.AddLayer(layer); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_MapObjectLayer_TileObject_OneGroup() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); + +// IShapeF shape = new RectangleF(1, 1, 1, 1); +// TiledObject[] objs = +// { +// new TiledObject(TiledObjectType.Tile, 1, 1, shape, 1, 1) { IsVisible = true }, +// }; + +// var layer = new TiledObjectLayer("object", objs); +// m.AddLayer(layer); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNotNull(gd.Indices); +// Assert.AreEqual(6, gd.Indices.IndexCount); +// } + +// [Test] +// public void Draw_MapObjectLayer_NotVisible_NoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); + +// IShapeF shape = new RectangleF(1, 1, 1, 1); +// TiledObject[] objs = +// { +// new TiledObject(TiledObjectType.Tile, 1, 1, shape, 1, 1) { IsVisible = false }, +// }; + +// var layer = new TiledObjectLayer("object", objs); +// m.AddLayer(layer); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_MapObjectLayer_NoObjects_NoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); + +// TiledObject[] objs = {}; + +// var layer = new TiledObjectLayer("object", objs); +// m.AddLayer(layer); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_MapTileLayer_TwoVisible_OneGroup() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); +// m.CreateTileLayer("tile", 2, 2, new int[] { 1, 0, 1, 0 }); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNotNull(gd.Indices); +// Assert.AreEqual(12, gd.Indices.IndexCount); +// } + +// [Test] +// public void Draw_MapTileLayer_AllBlank_NoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 2, 2, 32, 32); +// m.CreateTileset(texture, 0, 32, 32, 4); +// m.CreateTileLayer("tile", 2, 2, new int[] { 0, 0, 0, 0 }); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_MapImageLayer_OneGroup() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// var texture = Substitute.For(gd, 64, 64); + +// var m = new TiledMap("test", 10, 10, 32, 32); +// m.CreateImageLayer("img", texture, new Vector2(100, 100)); + +// r.Map = m; + +// r.Draw(new Matrix()); + +// Assert.IsNotNull(gd.Indices); +// Assert.AreEqual(6, gd.Indices.IndexCount); +// } + +// [Test] +// public void Draw_MapNoGroups() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); +// r.Map = new TiledMap("test", 10, 10, 32, 32); + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void Draw_NoMap() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var r = new MockRenderer(gd); + +// r.Draw(new Matrix()); + +// Assert.IsNull(gd.Indices); +// } + +// [Test] +// public void CreatePrimatives() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var texture = Substitute.For(gd, 64, 64); +// var region = Substitute.For(texture, 1, 1, 32, 32); + +// VertexPositionTexture[] vertices; +// ushort[] indexes; + +// var r = new MockRenderer(gd); +// r.CreatePrimitives(new Point(0, 0), region, 0, 0.5f, out vertices, out indexes); + +// Assert.AreEqual(4, vertices.Length); +// Assert.AreEqual(new Vector3(0, 0, .5f), vertices[0].Position); +// Assert.AreEqual(new Vector2(0.0234375f, 0.0234375f), vertices[0].TextureCoordinate); +// Assert.AreEqual(new Vector3(32, 0, .5f), vertices[1].Position); +// Assert.AreEqual(new Vector2(0.515625f, 0.0234375f), vertices[1].TextureCoordinate); +// Assert.AreEqual(new Vector3(0, 32, .5f), vertices[2].Position); +// Assert.AreEqual(new Vector2(0.0234375f, 0.515625f), vertices[2].TextureCoordinate); +// Assert.AreEqual(new Vector3(32, 32, .5f), vertices[3].Position); +// Assert.AreEqual(new Vector2(0.515625f, 0.515625f), vertices[3].TextureCoordinate); + +// CollectionAssert.AreEqual(new[] { 0, 1, 2, 1, 3, 2 }, indexes); +// } + +// [Test] +// public void CreatePrimatives_Offset10() +// { +// var gd = TestHelper.CreateGraphicsDevice(); +// var texture = Substitute.For(gd, 64, 64); +// var region = Substitute.For(texture, 1, 1, 32, 32); + +// VertexPositionTexture[] vertices; +// ushort[] indexes; + +// var r = new MockRenderer(gd); +// r.CreatePrimitives(new Point(0, 0), region, 10, 0.5f, out vertices, out indexes); + +// Assert.AreEqual(4, vertices.Length); +// Assert.AreEqual(new Vector3(0, 0, .5f), vertices[0].Position); +// Assert.AreEqual(new Vector2(0.0234375f, 0.0234375f), vertices[0].TextureCoordinate); +// Assert.AreEqual(new Vector3(32, 0, .5f), vertices[1].Position); +// Assert.AreEqual(new Vector2(0.515625f, 0.0234375f), vertices[1].TextureCoordinate); +// Assert.AreEqual(new Vector3(0, 32, .5f), vertices[2].Position); +// Assert.AreEqual(new Vector2(0.0234375f, 0.515625f), vertices[2].TextureCoordinate); +// Assert.AreEqual(new Vector3(32, 32, .5f), vertices[3].Position); +// Assert.AreEqual(new Vector2(0.515625f, 0.515625f), vertices[3].TextureCoordinate); + +// CollectionAssert.AreEqual(new[] { 40, 41, 42, 41, 43, 42 }, indexes); +// } +// } + +// internal class MockRenderer : TiledMapRenderer +// { +// public MockRenderer(GraphicsDevice graphicsDevice) +// : base(graphicsDevice) +// { +// } + +// public void CreatePrimitives(Point point, TextureRegion2D region, int offset, float depth, +// out VertexPositionTexture[] vertices, out ushort[] indexes) +// { +// base.CreatePrimitives(point, region, offset, depth, out vertices, out indexes); +// } + +// public new void Draw(Matrix viewMatrix) +// { +// base.Draw(viewMatrix); +// } +// } +//} diff --git a/Source/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj b/Source/Tests/MonoGame.Extended.Tiled.Tests/MonoGame.Extended.Tiled.Tests.csproj similarity index 57% rename from Source/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj rename to Source/Tests/MonoGame.Extended.Tiled.Tests/MonoGame.Extended.Tiled.Tests.csproj index 30987d221..822077dbe 100644 --- a/Source/MonoGame.Extended.Tests/MonoGame.Extended.Tests.csproj +++ b/Source/Tests/MonoGame.Extended.Tiled.Tests/MonoGame.Extended.Tiled.Tests.csproj @@ -1,16 +1,17 @@  - + Debug AnyCPU - {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1} + {A88FC71D-12E3-42A5-AFF3-89C6498C3C65} Library Properties - MonoGame.Extended.Tests - MonoGame.Extended.Tests + MonoGame.Extended.Tiled.Tests + MonoGame.Extended.Tiled.Tests v4.5 512 + true @@ -20,7 +21,6 @@ DEBUG;TRACE prompt 4 - true pdbonly @@ -29,19 +29,17 @@ TRACE prompt 4 - true - - $(MSBuildExtensionsPath)\MonoGame\v3.0\Tools\MonoGame.Framework.dll - True + + False + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.dll - - ..\packages\NSubstitute.1.9.2.0\lib\net45\NSubstitute.dll - True + + C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MonoGame.Framework.Content.Pipeline.dll - ..\packages\NUnit.2.6.4\lib\nunit.framework.dll + ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll True @@ -50,32 +48,26 @@ + - - - - - - - - - - - - - + + - - {41724C52-3D50-45BB-81EB-3C8A247EAFD1} - MonoGame.Extended - + - + + {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} + MonoGame.Extended.Tiled + + + {CEF2144F-7E98-45A5-BE08-E6DBC307A5C1} + MonoGame.Extended.Tests +