diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/License/LICENSE.md b/License/LICENSE.md new file mode 100644 index 0000000..83f944b --- /dev/null +++ b/License/LICENSE.md @@ -0,0 +1,55 @@ +# ARM UNIVERSITY PROGRAMME EDUCATION KIT TEACHING MATERIALS END USER LICENSE AGREEMENT + +## ARM EDUCATION + +## EDUCATION KIT END USER LICENCE AGREEMENT + +1. These terms are displayed for you to read prior to use of the particular education kit and any related documentation and materials (“Materials”) made available to you by Arm Limited (“Arm”). If you choose not to agree with these terms, do not use or access the Materials. + +1. THESE TERMS AND CONDITIONS CONSTITUTE A LEGALLY BINDING AGREEMENT BETWEEN YOU AND ARM (“AGREEMENT”). The Materials may include third party elements, and/or hardware distributed on behalf of a third party, which may be subject to separate terms of use. You acknowledge that any hardware provided to you is a third party product and Arm is solely distributing such hardware on behalf of the third party. To the fullest extent permitted by law, Arm shall have no responsibility or liability in respect of any such hardware. + +1. You acknowledge that the Materials are specifically designed and licensed only for non-commercial, educational purposes. + +1. INTELLECTUAL PROPERTY. The Materials are protected by copyright laws, international copyright treaties, and trade secret laws, and other intellectual property laws and treaties around the world. The Materials are licensed, not sold, to you, and can only be used in accordance with the terms of this Agreement. Arm and its licensors retain title and ownership of the Materials, including all intellectual property rights in the Materials (other than in respect of any third party elements). Arm reserves all rights not specifically granted under this Agreement. + +1. LICENCE. Subject to your compliance with this Agreement and unless otherwise specified in Clause 13, Arm hereby grants to you a limited, non-exclusive, non-transferable, royalty-free, licence under its copyright subsisting in the Materials to use, copy and modify the Materials (and if and only if you are a current member of an educational institution, make the Materials available to others within your academic institution) upon the terms of this Agreement, solely for non-commercial educational purposes. For the purposes of these terms, “educational purposes” means internal use in taught classes and related projects at educational institutions delivering accredited degrees and diplomas, but “educational purposes” excludes research that is intended to be published or otherwise made available to third parties or the public (including, without limitation, PhD research). + + Unless otherwise specified in Clause 13: (a) you may refer to and cite the Materials in publications provided that you give a full citation referencing Arm as the author and owner of the Materials; (b) you may not use the Materials for any commercial purpose; (c) you may not remove any proprietary notice(s) contained in the Materials; and (d) you may not use the Materials to design to manufacture Arm-based processors. You may not use the Materials for any unlawful purpose, you may not (except as far as permitted by applicable law) reverse engineer or decompile the Materials, and you may not use the Materials in any way that may damage Arm’s reputation or bring Arm into disrepute. The licence granted by Arm pursuant to this Clause 5 is effective until terminated. Without prejudice to any other rights, Arm may terminate this Agreement and your right to use the Materials if you are in material breach of any of these terms or if you do anything that infringes Arm’s intellectual property rights. Termination will be effective immediately on the service of Arm’s notice of termination to you. In the event of termination, you shall destroy all copies of the Materials, including all portions and derivatives of them, and cease all use of the Materials immediately. Clauses impliedly or expressly intended to survive termination shall continue in full force and effect. + +1. WARRANTIES AND LIMITATIONS. + + a. THE MATERIALS ARE PROVIDED “AS IS”. ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED OR STATUTORY, ARE HEREBY EXCLUDED, INCLUDING, WITHOUT LIMITATION, THOSE RELATING TO MERCHANTABILITY, SATISFACTORY QUALITY, FREEDOM FROM DEFECTS, RELIABILITY, AVAILABILITY, ACCURACY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE. + + b. IN NO EVENT SHALL ARM BE LIABLE UNDER THIS AGREEMENT OR OTHERWISE IN CONNECTION WITH THE MATERIALS FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES WHETHER SUCH DAMAGES ARE ALLEGED AS A RESULT OF TORTIOUS CONDUCT OR BREACH OF CONTRACT OR OTHERWISE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + c. THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE AGAINST ARM IN CONTRACT, TORT OR OTHERWISE UNDER OR IN CONNECTION WITH THIS AGREEMENT, OR OTHERWISE IN CONNECTION WITH THE MATERIALS SHALL NOT EXCEED THE GREATER OF ONE HUNDRED U.S. DOLLARS ($100 USD) OR THE TOTAL OF SUMS PAID, IF ANY, BY YOU TO ARM UNDER THIS AGREEMENT. + + d. Nothing in this section shall operate to exclude or limit liability for: (i) death or personal injury resulting from either party's negligence; or (ii) fraud; or (iii) any other matters in respect of which by law liability cannot be excluded or limited. + +1. EXPORT CONTROL. You hereby acknowledge and agree that the Materials are subject to U.S. export control laws, including the U.S. Export Administration Act and its associated regulations, and may be subject to export or import regulations in other countries. You agree to comply fully with all laws and regulations of the United States and other countries (“**Export Laws**”) to assure that neither the Materials, nor any direct products of them are; + + ( i ) exported, directly or indirectly, in violation of Export Laws, either to any countries that are subject to U.S export restrictions or to any end user who has been prohibited from participating in the U.S. export transactions by any federal agency of the U.S. government; or + + (ii) intended to be used for any purpose prohibited by Export Laws, including, without limitation, nuclear, chemical, or biological weapons proliferation. The Materials consist solely of commercial items. If applicable, your institution shall be responsible for ensuring that any Materials provided to the US Government in accordance with the terms of this Agreement are provided with the rights and subject to restrictions described elsewhere in this Agreement. + +1. FEEDBACK AND MODIFICATIONS. You hereby grant to Arm a non-exclusive, royalty-free, fully paid-up, worldwide licence to use, copy, modify, distribute, and create derivative works of any suggestions, comments or feedback that you provide to Arm in relation to the Materials, and any modifications you make to the Materials, under all your intellectual property rights subsisting therein, for any purpose. To the extent that any claim in any patent application filed by you would not have been conceived by you but for having had access to the Materials, such claim shall be deemed to be feedback and is hereby licensed to Arm in accordance with the provisions of this Clause 8. + +1. GOVERNING LAW. This Agreement and any disputes or claims arising out of or in connection with it or its subject matter or formation (including non-contractual disputes or claims) are governed by and construed in accordance with the laws of England and Wales. + +1. PERSONAL DATA. Arm will process any personal data in accordance with its privacy policy: www.arm.com/company/policies/privacy. + +1. UPDATES. Arm may update this Agreement from time to time. Updates will be posted on this page and, where appropriate, notified to you by email. If you do not agree with an update, you should cease use of the Materials. + +1. CONTACTING US. If you have any queries in relation to this Agreement or the Materials, please email university@arm.com. + +1. SPECIAL CONDITIONS. The provisions of this Clause 13 shall take precedence in the event of any conflict with the remainder of this Agreement. + + (i) Use of the pedagogical processor model provided with the Introduction to Computer Architecture Education Kit (the "Arm Education Core") is subject to the following special conditions: + + (a) you may only refer to or publish the Arm Education Core, or any modifications you make to the Arm Education Core or any results you obtain from its use, in whole or in part if you have first obtained Arm's specific prior written consent by emailing us at the address specified in Clause 12 above; + + (b) you may use the Arm Education Core to synthesize and implement an SoC on FPGA or for an ASIC implementation of the SoC for non-commercial educational purposes (as defined in Clause 5 above); + + (c) you may not make any claims about the Arm Education Core's functionality or otherwise other than those published by Arm. The Arm Education Core is not representative of any commercially available Arm processors and you may not make any statements that indicate or imply the contrary. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ff06a0 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Disclaimer +Arm is committed to making the language we use inclusive, meaningful, and respectful. Our goal is to remove and replace non-inclusive language from our vocabulary to reflect our values and represent our global ecosystem. + +Arm is working actively with our partners, standards bodies, and the wider ecosystem to adopt a consistent approach to the use of inclusive language and to eradicate and replace offensive terms. We recognise that this will take time. This course may contain references to non-inclusive language; it will be updated with newer terms as those terms are agreed and ratified with the wider community. + +Contact us at education@arm.com with questions or comments about this course. You can also report non-inclusive and offensive terminology usage in Arm content at terms@arm.com. + +# Digital-Signal-Processing-Education-Kit + +Welcome to our Digital Signal Processing Education Kit! + +Our flagship offering to universities worldwide is the Arm University Program Education Kit series. + +These self-contained educational materials offered exclusively and at no cost to academics and teaching staff worldwide. They’re designed to support your day-to-day teaching on core electronic engineering and computer science subjects. You have the freedom to choose which modules to teach – you can use all the modules in the Education Kit or only those that are most appropriate to your teaching outcomes. + +Our Digital Signal Processing Education Kit covers the fundamental theory and practice of managing digital signals. A full description of the education kit can be found [here](https://www.arm.com/resources/education/education-kits/digital-signal-processing). + +## Kit specification: + +* A full set of lecture slides, ready for use in a typical 10-12-week undergraduate course (full syllabus below). +* Lab manual with solutions for faculty. Labs are based on low-cost hardware platforms (donated by partners and subject to availability) powered by Arm Cortex-M-based microcontrollers that enable high performance yet energy-efficient digital signal processing, and use the industry-standard Keil MDK-Arm application development tool. +* **Prerequisites:** Basic C programming, elementary mathematics. + +## Course Aim +To develop the ability to implement DSP systems and create commercially viable audio applications using high performance and energy-efficient Arm processors. + +## Syllabus +1. Discrete Time Signals and Systems: Convolution and Correlation +1. Sampling, Reconstruction and Aliasing: Review of Complex Exponentials and Fourier Analysis +1. Sampling, Reconstruction and Aliasing: Time and Frequency Domains +1. Z-Transform: Time and Frequency Domains +1. FIR Filters: Moving Average Filters +1. FIR Filters: Window Method of Design +1. IIR Filters: Impulse Invariant and Bilinear Transform Methods of Design +1. IIR Filters: Simple Design Example +1. Fast Fourier Transform: Review of Fourier Transformation +1. Fast Fourier Transform: Derivation of Radix-2 FFT +1. Adaptive Filters: Prediction and System Identification +1. Adaptive Filters: Equalization and Noise Cancellation +1. Adaptive Filters: Adaptive FIR Filter + +## License +You are free to fork or clone this material. See LICENSE.md for the complete license. \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/ConvolutionAndCorrelation_lec.pptx b/STM32F746G Discovery board/contents/Module_1/ConvolutionAndCorrelation_lec.pptx new file mode 100644 index 0000000..ec57e6b Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_1/ConvolutionAndCorrelation_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/armlogo.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/armlogo.h new file mode 100644 index 0000000..e9fc77c --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/armlogo.h @@ -0,0 +1,3532 @@ +/* + C-file generated by Bin2C + Compiled: Aug 31 2016 at 10:53:40 + + Copyright (C) 2014 + Segger Microcontroller GmbH & Co. KG + www.segger.com + + Solutions for real time microcontroller applications +*/ + +static const unsigned char armlogo[140670UL + 1] = { + 0x42, 0x4D, 0x7E, 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0E, + 0x00, 0x00, 0xC3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, + 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, + 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBE, 0x8F, 0x00, 0xBD, 0x8C, 0x00, 0xBC, 0x8A, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBB, 0x8A, 0x00, 0xBC, 0x8A, 0x00, 0xBC, 0x8A, 0x00, 0xBC, + 0x8A, 0x00, 0xBB, 0x89, 0x00, 0xBB, 0x88, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x88, 0x00, 0xBB, 0x8A, 0x00, 0xBD, 0x8C, 0x00, 0xBF, 0x8F, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBE, 0x8E, 0x00, 0xBB, 0x89, 0x00, 0xBA, + 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xC1, 0x94, 0x09, 0xC8, 0xA0, 0x25, 0xD0, 0xAD, 0x43, 0xD7, 0xBA, 0x61, 0xDE, 0xC6, 0x7B, 0xE3, 0xCF, 0x91, 0xE7, 0xD6, 0xA1, 0xEA, 0xDB, 0xAC, 0xEB, 0xDD, 0xB1, 0xEB, 0xDD, 0xB0, 0xEB, 0xDD, 0xB0, 0xE9, 0xD8, + 0xA6, 0xE5, 0xD2, 0x97, 0xE0, 0xC8, 0x82, 0xD9, 0xBC, 0x66, 0xD0, 0xAE, 0x45, 0xC8, 0x9F, 0x23, 0xC0, 0x92, 0x06, 0xBC, 0x8A, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBD, 0x8D, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xC5, 0x9A, 0x17, 0xD2, 0xB1, 0x4C, 0xE1, 0xCB, 0x88, 0xEE, 0xE2, + 0xBC, 0xF8, 0xF3, 0xE3, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xF7, 0xF1, 0xDF, 0xEB, 0xDD, 0xB1, 0xDC, 0xC3, 0x74, 0xCC, 0xA6, 0x33, 0xBF, 0x90, 0x01, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, + 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, + 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, + 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBF, + 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, + 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, + 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, + 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBB, 0x89, 0x00, 0xBC, 0x8B, 0x00, 0xC7, 0x9E, 0x20, 0xDB, 0xC0, 0x6E, 0xEE, 0xE2, 0xBC, 0xFC, 0xF9, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, + 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD8, 0xE2, 0xCC, 0x8A, 0xCB, 0xA6, 0x31, 0xBD, 0x8C, 0x00, 0xBB, 0x89, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, + 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x06, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, + 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, + 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, + 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x94, 0x08, 0xC0, 0x92, 0x04, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC1, 0x93, 0x07, + 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, + 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC1, 0x93, 0x06, 0xC1, + 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, + 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x06, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xC1, 0x93, + 0x08, 0xC1, 0x93, 0x07, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, + 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x08, 0xC1, 0x93, 0x07, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x04, 0xBE, 0x8F, 0x00, + 0xBA, 0x88, 0x00, 0xC0, 0x91, 0x03, 0xD4, 0xB4, 0x53, 0xED, 0xDF, 0xB6, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE4, 0xC2, 0xD4, 0xB5, 0x55, 0xBE, 0x8F, 0x00, 0xBB, 0x89, 0x00, 0xBF, 0x91, 0x02, + 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xE9, 0xD8, 0xA6, 0xFA, 0xF7, 0xED, 0xF7, 0xF1, 0xDE, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, + 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, + 0xE1, 0xF7, 0xF1, 0xE0, 0xF8, 0xF4, 0xE5, 0xF3, 0xEB, 0xD1, 0xC3, 0x97, 0x0F, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x02, 0xBC, 0x8C, 0x00, 0xCB, 0xA4, 0x2F, 0xF9, 0xF4, 0xE5, 0xF7, 0xF2, 0xE0, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, + 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF0, 0xDD, 0xFB, 0xF9, 0xF1, 0xDE, 0xC7, 0x7D, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, 0x00, 0xC5, 0x9A, 0x17, 0xF5, 0xEE, 0xD8, 0xF8, 0xF3, 0xE3, 0xF7, + 0xF2, 0xE0, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, + 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF1, 0xDE, 0xFB, 0xF8, 0xEE, 0xE6, 0xD4, 0x9C, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xEE, 0xE2, 0xBD, 0xF9, 0xF5, 0xE9, 0xF7, 0xF1, + 0xDF, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, + 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF1, 0xDF, 0xF9, 0xF5, 0xE9, 0xEF, 0xE3, 0xBE, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xE6, 0xD4, 0x9B, 0xFB, 0xF8, 0xEE, 0xF7, 0xF1, 0xDE, + 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, + 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE1, 0xF7, 0xF2, 0xE0, 0xF8, 0xF3, 0xE3, 0xF5, 0xEE, 0xD8, 0xC5, 0x9A, 0x17, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBA, 0x88, 0x00, 0xC1, 0x94, 0x09, 0xDB, 0xC0, 0x6F, 0xF6, + 0xF0, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEC, 0xD3, 0xD5, 0xB5, 0x56, 0xBD, 0x8C, 0x00, 0xBC, 0x8B, 0x00, 0xC0, + 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xF0, 0xE4, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF3, 0xC3, 0x98, 0x12, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCD, 0xA8, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xD0, 0x92, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC6, 0x9C, 0x1B, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xDF, 0xB6, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF6, 0xF0, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xF0, 0xDD, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, 0x8A, 0x00, 0xEC, 0xDF, 0xB5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xC6, 0x9C, 0x1B, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xBB, 0x8A, 0x00, 0xBF, 0x90, 0x00, 0xDA, 0xBE, 0x6A, 0xF8, 0xF3, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, + 0xFC, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE5, 0xC2, 0xCB, 0xA5, 0x31, 0xBA, 0x88, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8C, 0x00, 0xEE, 0xE2, 0xBB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, + 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF6, 0xEB, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x34, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, + 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xE2, 0xCE, 0x8D, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, + 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, + 0xFE, 0xFD, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xEB, 0xDC, 0xAF, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF4, 0xED, 0xD5, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, + 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, + 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF5, 0xED, 0xD6, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDC, 0xAF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, + 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, + 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF3, 0xC6, 0x9B, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBE, 0x8F, 0x00, 0xBB, 0x89, 0x00, 0xD0, 0xAD, 0x43, 0xF4, 0xEC, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC9, 0x84, 0xBE, 0x8E, 0x00, 0xBD, 0x8C, 0x00, + 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8C, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xC0, 0x92, 0x05, 0xBC, 0x8A, 0x00, 0xC1, 0x94, 0x09, 0xE6, 0xD4, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xE8, 0xCA, 0xC6, 0x9D, 0x1E, 0xBB, 0x89, 0x00, 0xC0, + 0x92, 0x05, 0xC0, 0x91, 0x02, 0xBC, 0x8C, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x91, 0x03, 0xBA, 0x88, 0x00, 0xCE, + 0xAA, 0x3B, 0xF8, 0xF2, 0xE2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF4, 0xD0, 0xAD, 0x43, 0xBA, 0x88, 0x00, 0xC1, 0x93, + 0x06, 0xBC, 0x8C, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBB, 0x89, 0x00, 0xDB, 0xC1, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xBA, 0x60, 0xBB, 0x89, 0x00, 0xBD, 0x8D, 0x00, + 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBE, 0x8E, 0x00, 0xBD, 0x8D, 0x00, 0xE6, 0xD4, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x6F, 0xB8, 0x84, 0x00, 0xEF, 0xE3, 0xBF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xED, 0xE0, 0xB7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xD8, 0xBB, 0x62, 0xEB, 0xDD, 0xB1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, + 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, + 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBE, 0x8E, 0x00, 0xC0, 0x91, 0x03, 0xF0, 0xE5, 0xC3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xF8, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBE, 0x8F, + 0x00, 0xBF, 0x90, 0x00, 0xEF, 0xE4, 0xC1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBD, 0x8C, 0x00, 0xEC, 0xDD, 0xB2, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x03, 0xBB, 0x89, 0x00, 0xE4, 0xD0, 0x93, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBA, 0x88, 0x00, 0xD8, 0xBC, 0x66, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x03, 0xBC, 0x8B, 0x00, 0xCB, 0xA5, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFC, 0xFE, 0xFD, + 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xC0, 0x91, 0x03, 0xF5, 0xEE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xF9, 0xFD, 0xFC, 0xF8, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x92, 0x04, 0xBA, 0x88, 0x00, 0xE3, 0xCF, 0x91, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF2, 0xE2, 0xEB, 0xDC, 0xAF, 0xDE, 0xC7, 0x7D, 0xD4, 0xB5, 0x55, 0xCD, 0xA9, 0x39, 0xC9, + 0xA2, 0x29, 0xC7, 0x9E, 0x1F, 0xC6, 0x9C, 0x1D, 0xC8, 0x9F, 0x24, 0xCB, 0xA5, 0x2F, 0xD0, 0xAE, 0x44, 0xD8, 0xBC, 0x64, 0xE3, 0xCE, 0x8F, 0xEF, 0xE4, 0xC1, 0xFB, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, + 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xCE, 0xA9, + 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE4, 0xE3, 0xCE, 0x8E, 0xCE, 0xAA, 0x3C, 0xC1, 0x93, 0x08, 0xBB, 0x8A, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBC, 0x8B, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8D, + 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBC, 0x8B, 0x00, 0xBC, 0x8A, 0x00, 0xBB, 0x88, 0x00, 0xBA, 0x88, 0x00, 0xBD, 0x8C, 0x00, 0xC4, 0x99, 0x14, 0xD3, 0xB2, 0x4F, 0xE7, 0xD6, 0xA1, 0xFB, 0xF8, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8E, 0x00, 0xF3, 0xE9, 0xCD, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF5, 0xEE, 0xD7, 0xD7, 0xBA, 0x60, 0xC1, 0x94, 0x09, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, + 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x02, 0xBE, 0x8E, 0x00, 0xBB, 0x89, 0x00, 0xBB, 0x89, 0x00, 0xC4, 0x98, 0x13, 0xDB, 0xC0, 0x6F, 0xF7, 0xF1, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, + 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, + 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD9, 0xBD, 0x67, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF4, 0xDB, 0xC0, 0x6E, 0xBF, 0x90, 0x00, + 0xBB, 0x88, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBE, 0x8E, 0x00, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x05, 0xDC, 0xC2, 0x72, 0xFC, 0xFA, 0xF3, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8F, 0x00, 0xC1, 0x94, 0x0A, 0xF9, 0xF4, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xEE, 0xE1, 0xBA, 0xC5, 0x9B, 0x1A, 0xBA, 0x88, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xBF, 0x8F, 0x00, 0xBA, 0x88, 0x00, 0xC5, 0x9A, 0x18, 0xEB, 0xDD, 0xB1, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDD, 0xC3, 0x76, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC9, 0x83, 0xBC, 0x8B, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x05, 0xBD, 0x8D, 0x00, 0xBB, 0x8A, 0x00, 0xDB, 0xC1, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8F, 0x00, 0xC1, 0x94, 0x09, 0xF8, 0xF4, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xBA, 0x61, 0xBA, 0x87, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xBA, 0x87, 0x00, 0xD1, 0xAF, 0x47, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD9, 0xBD, 0x67, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xD6, 0xB7, 0x5A, 0xBA, 0x87, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x06, 0xBA, 0x88, 0x00, 0xCD, 0xA8, 0x38, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, + 0x00, 0xF3, 0xEA, 0xCF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xDA, 0xBF, 0x6B, 0xBA, + 0x87, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x93, 0x06, 0xBA, 0x88, 0x00, 0xCF, 0xAC, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xCF, 0xAB, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xE4, 0xD1, 0x94, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x06, 0xBA, 0x87, 0x00, 0xD8, 0xBC, 0x64, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE6, 0xD5, 0x9D, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF3, 0xEA, 0xCF, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xE7, 0xD6, 0xA1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, 0x00, 0xC2, 0x96, 0x0E, 0xFA, 0xF6, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xA4, 0x2E, 0xBC, 0x8B, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBE, 0x8E, 0x00, 0xC2, 0x95, 0x0A, 0xF8, 0xF4, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, 0x89, 0x00, 0xD3, 0xB2, 0x4F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE1, 0xCC, 0x89, 0xBA, 0x87, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBB, 0x88, 0x00, 0xD5, 0xB6, 0x57, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, + 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, + 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE6, 0xD4, 0x9D, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xEA, 0xC2, 0x96, 0x0E, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xF0, 0xE6, 0xC5, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xF6, 0xF0, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xDD, 0xC4, 0x77, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD2, 0xB1, 0x4B, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, + 0x02, 0xBC, 0x8B, 0x00, 0xCB, 0xA5, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xF8, 0xEE, 0xC3, 0x98, 0x12, 0xBE, + 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8F, 0x00, 0xF4, 0xEB, 0xD1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, + 0xDA, 0xBE, 0x6A, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE4, 0xD1, 0x95, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDB, 0xC1, 0x72, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE8, 0xD7, 0xA3, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xCD, 0xA8, 0x38, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC7, 0x9E, 0x20, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8F, 0x00, 0xF4, 0xEB, 0xD2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xED, 0xD6, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xF0, 0xE5, 0xC3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, 0x00, 0xC5, 0x9A, 0x17, 0xFC, 0xF9, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCF, 0x91, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, + 0x04, 0xBA, 0x88, 0x00, 0xDF, 0xC7, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCD, 0xA8, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD3, 0xB2, 0x4F, 0xBB, 0x89, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, + 0xD0, 0xAD, 0x44, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD5, 0xB7, 0x59, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xF8, 0xC6, 0x9D, 0x1E, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, + 0xFB, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDD, 0xC5, 0x79, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD8, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xEE, 0xD7, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, + 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, + 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xE4, 0xD1, 0x94, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEC, 0xDE, 0xB4, 0xBC, 0x8A, + 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xED, 0xE0, 0xB8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBB, 0x8A, 0x00, 0xEA, 0xDA, 0xAB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE4, 0xD0, 0x93, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE6, 0xD4, 0x9D, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, + 0x00, 0xEE, 0xE2, 0xBC, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDD, 0xC5, 0x79, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xE1, 0xCB, 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, 0x8D, 0x00, 0xF1, 0xE7, 0xC8, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD8, 0xBC, 0x66, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDD, 0xC4, 0x77, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8E, 0x00, 0xF3, 0xEA, 0xCF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xD5, 0xB7, 0x5A, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xDB, 0xC0, 0x6E, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x8F, 0x00, 0xF4, 0xEC, 0xD3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD5, 0xB6, 0x58, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD9, 0xBE, 0x6A, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, + 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xF4, 0xEC, 0xD3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD5, 0xB7, 0x58, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDB, 0xC1, 0x70, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8F, 0x00, 0xF3, 0xEA, 0xCF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD8, 0xBB, 0x62, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, + 0xBA, 0x88, 0x00, 0xDD, 0xC5, 0x79, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBD, 0x8D, 0x00, 0xF2, 0xE8, 0xCA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xDC, 0xC2, 0x72, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xE1, + 0xCB, 0x88, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xED, 0xE0, 0xB8, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xED, 0xD7, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xEF, 0xE3, 0xBE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE2, + 0xCC, 0x8A, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE7, 0xD5, 0x9E, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, + 0xCE, 0x8E, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xED, 0xE0, 0xB9, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF6, 0xF0, 0xDC, 0xC0, 0x92, 0x04, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, + 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, 0x8A, 0x00, 0xEB, 0xDC, 0xAF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE9, 0xD9, 0xA9, 0xBB, 0x89, + 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xED, 0xE0, 0xB8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE4, 0xD0, 0x93, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEE, 0xE2, 0xBC, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xF1, 0xDF, 0xC0, 0x93, 0x06, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE6, 0xD3, 0x9A, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF2, 0xE9, 0xCC, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xF5, 0xED, 0xD7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE6, 0xD3, 0x9B, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF0, 0xE5, 0xC3, 0xBD, 0x8C, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE4, 0xC1, 0x94, 0x09, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDC, 0xAF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, + 0x00, 0xDF, 0xC8, 0x80, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8D, 0x00, 0xC5, 0x9A, 0x18, 0xFC, 0xFA, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE9, 0xD8, 0xA6, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x03, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF2, 0xE9, 0xCC, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xF5, 0xEE, 0xD7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xEA, 0xC3, 0x97, 0x0F, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xEC, 0xDF, 0xB5, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD7, 0xBA, 0x62, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xCE, 0xA9, 0x3A, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xCF, 0xAB, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xED, 0xDF, 0xB6, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xED, 0xD6, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xC0, 0x92, 0x05, 0xF6, 0xF0, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF2, 0xC5, 0x9A, 0x18, 0xBE, 0x8D, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xED, 0xE1, 0xB9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xCF, 0xAC, 0x40, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDC, 0xC3, 0x75, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDD, 0xC3, 0x76, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF2, 0xE8, 0xCA, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE4, 0xC1, 0x94, 0x09, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8F, 0x00, 0xC1, 0x93, 0x08, 0xF8, 0xF3, 0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xC8, 0x9F, 0x24, 0xBD, 0x8C, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xEF, 0xE4, 0xC0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC7, 0x9E, 0x1F, 0xFD, 0xFC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEE, 0xE2, 0xBC, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xED, 0xE0, 0xB8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xF2, 0xE1, 0xC1, 0x93, 0x07, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFC, 0xF9, 0xF1, 0xC4, 0x9A, 0x16, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, 0x00, 0xC2, 0x96, 0x0E, 0xFA, 0xF6, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xCC, 0xA7, 0x35, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBD, 0x8D, 0x00, 0xF2, 0xE8, 0xCA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, + 0xF5, 0xC6, 0x9C, 0x1A, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xF6, 0xF0, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xF6, 0xC6, 0x9C, 0x1C, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, + 0x00, 0xC4, 0x99, 0x16, 0xFC, 0xF9, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xF8, 0xC6, 0x9D, 0x1E, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, + 0xA2, 0x29, 0xBD, 0x8C, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, 0x00, 0xC5, 0x9A, 0x16, 0xFB, 0xF9, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD2, 0xB1, + 0x4D, 0xBB, 0x89, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xF4, 0xEC, 0xD4, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xF5, 0xC6, 0x9C, 0x1B, + 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEC, 0xDE, 0xB2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDA, 0xBE, 0x6A, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD6, 0xB8, 0x5D, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD0, 0xAD, 0x42, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD0, 0xAE, 0x44, 0xBC, 0x8A, + 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC7, 0x9E, 0x21, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDA, 0xBF, 0x6C, 0xBB, 0x88, 0x00, + 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x01, 0xBE, 0x8F, 0x00, 0xC1, 0x93, 0x07, 0xF7, 0xF2, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF4, 0xC5, 0x9B, 0x19, 0xBD, 0x8D, 0x00, 0xBF, + 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDE, 0xC6, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF2, 0xE8, 0xCB, 0xBE, 0x8D, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xEE, 0xE1, 0xBB, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0x76, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD9, 0xBE, 0x69, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, + 0x00, 0xCB, 0xA6, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE4, 0xD0, 0x93, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, 0x00, + 0xC4, 0x98, 0x13, 0xFB, 0xF8, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xF8, 0xF0, 0xC4, 0x99, 0x15, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xCF, 0xAC, 0x40, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD0, 0xAD, 0x42, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xCB, 0xA4, 0x2F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, + 0xFF, 0xFF, 0xED, 0xDF, 0xB5, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE5, 0xD2, 0x97, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, 0x8A, 0x00, 0xD1, 0xAF, 0x46, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEF, 0xE3, 0xBE, 0xBC, 0x8C, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xC8, 0x9F, 0x23, 0xFE, + 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xEC, 0xC3, 0x97, 0x10, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, 0x00, 0xC3, 0x96, 0x0E, 0xFA, 0xF6, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEE, 0xE1, 0xBA, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xE7, 0xD6, 0xA1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xF9, + 0xF0, 0xC4, 0x99, 0x14, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF1, 0xE8, 0xC9, 0xBD, 0x8D, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD8, 0xBB, 0x63, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0xE8, 0xC2, 0x96, 0x0D, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCE, 0xAA, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE4, 0xC1, 0x94, 0x09, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDC, 0xB0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xD1, 0xAF, 0x47, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCA, 0xA4, 0x2D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD7, 0xB9, 0x5E, + 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xF5, 0xC6, 0x9C, 0x1B, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xE1, 0xCB, 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xCE, 0xAA, 0x3B, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD6, 0xB8, 0x5D, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD8, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD7, 0xBB, 0x62, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF4, + 0xEC, 0xD4, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xED, 0xE1, 0xB9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF0, 0xE5, 0xC2, 0xBD, 0x8C, 0x00, 0xC0, + 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD5, 0xB7, 0x59, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8A, 0x00, 0xEB, 0xDD, 0xB1, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE0, 0xC9, 0x83, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xE1, 0xCB, 0x88, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF2, 0xE8, 0xC9, 0xBD, 0x8D, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, + 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x19, 0xFC, 0xFA, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE0, 0xC8, + 0x82, 0xBA, 0x87, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, + 0x05, 0xBA, 0x88, 0x00, 0xD7, 0xBA, 0x61, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xCF, 0xAC, 0x40, 0xBC, 0x8A, 0x00, 0xC0, 0x92, + 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDC, 0xAE, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xF6, 0xF0, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF4, 0xEC, 0xD3, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xEE, 0xE1, 0xBA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEC, 0xDF, 0xB4, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, + 0x8A, 0x00, 0xEB, 0xDC, 0xAF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xCE, 0xAB, 0x3D, + 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBC, 0x8B, 0x00, 0xC8, 0x9F, 0x22, + 0xFD, 0xFC, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF0, 0xE5, 0xC3, 0xBD, 0x8C, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xC7, 0x9E, 0x20, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xCA, 0xA4, 0x2D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD0, 0xAD, 0x43, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, 0x00, 0xC3, 0x97, 0x10, 0xFA, 0xF7, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, + 0xFF, 0xFF, 0xE6, 0xD3, 0x9A, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBB, 0x89, 0x00, 0xD3, 0xB2, + 0x4F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xEB, 0xC5, 0x9A, 0x16, 0xBD, + 0x8C, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBE, 0x8E, 0x00, 0xC0, 0x92, 0x04, 0xF4, 0xED, 0xD5, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xD8, 0xBC, 0x65, 0xBA, 0x87, 0x00, 0xC0, 0x92, 0x06, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDD, 0xC4, 0x78, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xED, 0xDF, 0xB6, 0xBC, 0x8A, 0x00, 0xC0, 0x92, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD3, 0xB2, 0x4F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDE, 0xC5, + 0x7A, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xF6, 0xEF, 0xDB, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF4, 0xEC, 0xD4, 0xC1, 0x93, 0x08, 0xBD, 0x8D, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBE, 0x8E, 0x00, 0xBE, 0x8E, 0x00, 0xEE, 0xE2, 0xBC, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xC9, 0xA1, 0x26, 0xBC, 0x8B, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xC8, 0x9F, 0x23, 0xBD, 0x8C, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xD1, 0xAF, 0x47, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x92, 0x03, 0xBB, 0x8A, 0x00, 0xEC, 0xDD, 0xB2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD4, 0xB5, 0x56, 0xBB, 0x89, 0x00, + 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDC, 0xC2, 0x74, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xF2, 0xE8, 0xCB, 0xC1, 0x94, 0x08, 0xBC, 0x8C, 0x00, + 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBD, 0x8C, 0x00, 0xBF, 0x90, 0x00, 0xED, 0xE1, 0xB9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF6, 0xF0, 0xDC, 0xC2, 0x95, 0x0B, 0xBD, 0x8C, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEF, 0xE3, 0xBE, 0xBC, 0x8B, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xD3, + 0xB3, 0x51, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xF7, 0xF1, 0xDE, 0xC1, 0x93, 0x06, 0xBE, 0x8E, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8C, 0x00, 0xCA, 0xA3, + 0x2D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xA5, 0x30, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8E, 0x00, 0xC3, 0x97, 0x0F, 0xFA, 0xF6, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD7, 0xC6, 0x9C, 0x1C, 0xBB, 0x88, 0x00, 0xC0, + 0x92, 0x05, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x05, 0xBB, 0x89, 0x00, 0xC4, 0x99, 0x14, 0xF2, 0xE8, 0xCA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF3, 0xEA, 0xCE, 0xC2, 0x95, 0x0C, 0xBC, 0x8A, 0x00, 0xC0, 0x92, 0x06, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, + 0xFF, 0xFF, 0xFF, 0xE1, 0xCC, 0x89, 0xBA, 0x87, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x8F, 0x00, 0xF4, 0xED, 0xD5, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, + 0xFF, 0xFF, 0xEB, 0xDC, 0xAF, 0xBC, 0x8A, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xEC, 0xDD, 0xB1, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xEB, 0xC3, 0x97, 0x0F, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xDE, 0xC6, 0x7C, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFB, 0xF9, 0xF1, 0xD2, 0xB0, 0x4A, 0xBA, 0x88, 0x00, 0xBE, 0x8E, + 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x05, 0xBE, 0x8E, 0x00, 0xBA, + 0x88, 0x00, 0xD0, 0xAE, 0x46, 0xFA, 0xF6, 0xEB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF6, 0xF0, 0xDD, 0xC9, 0xA2, 0x29, 0xBA, 0x87, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, + 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBB, 0x89, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, + 0xFF, 0xFF, 0xDD, 0xC4, 0x77, 0xBA, 0x87, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x05, 0xB9, 0x86, 0x00, 0xE2, 0xCC, 0x8A, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, + 0xFF, 0xE6, 0xD3, 0x9A, 0xBB, 0x8A, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC1, 0x93, 0x06, 0xB9, 0x86, 0x00, 0xD7, 0xBA, 0x61, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF0, 0xE5, 0xC3, 0xBD, 0x8C, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBE, 0x8F, 0x00, 0xC2, 0x95, 0x0A, 0xF9, 0xF4, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xD1, 0x96, 0xC2, 0x96, 0x0D, 0xBA, 0x88, 0x00, + 0xBF, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBE, 0x8E, 0x00, 0xBA, 0x88, 0x00, 0xC3, 0x98, 0x11, 0xE5, 0xD2, 0x98, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xDB, 0xC1, 0x6F, 0xBF, 0x8F, 0x00, 0xBB, 0x88, 0x00, 0xBE, 0x8E, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, + 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBE, 0x8F, 0x00, 0xBB, 0x89, 0x00, 0xBC, + 0x8B, 0x00, 0xCE, 0xAA, 0x3B, 0xF4, 0xEC, 0xD4, 0xDA, 0xBF, 0x6C, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, + 0xFF, 0xE1, 0xCB, 0x87, 0xBC, 0x8B, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xB9, 0x86, 0x00, 0xD8, 0xBC, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xE9, 0xD9, 0xA9, 0xBF, 0x90, 0x00, 0xBC, 0x8B, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x05, 0xBA, 0x87, 0x00, 0xCF, 0xAC, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE2, 0xCC, 0x8A, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBB, 0x88, 0x00, 0xD8, 0xBB, 0x63, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xE9, 0xDA, 0xBF, 0x6C, 0xC1, 0x93, 0x07, 0xBA, + 0x88, 0x00, 0xBD, 0x8C, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBC, 0x8B, 0x00, 0xBA, 0x88, 0x00, 0xC3, 0x97, 0x10, 0xDD, 0xC4, 0x78, 0xFB, 0xF7, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xED, 0xD5, 0xD7, 0xBA, 0x61, 0xC3, 0x97, 0x0F, 0xBB, 0x8A, 0x00, 0xBB, 0x88, 0x00, 0xBC, 0x8A, 0x00, 0xBD, + 0x8C, 0x00, 0xBE, 0x8E, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8F, 0x00, 0xBE, 0x8E, 0x00, 0xBD, 0x8D, 0x00, 0xBC, 0x8B, 0x00, 0xBB, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xC2, 0x95, 0x0C, 0xD4, 0xB4, 0x54, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xEF, 0xD9, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEE, 0xE1, 0xBA, 0xC6, 0x9C, 0x1C, 0xBA, 0x87, 0x00, 0xBE, 0x8E, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x91, 0x01, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBC, 0x8C, 0x00, 0xBB, 0x8A, 0x00, 0xDC, 0xC3, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF4, + 0xEC, 0xD3, 0xCB, 0xA5, 0x30, 0xBA, 0x88, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, + 0x01, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBD, 0x8D, 0x00, 0xBA, 0x87, 0x00, 0xD4, 0xB5, 0x54, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD2, 0xB0, 0x4A, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, 0x8D, 0x00, 0xF0, 0xE6, 0xC4, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE3, 0xDF, 0xC7, 0x7F, 0xC8, 0xA0, + 0x26, 0xBD, 0x8D, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8A, 0x00, 0xBD, 0x8D, 0x00, 0xBF, 0x8F, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBE, 0x8F, 0x00, + 0xBD, 0x8C, 0x00, 0xBB, 0x89, 0x00, 0xBB, 0x88, 0x00, 0xBF, 0x90, 0x00, 0xCC, 0xA7, 0x35, 0xE3, 0xCF, 0x91, 0xFA, 0xF7, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xEC, 0xEA, 0xDB, 0xAB, 0xDA, 0xC0, 0x6D, 0xCF, 0xAC, 0x40, 0xC8, 0xA0, 0x24, 0xC4, 0x99, + 0x14, 0xC2, 0x95, 0x0B, 0xC1, 0x94, 0x0A, 0xC1, 0x94, 0x0A, 0xC2, 0x96, 0x0E, 0xC6, 0x9C, 0x1C, 0xCD, 0xA8, 0x38, 0xD8, 0xBC, 0x66, 0xE9, 0xD8, 0xA6, 0xF9, 0xF5, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFD, 0xFC, 0xF8, + 0xFF, 0xFF, 0xFF, 0xD6, 0xB7, 0x5A, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFB, 0xF6, 0xDE, 0xC6, 0x7C, 0xC3, 0x97, 0x11, 0xBA, 0x88, 0x00, 0xBC, 0x8A, 0x00, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBD, 0x8D, 0x00, 0xBB, 0x89, + 0x00, 0xBB, 0x89, 0x00, 0xC9, 0xA2, 0x2A, 0xED, 0xDF, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE4, 0xD0, 0x92, 0xC6, 0x9D, 0x1D, 0xBB, 0x89, 0x00, 0xBB, 0x89, 0x00, 0xBD, 0x8D, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBE, 0x8E, 0x00, 0xBB, 0x8A, 0x00, + 0xBB, 0x88, 0x00, 0xC5, 0x9B, 0x19, 0xE6, 0xD4, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x97, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCA, 0xA3, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF0, 0xE6, 0xC5, + 0xDF, 0xC8, 0x7F, 0xD0, 0xAE, 0x44, 0xC6, 0x9C, 0x1C, 0xC0, 0x92, 0x05, 0xBD, 0x8D, 0x00, 0xBC, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBC, 0x8B, 0x00, 0xBE, 0x8F, 0x00, 0xC2, 0x96, 0x0D, 0xC9, 0xA2, 0x29, 0xD5, + 0xB6, 0x56, 0xE4, 0xD0, 0x94, 0xF5, 0xED, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFB, 0xF8, 0xF0, 0xF9, 0xF5, 0xE7, + 0xF8, 0xF3, 0xE4, 0xF8, 0xF3, 0xE4, 0xFA, 0xF6, 0xE9, 0xFD, 0xFB, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF2, + 0xE9, 0xCD, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFB, 0xF7, 0xED, 0xE5, 0xD2, 0x97, 0xD0, 0xAE, 0x45, 0xC4, 0x98, 0x13, 0xBE, 0x8E, 0x00, 0xBC, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBC, 0x8B, 0x00, 0xBF, 0x90, 0x00, 0xC6, 0x9C, 0x1A, 0xD4, 0xB4, 0x53, 0xEA, 0xDB, 0xAD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFC, 0xF8, 0xE9, 0xD9, 0xA7, 0xD3, 0xB3, 0x51, 0xC5, 0x9B, 0x19, 0xBF, 0x8F, 0x00, 0xBC, 0x8B, 0x00, 0xBB, 0x8A, 0x00, 0xBB, 0x8A, 0x00, 0xBC, 0x8B, 0x00, 0xBE, 0x8F, 0x00, 0xC4, 0x99, 0x14, 0xD1, 0xAF, 0x47, 0xE6, 0xD4, 0x9C, 0xFD, + 0xFB, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xEA, 0xDB, 0xAD, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBA, 0x88, 0x00, 0xDD, 0xC4, 0x77, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFD, 0xFB, 0xF6, 0xF7, 0xF0, 0xDD, 0xF1, 0xE6, 0xC6, 0xEC, 0xDE, 0xB3, 0xE9, 0xDA, 0xA9, 0xE9, 0xD9, 0xA8, 0xEA, 0xDB, 0xAD, 0xEE, 0xE2, 0xBB, 0xF3, 0xEA, 0xD0, 0xF9, 0xF5, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xD2, 0xB0, + 0x4A, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xF8, 0xEF, 0xF3, 0xE9, 0xCD, 0xEC, 0xDE, 0xB3, 0xE9, 0xD9, 0xA8, 0xEA, 0xDA, 0xAA, 0xEE, 0xE1, 0xBA, 0xF4, 0xED, 0xD5, 0xFD, 0xFB, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF5, 0xF4, 0xEC, 0xD3, 0xED, 0xDF, 0xB6, 0xE9, 0xD9, 0xA9, 0xE9, 0xDA, 0xA9, 0xED, 0xDF, 0xB6, 0xF3, 0xEA, 0xD0, 0xFB, 0xF9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, + 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFF, 0xD4, 0xB5, 0x55, 0xBB, + 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, 0x8C, 0x00, 0xEE, 0xE2, 0xBB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEF, 0xE3, 0xBE, 0xBC, 0x8B, 0x00, + 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, + 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xE4, 0xC1, 0x94, 0x09, 0xBE, 0x8F, 0x00, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC3, 0x98, 0x12, 0xF9, 0xF5, 0xE9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, + 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xCE, 0xAA, 0x3B, 0xBC, 0x8B, 0x00, 0xC0, + 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xE0, 0xC8, 0x82, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBC, 0x8A, 0x00, 0xCC, 0xA7, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xEB, 0xDC, 0xAF, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF2, 0xC5, 0x9A, 0x16, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBB, 0x88, 0x00, 0xD4, 0xB4, 0x52, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xA4, 0x2E, 0xBC, 0x8C, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xDF, 0xC7, 0x7F, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBA, 0x88, 0x00, 0xD8, 0xBC, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE7, 0xD5, 0x9F, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, + 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xF7, 0xF1, 0xDE, 0xC0, 0x92, 0x05, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xD9, 0xBD, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFC, 0xF9, 0xF2, 0xF8, 0xF2, 0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xC7, 0x9E, 0x21, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, + 0xFF, 0xE0, 0xCA, 0x85, 0xE8, 0xD7, 0xA2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFF, 0xFF, 0xD0, 0xAE, 0x44, 0xBB, 0x8A, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xD6, 0xB9, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xD2, 0xB0, 0x4A, 0xEB, 0xDC, 0xAE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8F, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF5, 0xED, 0xD6, 0xBE, 0x8E, 0x00, + 0xC0, 0x93, 0x06, 0xF6, 0xEF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xE1, 0xCC, 0x89, 0xBB, + 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xD1, 0xAF, 0x47, 0xFD, 0xFC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xDA, 0xBF, 0x6D, 0xB8, 0x83, 0x00, 0xEF, 0xE4, 0xC0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, + 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xF7, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFC, 0xF9, 0xF2, 0xC4, 0x99, 0x15, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0xE7, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xC9, 0xA2, 0x29, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xC6, + 0x9D, 0x1E, 0xFB, 0xF8, 0xEE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xEE, 0xE1, 0xBB, 0xBD, 0x8D, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x92, 0x05, 0xBB, 0x89, 0x00, 0xC9, 0xA1, 0x26, 0xF5, 0xEE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC1, 0x70, 0xBB, 0x89, 0x00, 0xBD, 0x8D, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, + 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xE3, 0xCF, 0x90, 0xE8, 0xD7, 0xA3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, 0xC7, 0x7E, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xE8, 0xD7, 0xA3, 0xD6, 0xB8, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xD4, 0xB4, 0x52, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBC, 0x8A, 0x00, 0xCA, 0xA2, + 0x2A, 0xFC, 0xF9, 0xF2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xF4, 0xEC, 0xD3, 0xC1, 0x93, 0x07, 0xBE, 0x8E, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, + 0x05, 0xBC, 0x8B, 0x00, 0xC0, 0x92, 0x05, 0xE8, 0xD6, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD8, 0xBB, 0x62, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x06, 0xBD, 0x8C, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, + 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE1, 0xCC, 0x89, 0xBA, 0x87, 0x00, 0xED, 0xE0, 0xB9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0xE7, 0xC2, 0x95, 0x0B, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xEC, 0xDE, 0xB3, 0xB7, 0x82, 0x00, 0xDC, 0xC3, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xDA, 0xBF, 0x6B, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBB, 0x8A, 0x00, 0xC9, 0xA1, 0x27, + 0xFA, 0xF6, 0xEA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xF5, 0xEE, 0xD8, 0xC3, 0x97, 0x10, 0xBD, 0x8D, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, + 0xBE, 0x8F, 0x00, 0xBB, 0x89, 0x00, 0xD5, 0xB6, 0x57, 0xFB, 0xF7, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFC, 0xFA, 0xF3, 0xD0, 0xAE, 0x44, 0xBA, 0x88, 0x00, 0xC0, + 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, + 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCF, 0x91, 0xBA, 0x87, 0x00, 0xBF, 0x8F, 0x00, 0xEA, 0xDA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xDA, 0xBF, 0x6D, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xEB, 0xDD, 0xB1, 0xBC, 0x8C, 0x00, 0xBB, 0x8A, 0x00, 0xD9, 0xBD, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC1, 0x70, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBC, 0x8B, 0x00, 0xC5, 0x9A, 0x18, 0xF3, + 0xEA, 0xCF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xF1, 0xE6, 0xC6, 0xC2, 0x95, 0x0C, 0xBD, 0x8C, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, + 0x91, 0x03, 0xBB, 0x89, 0x00, 0xC4, 0x98, 0x12, 0xE7, 0xD5, 0x9E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xE6, 0xC5, 0xC6, 0x9C, 0x1C, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, 0xC0, 0x91, + 0x02, 0xBC, 0x8C, 0x00, 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBB, 0x89, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xE2, 0xCD, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF6, 0xF0, 0xDC, 0xC0, 0x91, 0x02, 0xBF, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, + 0x8A, 0x00, 0xC1, 0x93, 0x07, 0xBA, 0x88, 0x00, 0xD2, 0xB1, 0x4B, 0xFD, 0xFC, 0xF8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xD6, 0xB8, 0x5B, 0xBA, 0x88, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBD, 0x8C, 0x00, 0xBF, 0x90, 0x01, 0xE6, 0xD4, + 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE7, 0xD5, 0x9F, 0xBF, 0x8F, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x92, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, + 0x04, 0xBE, 0x8E, 0x00, 0xBB, 0x89, 0x00, 0xCD, 0xA9, 0x38, 0xEF, 0xE3, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xDD, 0xC5, 0x79, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8C, 0x00, + 0xEE, 0xE2, 0xBD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xED, 0xC3, 0x98, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xE3, 0xCE, 0x8E, 0xBA, 0x88, 0x00, 0xC0, 0x93, 0x06, 0xBF, 0x90, 0x01, 0xBB, 0x88, 0x00, 0xD7, 0xBA, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, + 0xFB, 0xFF, 0xFF, 0xFF, 0xD6, 0xB9, 0x5D, 0xBB, 0x89, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xFA, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0xB1, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xC0, 0x92, 0x05, 0xBB, 0x89, 0x00, 0xC8, 0x9F, 0x23, 0xF2, 0xE9, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xF2, 0xE0, 0xCC, 0xA7, 0x34, 0xBB, 0x88, + 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x8F, 0x00, 0xBB, 0x89, 0x00, 0xD4, 0xB4, 0x54, + 0xFA, 0xF6, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xF6, 0xD7, 0xBA, 0x61, 0xBB, 0x89, 0x00, + 0xBF, 0x8F, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, + 0xC0, 0x92, 0x04, 0xBC, 0x8B, 0x00, 0xBC, 0x8C, 0x00, 0xD1, 0xAF, 0x48, 0xEF, 0xE3, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDC, 0xAF, 0xC8, 0xA0, 0x25, 0xBA, 0x88, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8C, 0x00, 0xEE, 0xE1, 0xBB, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFC, 0xF9, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, + 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFA, 0xF6, 0xEA, 0xC3, 0x97, 0x11, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCC, 0xA7, 0x34, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, + 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFD, 0xFC, 0xF8, + 0xFF, 0xFF, 0xFF, 0xE2, 0xCD, 0x8D, 0xBB, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x04, 0xBA, 0x88, 0x00, 0xCA, 0xA3, 0x2B, 0xF3, 0xEB, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, + 0xF2, 0xE9, 0xCD, 0xBD, 0x8D, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBD, + 0x8D, 0x00, 0xC5, 0x9B, 0x1A, 0xFC, 0xF9, 0xF2, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, + 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFD, 0xFC, 0xF9, 0xFF, 0xFF, 0xFF, 0xEB, 0xDC, 0xAF, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, + 0xC0, 0x92, 0x05, 0xBD, 0x8C, 0x00, 0xBE, 0x8F, 0x00, 0xDF, 0xC8, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xD4, 0x9C, 0xC1, 0x94, 0x09, 0xBC, 0x8A, 0x00, 0xC0, 0x92, 0x05, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xBB, 0x89, 0x00, 0xC3, 0x96, 0x0E, 0xE3, + 0xCF, 0x91, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDB, 0xAD, 0xC6, 0x9C, 0x1C, 0xBB, 0x88, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x01, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBB, 0x8A, 0x00, 0xBC, 0x8C, 0x00, 0xCD, 0xA9, 0x3A, 0xE8, 0xD7, 0xA3, 0xFC, 0xFA, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xDF, 0xB6, 0xCE, + 0xAA, 0x3C, 0xBB, 0x8A, 0x00, 0xBD, 0x8C, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xF1, 0xE6, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xF8, 0xC4, 0x98, 0x12, 0xBE, 0x8E, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xCD, 0xA8, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, + 0xD1, 0x95, 0xBA, 0x88, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x05, 0xBC, 0x8B, 0x00, 0xBF, 0x8F, 0x00, 0xDF, 0xC7, 0x7F, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xD9, 0xA8, 0xCA, 0xA4, 0x2D, 0xBF, + 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xC6, 0x9C, + 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xE1, 0xB9, 0xBB, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, + 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBA, 0x88, 0x00, 0xC9, 0xA2, 0x28, 0xEB, 0xDD, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xE6, 0xC6, 0xCF, 0xAB, 0x3E, 0xBB, 0x89, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xBE, 0x8E, 0x00, 0xBA, 0x88, 0x00, 0xC9, 0xA1, + 0x26, 0xE7, 0xD5, 0x9F, 0xFE, 0xFD, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, + 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE4, 0xC2, 0xD0, 0xAD, 0x42, 0xBB, 0x8A, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBC, 0x8B, 0x00, 0xBB, 0x89, 0x00, 0xC5, 0x9A, 0x17, 0xD9, 0xBD, 0x68, 0xEE, 0xE2, 0xBD, 0xFD, 0xFC, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, + 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFE, + 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0xE7, 0xE4, 0xD1, 0x95, 0xCB, 0xA5, 0x30, 0xBC, 0x8B, 0x00, 0xBC, 0x8A, 0x00, 0xC0, 0x91, + 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xE3, 0xCF, 0x91, 0xF3, 0xEA, 0xCE, 0xF0, 0xE4, 0xC2, 0xF0, 0xE5, 0xC4, + 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, + 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC3, 0xF1, 0xE7, 0xC8, 0xED, 0xDF, 0xB6, 0xC2, 0x96, 0x0D, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBD, 0x8C, 0x00, 0xC9, 0xA2, 0x29, 0xF1, 0xE7, 0xC8, 0xF0, 0xE5, 0xC3, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, + 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xEF, 0xE4, 0xC1, 0xF4, 0xEB, 0xD2, 0xDA, 0xC0, 0x6D, 0xBC, 0x8A, + 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBA, 0x88, 0x00, 0xC7, 0x9E, 0x21, 0xE7, 0xD5, 0x9E, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0xFF, 0xFE, 0xFD, 0xFE, + 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF7, 0xEC, 0xE5, 0xD1, 0x96, 0xCA, 0xA3, 0x2C, 0xBB, 0x89, 0x00, 0xBC, 0x8B, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBE, 0x8E, 0x00, 0xC4, 0x99, 0x14, 0xEE, 0xE2, 0xBC, + 0xF1, 0xE6, 0xC6, 0xF0, 0xE5, 0xC3, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, + 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE5, 0xC4, 0xF0, 0xE4, 0xC1, 0xF3, 0xEA, 0xD0, 0xE1, 0xCB, 0x88, 0xBC, 0x8C, 0x00, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x01, 0xC0, 0x92, 0x04, 0xBD, 0x8C, 0x00, 0xBC, 0x8A, 0x00, 0xCD, 0xA8, 0x37, 0xEA, 0xDA, 0xAA, 0xFE, 0xFD, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFE, 0xFE, 0xFD, + 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xE3, 0xBE, 0xD2, 0xB1, 0x4C, 0xBD, 0x8D, 0x00, 0xBC, 0x8A, 0x00, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xBD, 0x8C, 0x00, 0xBB, 0x89, 0x00, + 0xC7, 0x9E, 0x1F, 0xDF, 0xC8, 0x80, 0xF6, 0xEF, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFC, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFD, 0xFE, 0xFE, 0xFC, 0xFE, 0xFD, 0xFB, 0xFE, 0xFD, 0xFB, 0xFE, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFB, 0xF7, 0xEA, 0xDA, 0xAB, 0xCF, 0xAC, 0x41, 0xBD, 0x8C, 0x00, 0xBC, 0x8A, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBE, 0x8E, 0x00, 0xBB, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xC6, 0x9D, 0x1D, 0xD6, 0xB8, 0x5C, 0xE7, 0xD6, 0xA0, 0xF5, 0xED, 0xD7, 0xFE, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xEF, 0xDA, 0xE6, 0xD4, 0x9C, 0xD3, 0xB2, 0x4E, 0xC2, 0x95, 0x0C, 0xBB, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBE, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, + 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, + 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x8F, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, + 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x92, 0x04, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xC7, 0x9E, 0x21, 0xDF, 0xC8, 0x7F, 0xF4, 0xEC, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF4, 0xE7, 0xEA, 0xDA, 0xAB, 0xD5, 0xB7, 0x59, 0xC3, 0x97, 0x0F, 0xBB, 0x88, 0x00, 0xBD, 0x8C, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, + 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, + 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xC0, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xBC, 0x8B, 0x00, 0xBB, 0x89, 0x00, 0xC7, 0x9E, 0x20, 0xDC, 0xC3, 0x74, 0xF0, 0xE6, 0xC5, 0xFD, 0xFC, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEC, 0xD4, 0xE1, 0xCB, 0x88, 0xCB, 0xA5, + 0x30, 0xBC, 0x8C, 0x00, 0xBB, 0x89, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBD, 0x8D, 0x00, 0xBA, + 0x88, 0x00, 0xBF, 0x91, 0x02, 0xCE, 0xAB, 0x3E, 0xE2, 0xCD, 0x8C, 0xF3, 0xEA, 0xCE, 0xFD, 0xFC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xF8, 0xEE, 0xED, 0xE0, 0xB7, 0xD9, 0xBE, 0x69, 0xC6, 0x9C, 0x1C, + 0xBB, 0x8A, 0x00, 0xBC, 0x8A, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xBB, 0x89, 0x00, 0xBF, 0x90, 0x01, 0xC7, 0x9F, 0x22, 0xD2, 0xB1, 0x4C, 0xDD, 0xC4, 0x78, 0xE7, 0xD5, 0x9F, 0xEF, 0xE3, + 0xBF, 0xF5, 0xED, 0xD7, 0xF9, 0xF5, 0xE8, 0xFC, 0xFA, 0xF2, 0xFE, 0xFD, 0xFA, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xF9, 0xFB, 0xF9, 0xF1, 0xF8, 0xF3, 0xE4, 0xF3, 0xEA, 0xCF, 0xEB, 0xDD, 0xB1, 0xE1, 0xCC, 0x89, + 0xD5, 0xB7, 0x5A, 0xC9, 0xA2, 0x29, 0xC0, 0x91, 0x02, 0xBB, 0x89, 0x00, 0xBB, 0x89, 0x00, 0xBE, 0x8F, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, + 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, + 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, + 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBD, 0x8D, 0x00, 0xBA, 0x88, 0x00, 0xBF, 0x8F, 0x00, 0xCA, 0xA4, 0x2E, 0xD9, 0xBD, 0x68, 0xE6, 0xD4, 0x9C, 0xF0, 0xE5, + 0xC4, 0xF7, 0xF1, 0xDE, 0xFB, 0xF8, 0xEE, 0xFD, 0xFC, 0xF7, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFD, 0xFB, 0xF5, 0xFA, 0xF6, 0xEB, 0xF6, 0xEF, 0xDA, 0xEF, 0xE4, 0xC0, 0xE6, 0xD4, 0x9C, 0xDA, 0xBF, 0x6D, + 0xCD, 0xA9, 0x39, 0xC2, 0x95, 0x0B, 0xBB, 0x8A, 0x00, 0xBB, 0x89, 0x00, 0xBE, 0x8E, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, + 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, + 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x91, 0x03, 0xBD, 0x8D, 0x00, 0xBA, 0x88, 0x00, 0xBD, 0x8D, 0x00, 0xC7, 0x9D, 0x1E, 0xD4, 0xB5, 0x54, 0xE2, 0xCC, 0x8A, 0xED, 0xDF, 0xB6, 0xF4, 0xED, 0xD5, 0xFA, 0xF6, 0xEA, 0xFD, 0xFB, 0xF6, 0xFE, 0xFE, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xF9, 0xFB, 0xF8, 0xEE, 0xF6, 0xF0, 0xDD, 0xEF, 0xE4, 0xC0, 0xE5, 0xD2, 0x97, 0xD8, 0xBB, 0x62, 0xCA, 0xA2, 0x2A, 0xBF, 0x8F, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xC0, 0x91, 0x02, + 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBF, 0x90, + 0x00, 0xBC, 0x8A, 0x00, 0xBA, 0x88, 0x00, 0xBE, 0x8E, 0x00, 0xC7, 0x9E, 0x1F, 0xD3, 0xB2, 0x4F, 0xDF, 0xC7, 0x7F, 0xE9, 0xDA, 0xA9, 0xF1, 0xE8, 0xC9, 0xF7, 0xF2, 0xE0, 0xFB, 0xF8, 0xEF, 0xFD, 0xFC, 0xF8, 0xFF, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFD, 0xFD, 0xFC, 0xF9, 0xFB, 0xF8, 0xEF, 0xF7, 0xF2, 0xE0, 0xF1, 0xE7, 0xC7, 0xE8, 0xD7, 0xA4, 0xDD, 0xC3, 0x76, 0xD0, 0xAD, 0x42, 0xC4, 0x98, 0x12, 0xBC, 0x8B, 0x00, 0xBB, 0x88, 0x00, 0xBD, 0x8D, 0x00, 0xC0, 0x91, 0x03, 0xC0, + 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBD, 0x8C, 0x00, 0xBF, 0x90, 0x01, + 0xC2, 0x95, 0x0C, 0xC5, 0x9A, 0x18, 0xC7, 0x9E, 0x20, 0xC8, 0xA0, 0x26, 0xCA, 0xA3, 0x2B, 0xC9, 0xA1, 0x26, 0xC7, 0x9E, 0x1F, 0xC4, 0x9A, 0x16, 0xC1, 0x94, 0x09, 0xBE, 0x8F, 0x00, 0xBC, 0x8A, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBD, + 0x8C, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x00, 0xBC, 0x8C, 0x00, 0xBB, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBD, 0x8C, 0x00, 0xC0, 0x92, 0x05, + 0xC4, 0x98, 0x12, 0xC6, 0x9D, 0x1D, 0xC8, 0x9F, 0x24, 0xCA, 0xA2, 0x2A, 0xC9, 0xA2, 0x29, 0xC8, 0x9F, 0x22, 0xC6, 0x9C, 0x1B, 0xC3, 0x97, 0x0F, 0xC0, 0x91, 0x03, 0xBD, 0x8C, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xBE, + 0x8F, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x02, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8B, 0x00, 0xBF, 0x90, 0x00, 0xC3, 0x96, 0x0E, 0xC6, 0x9C, 0x1B, 0xC8, 0x9F, 0x23, 0xCA, 0xA2, 0x2A, + 0xC9, 0xA1, 0x27, 0xC7, 0x9D, 0x1F, 0xC4, 0x98, 0x13, 0xC0, 0x92, 0x04, 0xBD, 0x8C, 0x00, 0xBB, 0x88, 0x00, 0xBB, 0x88, 0x00, 0xBD, 0x8C, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xC0, 0x91, 0x03, + 0xC0, 0x92, 0x04, 0xBF, 0x90, 0x01, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBB, 0x89, 0x00, 0xBD, 0x8D, 0x00, 0xC1, 0x93, 0x07, 0xC4, 0x99, 0x13, 0xC7, 0x9D, 0x1E, 0xC8, 0xA0, 0x25, 0xCA, 0xA3, 0x2B, 0xC8, 0xA0, 0x26, 0xC7, + 0x9D, 0x1F, 0xC4, 0x99, 0x14, 0xC1, 0x93, 0x06, 0xBD, 0x8D, 0x00, 0xBB, 0x89, 0x00, 0xBA, 0x88, 0x00, 0xBC, 0x8A, 0x00, 0xBE, 0x8E, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBE, 0x8F, 0x00, 0xBE, + 0x8D, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8D, 0x00, 0xBE, 0x8E, 0x00, 0xBE, 0x8F, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, + 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xC0, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xBF, 0x91, 0x02, 0xBF, 0x8F, 0x00, 0xBE, 0x8E, 0x00, 0xBD, + 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8D, 0x00, 0xBE, 0x8E, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x01, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x00, 0xBE, 0x8E, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, + 0x8D, 0x00, 0xBE, 0x8E, 0x00, 0xBF, 0x8F, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x02, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x03, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x90, 0x01, 0xBF, 0x8F, 0x00, 0xBE, 0x8E, 0x00, 0xBD, 0x8D, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8C, 0x00, 0xBD, 0x8D, 0x00, 0xBE, 0x8E, + 0x00, 0xBF, 0x8F, 0x00, 0xBF, 0x91, 0x01, 0xC0, 0x92, 0x04, 0xC0, 0x92, 0x04, 0xC0, 0x91, 0x03, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x01, 0xBF, 0x91, + 0x02, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, + 0x02, 0xC0, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, + 0x01, 0xBF, 0x90, 0x01, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x01, 0xBF, 0x91, 0x01, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xC0, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x02, 0xBF, 0x91, 0x01, 0xBF, 0x90, 0x01, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, + 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, + 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, + 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0xBF, 0x90, 0x00, 0x00 +}; + +/*************************** End of file ****************************/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bartlett256.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bartlett256.h new file mode 100644 index 0000000..bae7f54 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bartlett256.h @@ -0,0 +1,47 @@ +// bartlett256.h + +float32_t bartlett[256] = { +0.0000E+00,7.8431E-03,1.5686E-02,2.3529E-02,3.1373E-02,3.9216E-02, +4.7059E-02,5.4902E-02,6.2745E-02,7.0588E-02,7.8431E-02,8.6275E-02, +9.4118E-02,1.0196E-01,1.0980E-01,1.1765E-01,1.2549E-01,1.3333E-01, +1.4118E-01,1.4902E-01,1.5686E-01,1.6471E-01,1.7255E-01,1.8039E-01, +1.8824E-01,1.9608E-01,2.0392E-01,2.1176E-01,2.1961E-01,2.2745E-01, +2.3529E-01,2.4314E-01,2.5098E-01,2.5882E-01,2.6667E-01,2.7451E-01, +2.8235E-01,2.9020E-01,2.9804E-01,3.0588E-01,3.1373E-01,3.2157E-01, +3.2941E-01,3.3725E-01,3.4510E-01,3.5294E-01,3.6078E-01,3.6863E-01, +3.7647E-01,3.8431E-01,3.9216E-01,4.0000E-01,4.0784E-01,4.1569E-01, +4.2353E-01,4.3137E-01,4.3922E-01,4.4706E-01,4.5490E-01,4.6275E-01, +4.7059E-01,4.7843E-01,4.8627E-01,4.9412E-01,5.0196E-01,5.0980E-01, +5.1765E-01,5.2549E-01,5.3333E-01,5.4118E-01,5.4902E-01,5.5686E-01, +5.6471E-01,5.7255E-01,5.8039E-01,5.8824E-01,5.9608E-01,6.0392E-01, +6.1176E-01,6.1961E-01,6.2745E-01,6.3529E-01,6.4314E-01,6.5098E-01, +6.5882E-01,6.6667E-01,6.7451E-01,6.8235E-01,6.9020E-01,6.9804E-01, +7.0588E-01,7.1373E-01,7.2157E-01,7.2941E-01,7.3725E-01,7.4510E-01, +7.5294E-01,7.6078E-01,7.6863E-01,7.7647E-01,7.8431E-01,7.9216E-01, +8.0000E-01,8.0784E-01,8.1569E-01,8.2353E-01,8.3137E-01,8.3922E-01, +8.4706E-01,8.5490E-01,8.6275E-01,8.7059E-01,8.7843E-01,8.8627E-01, +8.9412E-01,9.0196E-01,9.0980E-01,9.1765E-01,9.2549E-01,9.3333E-01, +9.4118E-01,9.4902E-01,9.5686E-01,9.6471E-01,9.7255E-01,9.8039E-01, +9.8824E-01,9.9608E-01,9.9608E-01,9.8824E-01,9.8039E-01,9.7255E-01, +9.6471E-01,9.5686E-01,9.4902E-01,9.4118E-01,9.3333E-01,9.2549E-01, +9.1765E-01,9.0980E-01,9.0196E-01,8.9412E-01,8.8627E-01,8.7843E-01, +8.7059E-01,8.6275E-01,8.5490E-01,8.4706E-01,8.3922E-01,8.3137E-01, +8.2353E-01,8.1569E-01,8.0784E-01,8.0000E-01,7.9216E-01,7.8431E-01, +7.7647E-01,7.6863E-01,7.6078E-01,7.5294E-01,7.4510E-01,7.3725E-01, +7.2941E-01,7.2157E-01,7.1373E-01,7.0588E-01,6.9804E-01,6.9020E-01, +6.8235E-01,6.7451E-01,6.6667E-01,6.5882E-01,6.5098E-01,6.4314E-01, +6.3529E-01,6.2745E-01,6.1961E-01,6.1176E-01,6.0392E-01,5.9608E-01, +5.8824E-01,5.8039E-01,5.7255E-01,5.6471E-01,5.5686E-01,5.4902E-01, +5.4118E-01,5.3333E-01,5.2549E-01,5.1765E-01,5.0980E-01,5.0196E-01, +4.9412E-01,4.8627E-01,4.7843E-01,4.7059E-01,4.6275E-01,4.5490E-01, +4.4706E-01,4.3922E-01,4.3137E-01,4.2353E-01,4.1569E-01,4.0784E-01, +4.0000E-01,3.9216E-01,3.8431E-01,3.7647E-01,3.6863E-01,3.6078E-01, +3.5294E-01,3.4510E-01,3.3725E-01,3.2941E-01,3.2157E-01,3.1373E-01, +3.0588E-01,2.9804E-01,2.9020E-01,2.8235E-01,2.7451E-01,2.6667E-01, +2.5882E-01,2.5098E-01,2.4314E-01,2.3529E-01,2.2745E-01,2.1961E-01, +2.1176E-01,2.0392E-01,1.9608E-01,1.8824E-01,1.8039E-01,1.7255E-01, +1.6471E-01,1.5686E-01,1.4902E-01,1.4118E-01,1.3333E-01,1.2549E-01, +1.1765E-01,1.0980E-01,1.0196E-01,9.4118E-02,8.6275E-02,7.8431E-02, +7.0588E-02,6.2745E-02,5.4902E-02,4.7059E-02,3.9216E-02,3.1373E-02, +2.3529E-02,1.5686E-02,7.8431E-03,0.0000E+00 +}; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bilinear.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bilinear.h new file mode 100644 index 0000000..9f9a34c --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bilinear.h @@ -0,0 +1,8 @@ +// bilinear.h +// second order type 1 Chebyshev LPF with 2dB passband ripple +// and cutoff frequency 1500Hz + +#define NUM_SECTIONS 1 + +float b[NUM_SECTIONS][3]={ {0.12895869, 0.25791738, 0.12895869} }; +float a[NUM_SECTIONS][3]={ {1.0, -0.81226498, 0.46166249} }; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/blackman256.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/blackman256.h new file mode 100644 index 0000000..9a2da05 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/blackman256.h @@ -0,0 +1,47 @@ +// blackman256.h + +float32_t blackman[256] = { +0.0000E+00,5.4653E-05,2.1876E-04,4.9274E-04,8.7732E-04,1.3735E-03, +1.9825E-03,2.7060E-03,3.5457E-03,4.5038E-03,5.5825E-03,6.7845E-03, +8.1125E-03,9.5697E-03,1.1159E-02,1.2885E-02,1.4749E-02,1.6758E-02, +1.8913E-02,2.1220E-02,2.3683E-02,2.6306E-02,2.9094E-02,3.2050E-02, +3.5181E-02,3.8490E-02,4.1982E-02,4.5662E-02,4.9535E-02,5.3605E-02, +5.7877E-02,6.2355E-02,6.7044E-02,7.1949E-02,7.7072E-02,8.2420E-02, +8.7994E-02,9.3799E-02,9.9839E-02,1.0612E-01,1.1263E-01,1.1940E-01, +1.2640E-01,1.3366E-01,1.4116E-01,1.4892E-01,1.5693E-01,1.6519E-01, +1.7371E-01,1.8247E-01,1.9150E-01,2.0077E-01,2.1030E-01,2.2007E-01, +2.3009E-01,2.4036E-01,2.5086E-01,2.6161E-01,2.7259E-01,2.8380E-01, +2.9523E-01,3.0688E-01,3.1874E-01,3.3082E-01,3.4309E-01,3.5555E-01, +3.6820E-01,3.8102E-01,3.9401E-01,4.0716E-01,4.2046E-01,4.3390E-01, +4.4746E-01,4.6114E-01,4.7493E-01,4.8881E-01,5.0278E-01,5.1681E-01, +5.3090E-01,5.4504E-01,5.5920E-01,5.7338E-01,5.8757E-01,6.0174E-01, +6.1589E-01,6.3000E-01,6.4405E-01,6.5804E-01,6.7194E-01,6.8574E-01, +6.9942E-01,7.1298E-01,7.2639E-01,7.3964E-01,7.5272E-01,7.6560E-01, +7.7828E-01,7.9074E-01,8.0297E-01,8.1494E-01,8.2665E-01,8.3809E-01, +8.4923E-01,8.6007E-01,8.7058E-01,8.8077E-01,8.9061E-01,9.0009E-01, +9.0921E-01,9.1794E-01,9.2628E-01,9.3422E-01,9.4175E-01,9.4886E-01, +9.5553E-01,9.6177E-01,9.6755E-01,9.7289E-01,9.7776E-01,9.8216E-01, +9.8608E-01,9.8953E-01,9.9250E-01,9.9497E-01,9.9695E-01,9.9845E-01, +9.9944E-01,9.9994E-01,9.9994E-01,9.9944E-01,9.9845E-01,9.9695E-01, +9.9497E-01,9.9250E-01,9.8953E-01,9.8608E-01,9.8216E-01,9.7776E-01, +9.7289E-01,9.6755E-01,9.6177E-01,9.5553E-01,9.4886E-01,9.4175E-01, +9.3422E-01,9.2628E-01,9.1794E-01,9.0921E-01,9.0009E-01,8.9061E-01, +8.8077E-01,8.7058E-01,8.6007E-01,8.4923E-01,8.3809E-01,8.2665E-01, +8.1494E-01,8.0297E-01,7.9074E-01,7.7828E-01,7.6560E-01,7.5272E-01, +7.3964E-01,7.2639E-01,7.1298E-01,6.9942E-01,6.8574E-01,6.7194E-01, +6.5804E-01,6.4405E-01,6.3000E-01,6.1589E-01,6.0174E-01,5.8757E-01, +5.7338E-01,5.5920E-01,5.4504E-01,5.3090E-01,5.1681E-01,5.0278E-01, +4.8881E-01,4.7493E-01,4.6114E-01,4.4746E-01,4.3390E-01,4.2046E-01, +4.0716E-01,3.9401E-01,3.8102E-01,3.6820E-01,3.5555E-01,3.4309E-01, +3.3082E-01,3.1874E-01,3.0688E-01,2.9523E-01,2.8380E-01,2.7259E-01, +2.6161E-01,2.5086E-01,2.4036E-01,2.3009E-01,2.2007E-01,2.1030E-01, +2.0077E-01,1.9150E-01,1.8247E-01,1.7371E-01,1.6519E-01,1.5693E-01, +1.4892E-01,1.4116E-01,1.3366E-01,1.2640E-01,1.1940E-01,1.1263E-01, +1.0612E-01,9.9839E-02,9.3799E-02,8.7994E-02,8.2420E-02,7.7072E-02, +7.1949E-02,6.7044E-02,6.2355E-02,5.7877E-02,5.3605E-02,4.9535E-02, +4.5662E-02,4.1982E-02,3.8490E-02,3.5181E-02,3.2050E-02,2.9094E-02, +2.6306E-02,2.3683E-02,2.1220E-02,1.8913E-02,1.6758E-02,1.4749E-02, +1.2885E-02,1.1159E-02,9.5697E-03,8.1125E-03,6.7845E-03,5.5825E-03, +4.5038E-03,3.5457E-03,2.7060E-03,1.9825E-03,1.3735E-03,8.7732E-04, +4.9274E-04,2.1876E-04,5.4653E-05,0.0000E+00 +}; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bp1750.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bp1750.h new file mode 100644 index 0000000..429c5f3 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/bp1750.h @@ -0,0 +1,20 @@ +// bp1750.h + +#define N 81 + +float h[N] = { +-2.2900E-018,-7.6854E-004,-3.7155E-004,9.2904E-004,8.4076E-004,-6.3832E-004, +-8.8659E-004,1.1437E-004,-8.7308E-019,-1.5955E-004,1.7297E-003,1.7506E-003, +-3.2683E-003,-5.1810E-003,3.0236E-003,9.3494E-003,-1.4152E-017,-1.1950E-002, +-4.9436E-003,1.0855E-002,8.7989E-003,-6.0782E-003,-7.7823E-003,9.3584E-004, +-3.3632E-018,-1.1679E-003,1.2135E-002,1.1871E-002,-2.1607E-002,-3.3696E-002, +1.9537E-002,6.0691E-002,-3.1169E-017,-8.1663E-002,-3.5666E-002,8.4995E-002, +7.7816E-002,-6.4681E-002,-1.1191E-001,2.4196E-002,1.2500E-001,2.4196E-002, +-1.1191E-001,-6.4681E-002,7.7816E-002,8.4995E-002,-3.5666E-002,-8.1663E-002, +-3.1169E-017,6.0691E-002,1.9537E-002,-3.3696E-002,-2.1607E-002,1.1871E-002, +1.2135E-002,-1.1679E-003,-3.3632E-018,9.3584E-004,-7.7823E-003,-6.0782E-003, +8.7989E-003,1.0855E-002,-4.9436E-003,-1.1950E-002,-1.4152E-017,9.3494E-003, +3.0236E-003,-5.1810E-003,-3.2683E-003,1.7506E-003,1.7297E-003,-1.5955E-004, +-8.7308E-019,1.1437E-004,-8.8659E-004,-6.3832E-004,8.4076E-004,9.2904E-004, +-3.7155E-004,-7.6854E-004,-2.2900E-018 +}; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic.h new file mode 100644 index 0000000..f6bbba0 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic.h @@ -0,0 +1,11 @@ +// elliptic.h + +#define NUM_SECTIONS 2 + +float b[NUM_SECTIONS][3] = { +{1.00494714E-002, 7.90748088E-003, 1.00494714E-002}, +{1.00000000E+000, -7.76817178E-001, 1.00000000E+000} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+000, -1.52873456E+000, 6.37031997E-001}, +{1.00000000E+000, -1.51375640E+000, 8.68676718E-001} }; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic_bandpass.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic_bandpass.h new file mode 100644 index 0000000..422e15d --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/elliptic_bandpass.h @@ -0,0 +1,15 @@ +// elliptic_bandpass.h +// this file was generated using +// function TM4C123_iirsos_coeffs.m + +#define NUM_SECTIONS 3 + +float b[NUM_SECTIONS][3] = { +{3.66447758E-01, 6.68778179E-01, 3.66447758E-01}, +{3.66447758E-01, -7.30247388E-01, 3.66447758E-01}, +{5.00744022E-01, 0.00000000E+00, -5.00744022E-01} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+00, -1.73432358E+00, 8.80936887E-01}, +{1.00000000E+00, -2.11941455E-02, 7.18912519E-01}, +{1.00000000E+00, -1.00148804E+00, 4.98832777E-01} }; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/fft.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/fft.h new file mode 100644 index 0000000..3eb6802 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/fft.h @@ -0,0 +1,66 @@ +//fft.h complex FFT function taken from Rulph's C31 book + +void fft(COMPLEX *Y, int M, COMPLEX *w) //input sample array, number of points +{ + COMPLEX temp1,temp2; //temporary storage variables + int i,j,k; //loop counter variables + int upper_leg, lower_leg; //index of upper/lower butterfly leg + int leg_diff; //difference between upper/lower leg + int num_stages=0; //number of FFT stages, or iterations + int index, step; //index and step between twiddle factor + i=1; //log(base 2) of # of points = # of stages + do + { + num_stages+=1; + i=i*2; + } while (i!=M); + + leg_diff=M/2; //starting difference between upper & lower legs + step=2; //step between values in twiddle.h + for (i=0;i
© COPYRIGHT(c) 2016 STMicroelectronics
+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ + +#ifndef __LCD_LOG_CONF_H__ +#define __LCD_LOG_CONF_H__ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32746g_discovery_lcd.h" +#include + + +/** @addtogroup LCD_LOG + * @{ + */ + +/** @defgroup LCD_LOG + * @brief This file is the + * @{ + */ + + +/** @defgroup LCD_LOG_CONF_Exported_Defines + * @{ + */ + +/* Comment the line below to disable the scroll back and forward features */ +#define LCD_SCROLL_ENABLED 1 + +/* Define the Fonts */ +#define LCD_LOG_HEADER_FONT Font16 +#define LCD_LOG_FOOTER_FONT Font12 +#define LCD_LOG_TEXT_FONT Font12 + +/* Define the LCD LOG Color */ +#define LCD_LOG_BACKGROUND_COLOR LCD_COLOR_WHITE +#define LCD_LOG_TEXT_COLOR LCD_COLOR_DARKBLUE + +#define LCD_LOG_SOLID_BACKGROUND_COLOR LCD_COLOR_BLUE +#define LCD_LOG_SOLID_TEXT_COLOR LCD_COLOR_WHITE + +/* Define the cache depth */ +#define CACHE_SIZE 100 +#define YWINDOW_SIZE 17 + +#if (YWINDOW_SIZE > 17) + #error "Wrong YWINDOW SIZE" +#endif + +/* Redirect the printf to the LCD */ +#ifdef __GNUC__ +/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf + set to 'Yes') calls __io_putchar() */ +#define LCD_LOG_PUTCHAR int __io_putchar(int ch) +#else +#define LCD_LOG_PUTCHAR int fputc(int ch, FILE *f) +#endif /* __GNUC__ */ + +/** @defgroup LCD_LOG_CONF_Exported_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup LCD_LOG_Exported_Macros + * @{ + */ + + +/** + * @} + */ + +/** @defgroup LCD_LOG_CONF_Exported_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup LCD_LOG_CONF_Exported_FunctionsPrototype + * @{ + */ + +/** + * @} + */ + + +#endif //__LCD_LOG_CONF_H__ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf10.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf10.h new file mode 100644 index 0000000..3f4624e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf10.h @@ -0,0 +1,8 @@ +// maf10.h +// this file was generated using function tm4c123_fir_coeffs.m + +#define N 10 + +float32_t h[N] = { +0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 +}; \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf5.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf5.h new file mode 100644 index 0000000..94d7dc9 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/maf5.h @@ -0,0 +1,8 @@ +// maf5.h +// this file was generated using function tm4c123_fir_coeffs.m + +#define N 5 + +float32_t h[N] = { +2.0000E-01,2.0000E-01,2.0000E-01,2.0000E-01,2.0000E-01 +}; \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/main.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/main.h new file mode 100644 index 0000000..67586c7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/main.h @@ -0,0 +1,134 @@ +/** + ****************************************************************************** + * @file BSP/Inc/main.h + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief Header for main.c module + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +/* Includes ------------------------------------------------------------------*/ +#include "stdio.h" +#include "stm32746g_discovery.h" +#include "stm32746g_discovery_ts.h" +#include "stm32746g_discovery_lcd.h" +#include "stm32746g_discovery_sdram.h" +#include "stm32746g_discovery_sd.h" +#include "stm32746g_discovery_eeprom.h" +#include "stm32746g_discovery_camera.h" +#include "stm32746g_discovery_audio.h" +#include "stm32746g_discovery_qspi.h" + +/* Macros --------------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/* Assert activated */ +#define ASSERT(__condition__) do { if(__condition__) \ + { assert_failed(__FILE__, __LINE__); \ + while(1); \ + } \ + }while(0) +#else +/* Assert not activated : macro has no effect */ +#define ASSERT(__condition__) do { if(__condition__) \ + { ErrorCounter++; \ + } \ + }while(0) +#endif /* USE_FULL_ASSERT */ + +#define RGB565_BYTE_PER_PIXEL 2 +#define ARBG8888_BYTE_PER_PIXEL 4 + +/* Camera have a max resolution of VGA : 640x480 */ +#define CAMERA_RES_MAX_X 640 +#define CAMERA_RES_MAX_Y 480 + +/** + * @brief LCD FB_StartAddress + * LCD Frame buffer start address : starts at beginning of SDRAM + */ +#define LCD_FRAME_BUFFER SDRAM_DEVICE_ADDR + +/** + * @brief Camera frame buffer start address + * Assuming LCD frame buffer is of size 480x800 and format ARGB8888 (32 bits per pixel). + */ +#define CAMERA_FRAME_BUFFER ((uint32_t)(LCD_FRAME_BUFFER + (RK043FN48H_WIDTH * RK043FN48H_HEIGHT * ARBG8888_BYTE_PER_PIXEL))) + +/** + * @brief SDRAM Write read buffer start address after CAM Frame buffer + * Assuming Camera frame buffer is of size 640x480 and format RGB565 (16 bits per pixel). + */ +#define SDRAM_WRITE_READ_ADDR ((uint32_t)(CAMERA_FRAME_BUFFER + (CAMERA_RES_MAX_X * CAMERA_RES_MAX_Y * RGB565_BYTE_PER_PIXEL))) + +#define SDRAM_WRITE_READ_ADDR_OFFSET ((uint32_t)0x0800) +#define SRAM_WRITE_READ_ADDR_OFFSET SDRAM_WRITE_READ_ADDR_OFFSET + +#define AUDIO_REC_START_ADDR SDRAM_WRITE_READ_ADDR + +// added 16 May DSR +#define PING 0 +#define PONG 1 + + +/* Exported types ------------------------------------------------------------*/ + +typedef enum { + AUDIO_ERROR_NONE = 0, + AUDIO_ERROR_NOTREADY, + AUDIO_ERROR_IO, + AUDIO_ERROR_EOF, +}AUDIO_ErrorTypeDef; + +//extern const unsigned char stlogo[]; +/* Exported variables ---------------------------------------------------*/ +//extern uint8_t NbLoop; +//extern uint8_t MfxExtiReceived; +//#ifndef USE_FULL_ASSERT +//extern uint32_t ErrorCounter; +//#endif +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ + +#define COUNT_OF_EXAMPLE(x) (sizeof(x)/sizeof(BSP_DemoTypedef)) +/* Exported functions ------------------------------------------------------- */ +void AudioLoopback_demo (void); +uint8_t CheckForUserInput(void); +void BSP_LCD_DMA2D_IRQHandler(void); +#ifdef USE_FULL_ASSERT +void assert_failed(uint8_t* file, uint32_t line); +#endif +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/pass2b.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/pass2b.h new file mode 100644 index 0000000..96e595f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/pass2b.h @@ -0,0 +1,17 @@ +//pass2b.cof Coefficients file for two passbands FIR filter + +#define N 55 //number of coefficients + +float h[N] = + {-3.7529E-003, 3.8826E-003, 1.5376E-002, 3.6023E-003,-3.1238E-003, + 2.3790E-003,-1.3438E-003,-3.0706E-008, 1.6629E-003,-3.6469E-003, + 5.9452E-003,-8.5410E-003,-4.5632E-002,-1.4511E-002, 1.7805E-002, + -2.1237E-002, 2.4749E-002, 1.1310E-001, 3.1750E-002,-3.5100E-002, + 3.8257E-002,-4.1152E-002,-1.7489E-001,-4.5912E-002, 4.7669E-002, + -4.8953E-002, 4.9736E-002, 2.0000E-001, 4.9736E-002,-4.8953E-002, + 4.7669E-002,-4.5912E-002,-1.7489E-001,-4.1152E-002, 3.8257E-002, + -3.5100E-002, 3.1750E-002, 1.1310E-001, 2.4749E-002,-2.1237E-002, + 1.7805E-002,-1.4511E-002,-4.5632E-002,-8.5410E-003, 5.9452E-003, + -3.6469E-003, 1.6629E-003,-3.0706E-008,-1.3438E-003, 2.3790E-003, + -3.1238E-003, 3.6023E-003, 1.5376E-002, 3.8826E-003,-3.7529E-003}; + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon14julyiir.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon14julyiir.h new file mode 100644 index 0000000..9f23089 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon14julyiir.h @@ -0,0 +1,17 @@ +// recon14julyiir.h +// this file was generated using +// function TM4C123_iirsos_coeffs.m + +#define NUM_SECTIONS 4 + +float b[NUM_SECTIONS][3] = { +{6.40771267E-01, -1.05776431E+00, 6.40771267E-01}, +{5.12035258E-01, -7.83481134E-01, 5.12035258E-01}, +{3.16402322E-01, -3.42146025E-01, 3.16402322E-01}, +{1.22689222E-01, 1.01786795E-01, 1.22689222E-01} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+00, -1.67378470E+00, 8.97562924E-01}, +{1.00000000E+00, -1.44577957E+00, 6.86368946E-01}, +{1.00000000E+00, -1.14227588E+00, 4.32934505E-01}, +{1.00000000E+00, -8.53895421E-01, 2.01060660E-01} }; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon484fird.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon484fird.h new file mode 100644 index 0000000..91e5515 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/recon484fird.h @@ -0,0 +1,24 @@ +// recon484fird.h +// this file was generated using function tm4c123_fir_coeffs.m + +#define N 100 + +float32_t h[N] = { +3.6410E-04,1.3759E-04,-1.4530E-04,-4.2786E-04,-6.4081E-04,-7.1208E-04, +-5.8497E-04,-2.4186E-04,2.7426E-04,8.5121E-04,1.3212E-03,1.4997E-03, +1.2441E-03,5.1483E-04,-5.8058E-04,-1.7838E-03,-2.7327E-03,-3.0562E-03, +-2.4954E-03,-1.0161E-03,1.1277E-03,3.4113E-03,5.1491E-03,5.6789E-03, +4.5774E-03,1.8420E-03,-2.0227E-03,-6.0623E-03,-9.0779E-03,-9.9466E-03, +-7.9768E-03,-3.1991E-03,3.5070E-03,1.0513E-02,1.5780E-02,1.7373E-02, +1.4038E-02,5.6909E-03,-6.3302E-03,-1.9344E-02,-2.9767E-02,-3.3840E-02, +-2.8502E-02,-1.2197E-02,1.4577E-02,4.9130E-02,8.6933E-02,1.2239E-01, +1.4988E-01,1.6488E-01,1.6488E-01,1.4988E-01,1.2239E-01,8.6933E-02, +4.9130E-02,1.4577E-02,-1.2197E-02,-2.8502E-02,-3.3840E-02,-2.9767E-02, +-1.9344E-02,-6.3302E-03,5.6909E-03,1.4038E-02,1.7373E-02,1.5780E-02, +1.0513E-02,3.5070E-03,-3.1991E-03,-7.9768E-03,-9.9466E-03,-9.0779E-03, +-6.0623E-03,-2.0227E-03,1.8420E-03,4.5774E-03,5.6789E-03,5.1491E-03, +3.4113E-03,1.1277E-03,-1.0161E-03,-2.4954E-03,-3.0562E-03,-2.7327E-03, +-1.7838E-03,-5.8058E-04,5.1483E-04,1.2441E-03,1.4997E-03,1.3212E-03, +8.5121E-04,2.7426E-04,-2.4186E-04,-5.8497E-04,-7.1208E-04,-6.4081E-04, +-4.2786E-04,-1.4530E-04,1.3759E-04,3.6410E-04 +}; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/sine8000_table.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/sine8000_table.h new file mode 100644 index 0000000..d93a9a6 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/sine8000_table.h @@ -0,0 +1,1003 @@ +// sine8000_table.h Sine table with 8000 points + +short sine8000[8000]= +{0, 1, 2, 2, 3, 4, 5, 5, +6, 7, 8, 9, 9, 10, 11, 12, +13, 13, 14, 15, 16, 16, 17, 18, +19, 20, 20, 21, 22, 23, 24, 24, +25, 26, 27, 27, 28, 29, 30, 31, +31, 32, 33, 34, 35, 35, 36, 37, +38, 38, 39, 40, 41, 42, 42, 43, +44, 45, 46, 46, 47, 48, 49, 49, +50, 51, 52, 53, 53, 54, 55, 56, +57, 57, 58, 59, 60, 60, 61, 62, +63, 64, 64, 65, 66, 67, 67, 68, +69, 70, 71, 71, 72, 73, 74, 75, +75, 76, 77, 78, 78, 79, 80, 81, +82, 82, 83, 84, 85, 86, 86, 87, +88, 89, 89, 90, 91, 92, 93, 93, +94, 95, 96, 96, 97, 98, 99, 100, +100, 101, 102, 103, 103, 104, 105, 106, +107, 107, 108, 109, 110, 111, 111, 112, +113, 114, 114, 115, 116, 117, 118, 118, +119, 120, 121, 121, 122, 123, 124, 125, +125, 126, 127, 128, 128, 129, 130, 131, +132, 132, 133, 134, 135, 135, 136, 137, +138, 139, 139, 140, 141, 142, 142, 143, +144, 145, 146, 146, 147, 148, 149, 149, +150, 151, 152, 153, 153, 154, 155, 156, +156, 157, 158, 159, 160, 160, 161, 162, +163, 163, 164, 165, 166, 167, 167, 168, +169, 170, 170, 171, 172, 173, 173, 174, +175, 176, 177, 177, 178, 179, 180, 180, +181, 182, 183, 184, 184, 185, 186, 187, +187, 188, 189, 190, 190, 191, 192, 193, +194, 194, 195, 196, 197, 197, 198, 199, +200, 200, 201, 202, 203, 204, 204, 205, +206, 207, 207, 208, 209, 210, 210, 211, +212, 213, 214, 214, 215, 216, 217, 217, +218, 219, 220, 220, 221, 222, 223, 224, +224, 225, 226, 227, 227, 228, 229, 230, +230, 231, 232, 233, 233, 234, 235, 236, +236, 237, 238, 239, 240, 240, 241, 242, +243, 243, 244, 245, 246, 246, 247, 248, +249, 249, 250, 251, 252, 252, 253, 254, +255, 256, 256, 257, 258, 259, 259, 260, +261, 262, 262, 263, 264, 265, 265, 266, +267, 268, 268, 269, 270, 271, 271, 272, +273, 274, 274, 275, 276, 277, 277, 278, +279, 280, 280, 281, 282, 283, 284, 284, +285, 286, 287, 287, 288, 289, 290, 290, +291, 292, 293, 293, 294, 295, 296, 296, +297, 298, 299, 299, 300, 301, 302, 302, +303, 304, 305, 305, 306, 307, 308, 308, +309, 310, 311, 311, 312, 313, 313, 314, +315, 316, 316, 317, 318, 319, 319, 320, +321, 322, 322, 323, 324, 325, 325, 326, +327, 328, 328, 329, 330, 331, 331, 332, +333, 334, 334, 335, 336, 337, 337, 338, +339, 339, 340, 341, 342, 342, 343, 344, +345, 345, 346, 347, 348, 348, 349, 350, +351, 351, 352, 353, 353, 354, 355, 356, +356, 357, 358, 359, 359, 360, 361, 362, +362, 363, 364, 364, 365, 366, 367, 367, +368, 369, 370, 370, 371, 372, 373, 373, +374, 375, 375, 376, 377, 378, 378, 379, +380, 381, 381, 382, 383, 383, 384, 385, +386, 386, 387, 388, 388, 389, 390, 391, +391, 392, 393, 394, 394, 395, 396, 396, +397, 398, 399, 399, 400, 401, 401, 402, +403, 404, 404, 405, 406, 406, 407, 408, +409, 409, 410, 411, 412, 412, 413, 414, +414, 415, 416, 417, 417, 418, 419, 419, +420, 421, 422, 422, 423, 424, 424, 425, +426, 426, 427, 428, 429, 429, 430, 431, +431, 432, 433, 434, 434, 435, 436, 436, +437, 438, 439, 439, 440, 441, 441, 442, +443, 443, 444, 445, 446, 446, 447, 448, +448, 449, 450, 450, 451, 452, 453, 453, +454, 455, 455, 456, 457, 457, 458, 459, +460, 460, 461, 462, 462, 463, 464, 464, +465, 466, 467, 467, 468, 469, 469, 470, +471, 471, 472, 473, 473, 474, 475, 476, +476, 477, 478, 478, 479, 480, 480, 481, +482, 482, 483, 484, 485, 485, 486, 487, +487, 488, 489, 489, 490, 491, 491, 492, +493, 493, 494, 495, 495, 496, 497, 498, +498, 499, 500, 500, 501, 502, 502, 503, +504, 504, 505, 506, 506, 507, 508, 508, +509, 510, 510, 511, 512, 512, 513, 514, +514, 515, 516, 516, 517, 518, 518, 519, +520, 520, 521, 522, 522, 523, 524, 525, +525, 526, 527, 527, 528, 529, 529, 530, +531, 531, 532, 533, 533, 534, 534, 535, +536, 536, 537, 538, 538, 539, 540, 540, +541, 542, 542, 543, 544, 544, 545, 546, +546, 547, 548, 548, 549, 550, 550, 551, +552, 552, 553, 554, 554, 555, 556, 556, +557, 558, 558, 559, 559, 560, 561, 561, +562, 563, 563, 564, 565, 565, 566, 567, +567, 568, 569, 569, 570, 570, 571, 572, +572, 573, 574, 574, 575, 576, 576, 577, +578, 578, 579, 579, 580, 581, 581, 582, +583, 583, 584, 585, 585, 586, 587, 587, +588, 588, 589, 590, 590, 591, 592, 592, +593, 593, 594, 595, 595, 596, 597, 597, +598, 599, 599, 600, 600, 601, 602, 602, +603, 604, 604, 605, 605, 606, 607, 607, +608, 609, 609, 610, 610, 611, 612, 612, +613, 614, 614, 615, 615, 616, 617, 617, +618, 618, 619, 620, 620, 621, 622, 622, +623, 623, 624, 625, 625, 626, 626, 627, +628, 628, 629, 630, 630, 631, 631, 632, +633, 633, 634, 634, 635, 636, 636, 637, +637, 638, 639, 639, 640, 640, 641, 642, +642, 643, 643, 644, 645, 645, 646, 646, +647, 648, 648, 649, 649, 650, 651, 651, +652, 652, 653, 654, 654, 655, 655, 656, +657, 657, 658, 658, 659, 660, 660, 661, +661, 662, 662, 663, 664, 664, 665, 665, +666, 667, 667, 668, 668, 669, 670, 670, +671, 671, 672, 672, 673, 674, 674, 675, +675, 676, 676, 677, 678, 678, 679, 679, +680, 681, 681, 682, 682, 683, 683, 684, +685, 685, 686, 686, 687, 687, 688, 689, +689, 690, 690, 691, 691, 692, 693, 693, +694, 694, 695, 695, 696, 696, 697, 698, +698, 699, 699, 700, 700, 701, 702, 702, +703, 703, 704, 704, 705, 705, 706, 707, +707, 708, 708, 709, 709, 710, 710, 711, +712, 712, 713, 713, 714, 714, 715, 715, +716, 716, 717, 718, 718, 719, 719, 720, +720, 721, 721, 722, 722, 723, 724, 724, +725, 725, 726, 726, 727, 727, 728, 728, +729, 730, 730, 731, 731, 732, 732, 733, +733, 734, 734, 735, 735, 736, 736, 737, +738, 738, 739, 739, 740, 740, 741, 741, +742, 742, 743, 743, 744, 744, 745, 745, +746, 746, 747, 748, 748, 749, 749, 750, +750, 751, 751, 752, 752, 753, 753, 754, +754, 755, 755, 756, 756, 757, 757, 758, +758, 759, 759, 760, 760, 761, 761, 762, +762, 763, 763, 764, 764, 765, 765, 766, +766, 767, 768, 768, 769, 769, 770, 770, +771, 771, 772, 772, 773, 773, 774, 774, +775, 775, 775, 776, 776, 777, 777, 778, +778, 779, 779, 780, 780, 781, 781, 782, +782, 783, 783, 784, 784, 785, 785, 786, +786, 787, 787, 788, 788, 789, 789, 790, +790, 791, 791, 792, 792, 793, 793, 794, +794, 794, 795, 795, 796, 796, 797, 797, +798, 798, 799, 799, 800, 800, 801, 801, +802, 802, 803, 803, 803, 804, 804, 805, +805, 806, 806, 807, 807, 808, 808, 809, +809, 809, 810, 810, 811, 811, 812, 812, +813, 813, 814, 814, 815, 815, 815, 816, +816, 817, 817, 818, 818, 819, 819, 820, +820, 820, 821, 821, 822, 822, 823, 823, +824, 824, 824, 825, 825, 826, 826, 827, +827, 828, 828, 828, 829, 829, 830, 830, +831, 831, 831, 832, 832, 833, 833, 834, +834, 835, 835, 835, 836, 836, 837, 837, +838, 838, 838, 839, 839, 840, 840, 841, +841, 841, 842, 842, 843, 843, 843, 844, +844, 845, 845, 846, 846, 846, 847, 847, +848, 848, 849, 849, 849, 850, 850, 851, +851, 851, 852, 852, 853, 853, 853, 854, +854, 855, 855, 855, 856, 856, 857, 857, +858, 858, 858, 859, 859, 860, 860, 860, +861, 861, 862, 862, 862, 863, 863, 864, +864, 864, 865, 865, 866, 866, 866, 867, +867, 867, 868, 868, 869, 869, 869, 870, +870, 871, 871, 871, 872, 872, 872, 873, +873, 874, 874, 874, 875, 875, 876, 876, +876, 877, 877, 877, 878, 878, 879, 879, +879, 880, 880, 880, 881, 881, 882, 882, +882, 883, 883, 883, 884, 884, 884, 885, +885, 886, 886, 886, 887, 887, 887, 888, +888, 888, 889, 889, 890, 890, 890, 891, +891, 891, 892, 892, 892, 893, 893, 893, +894, 894, 895, 895, 895, 896, 896, 896, +897, 897, 897, 898, 898, 898, 899, 899, +899, 900, 900, 900, 901, 901, 901, 902, +902, 902, 903, 903, 903, 904, 904, 904, +905, 905, 905, 906, 906, 906, 907, 907, +907, 908, 908, 908, 909, 909, 909, 910, +910, 910, 911, 911, 911, 912, 912, 912, +913, 913, 913, 914, 914, 914, 915, 915, +915, 916, 916, 916, 917, 917, 917, 917, +918, 918, 918, 919, 919, 919, 920, 920, +920, 921, 921, 921, 921, 922, 922, 922, +923, 923, 923, 924, 924, 924, 924, 925, +925, 925, 926, 926, 926, 927, 927, 927, +927, 928, 928, 928, 929, 929, 929, 929, +930, 930, 930, 931, 931, 931, 932, 932, +932, 932, 933, 933, 933, 933, 934, 934, +934, 935, 935, 935, 935, 936, 936, 936, +937, 937, 937, 937, 938, 938, 938, 938, +939, 939, 939, 940, 940, 940, 940, 941, +941, 941, 941, 942, 942, 942, 942, 943, +943, 943, 944, 944, 944, 944, 945, 945, +945, 945, 946, 946, 946, 946, 947, 947, +947, 947, 948, 948, 948, 948, 949, 949, +949, 949, 950, 950, 950, 950, 951, 951, +951, 951, 952, 952, 952, 952, 953, 953, +953, 953, 953, 954, 954, 954, 954, 955, +955, 955, 955, 956, 956, 956, 956, 956, +957, 957, 957, 957, 958, 958, 958, 958, +959, 959, 959, 959, 959, 960, 960, 960, +960, 961, 961, 961, 961, 961, 962, 962, +962, 962, 962, 963, 963, 963, 963, 964, +964, 964, 964, 964, 965, 965, 965, 965, +965, 966, 966, 966, 966, 966, 967, 967, +967, 967, 967, 968, 968, 968, 968, 968, +969, 969, 969, 969, 969, 970, 970, 970, +970, 970, 971, 971, 971, 971, 971, 971, +972, 972, 972, 972, 972, 973, 973, 973, +973, 973, 973, 974, 974, 974, 974, 974, +975, 975, 975, 975, 975, 975, 976, 976, +976, 976, 976, 976, 977, 977, 977, 977, +977, 977, 978, 978, 978, 978, 978, 978, +979, 979, 979, 979, 979, 979, 980, 980, +980, 980, 980, 980, 980, 981, 981, 981, +981, 981, 981, 982, 982, 982, 982, 982, +982, 982, 983, 983, 983, 983, 983, 983, +983, 984, 984, 984, 984, 984, 984, 984, +985, 985, 985, 985, 985, 985, 985, 986, +986, 986, 986, 986, 986, 986, 986, 987, +987, 987, 987, 987, 987, 987, 987, 988, +988, 988, 988, 988, 988, 988, 988, 989, +989, 989, 989, 989, 989, 989, 989, 989, +990, 990, 990, 990, 990, 990, 990, 990, +990, 991, 991, 991, 991, 991, 991, 991, +991, 991, 992, 992, 992, 992, 992, 992, +992, 992, 992, 992, 993, 993, 993, 993, +993, 993, 993, 993, 993, 993, 993, 994, +994, 994, 994, 994, 994, 994, 994, 994, +994, 994, 994, 995, 995, 995, 995, 995, +995, 995, 995, 995, 995, 995, 995, 995, +996, 996, 996, 996, 996, 996, 996, 996, +996, 996, 996, 996, 996, 996, 997, 997, +997, 997, 997, 997, 997, 997, 997, 997, +997, 997, 997, 997, 997, 997, 998, 998, +998, 998, 998, 998, 998, 998, 998, 998, +998, 998, 998, 998, 998, 998, 998, 998, +998, 998, 998, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 999, 999, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, +1000, 999, 999, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 999, 999, +999, 999, 999, 999, 999, 999, 998, 998, +998, 998, 998, 998, 998, 998, 998, 998, +998, 998, 998, 998, 998, 998, 998, 998, +998, 998, 998, 997, 997, 997, 997, 997, +997, 997, 997, 997, 997, 997, 997, 997, +997, 997, 997, 996, 996, 996, 996, 996, +996, 996, 996, 996, 996, 996, 996, 996, +996, 995, 995, 995, 995, 995, 995, 995, +995, 995, 995, 995, 995, 995, 994, 994, +994, 994, 994, 994, 994, 994, 994, 994, +994, 994, 993, 993, 993, 993, 993, 993, +993, 993, 993, 993, 993, 992, 992, 992, +992, 992, 992, 992, 992, 992, 992, 991, +991, 991, 991, 991, 991, 991, 991, 991, +990, 990, 990, 990, 990, 990, 990, 990, +990, 989, 989, 989, 989, 989, 989, 989, +989, 989, 988, 988, 988, 988, 988, 988, +988, 988, 987, 987, 987, 987, 987, 987, +987, 987, 986, 986, 986, 986, 986, 986, +986, 986, 985, 985, 985, 985, 985, 985, +985, 984, 984, 984, 984, 984, 984, 984, +983, 983, 983, 983, 983, 983, 983, 982, +982, 982, 982, 982, 982, 982, 981, 981, +981, 981, 981, 981, 980, 980, 980, 980, +980, 980, 980, 979, 979, 979, 979, 979, +979, 978, 978, 978, 978, 978, 978, 977, +977, 977, 977, 977, 977, 976, 976, 976, +976, 976, 976, 975, 975, 975, 975, 975, +975, 974, 974, 974, 974, 974, 973, 973, +973, 973, 973, 973, 972, 972, 972, 972, +972, 971, 971, 971, 971, 971, 971, 970, +970, 970, 970, 970, 969, 969, 969, 969, +969, 968, 968, 968, 968, 968, 967, 967, +967, 967, 967, 966, 966, 966, 966, 966, +965, 965, 965, 965, 965, 964, 964, 964, +964, 964, 963, 963, 963, 963, 962, 962, +962, 962, 962, 961, 961, 961, 961, 961, +960, 960, 960, 960, 959, 959, 959, 959, +959, 958, 958, 958, 958, 957, 957, 957, +957, 956, 956, 956, 956, 956, 955, 955, +955, 955, 954, 954, 954, 954, 953, 953, +953, 953, 953, 952, 952, 952, 952, 951, +951, 951, 951, 950, 950, 950, 950, 949, +949, 949, 949, 948, 948, 948, 948, 947, +947, 947, 947, 946, 946, 946, 946, 945, +945, 945, 945, 944, 944, 944, 944, 943, +943, 943, 942, 942, 942, 942, 941, 941, +941, 941, 940, 940, 940, 940, 939, 939, +939, 938, 938, 938, 938, 937, 937, 937, +937, 936, 936, 936, 935, 935, 935, 935, +934, 934, 934, 933, 933, 933, 933, 932, +932, 932, 932, 931, 931, 931, 930, 930, +930, 929, 929, 929, 929, 928, 928, 928, +927, 927, 927, 927, 926, 926, 926, 925, +925, 925, 924, 924, 924, 924, 923, 923, +923, 922, 922, 922, 921, 921, 921, 921, +920, 920, 920, 919, 919, 919, 918, 918, +918, 917, 917, 917, 917, 916, 916, 916, +915, 915, 915, 914, 914, 914, 913, 913, +913, 912, 912, 912, 911, 911, 911, 910, +910, 910, 909, 909, 909, 908, 908, 908, +907, 907, 907, 906, 906, 906, 905, 905, +905, 904, 904, 904, 903, 903, 903, 902, +902, 902, 901, 901, 901, 900, 900, 900, +899, 899, 899, 898, 898, 898, 897, 897, +897, 896, 896, 896, 895, 895, 895, 894, +894, 893, 893, 893, 892, 892, 892, 891, +891, 891, 890, 890, 890, 889, 889, 888, +888, 888, 887, 887, 887, 886, 886, 886, +885, 885, 884, 884, 884, 883, 883, 883, +882, 882, 882, 881, 881, 880, 880, 880, +879, 879, 879, 878, 878, 877, 877, 877, +876, 876, 876, 875, 875, 874, 874, 874, +873, 873, 872, 872, 872, 871, 871, 871, +870, 870, 869, 869, 869, 868, 868, 867, +867, 867, 866, 866, 866, 865, 865, 864, +864, 864, 863, 863, 862, 862, 862, 861, +861, 860, 860, 860, 859, 859, 858, 858, +858, 857, 857, 856, 856, 855, 855, 855, +854, 854, 853, 853, 853, 852, 852, 851, +851, 851, 850, 850, 849, 849, 849, 848, +848, 847, 847, 846, 846, 846, 845, 845, +844, 844, 843, 843, 843, 842, 842, 841, +841, 841, 840, 840, 839, 839, 838, 838, +838, 837, 837, 836, 836, 835, 835, 835, +834, 834, 833, 833, 832, 832, 831, 831, +831, 830, 830, 829, 829, 828, 828, 828, +827, 827, 826, 826, 825, 825, 824, 824, +824, 823, 823, 822, 822, 821, 821, 820, +820, 820, 819, 819, 818, 818, 817, 817, +816, 816, 815, 815, 815, 814, 814, 813, +813, 812, 812, 811, 811, 810, 810, 809, +809, 809, 808, 808, 807, 807, 806, 806, +805, 805, 804, 804, 803, 803, 803, 802, +802, 801, 801, 800, 800, 799, 799, 798, +798, 797, 797, 796, 796, 795, 795, 794, +794, 794, 793, 793, 792, 792, 791, 791, +790, 790, 789, 789, 788, 788, 787, 787, +786, 786, 785, 785, 784, 784, 783, 783, +782, 782, 781, 781, 780, 780, 779, 779, +778, 778, 777, 777, 776, 776, 775, 775, +775, 774, 774, 773, 773, 772, 772, 771, +771, 770, 770, 769, 769, 768, 768, 767, +766, 766, 765, 765, 764, 764, 763, 763, +762, 762, 761, 761, 760, 760, 759, 759, +758, 758, 757, 757, 756, 756, 755, 755, +754, 754, 753, 753, 752, 752, 751, 751, +750, 750, 749, 749, 748, 748, 747, 746, +746, 745, 745, 744, 744, 743, 743, 742, +742, 741, 741, 740, 740, 739, 739, 738, +738, 737, 736, 736, 735, 735, 734, 734, +733, 733, 732, 732, 731, 731, 730, 730, +729, 728, 728, 727, 727, 726, 726, 725, +725, 724, 724, 723, 722, 722, 721, 721, +720, 720, 719, 719, 718, 718, 717, 716, +716, 715, 715, 714, 714, 713, 713, 712, +712, 711, 710, 710, 709, 709, 708, 708, +707, 707, 706, 705, 705, 704, 704, 703, +703, 702, 702, 701, 700, 700, 699, 699, +698, 698, 697, 696, 696, 695, 695, 694, +694, 693, 693, 692, 691, 691, 690, 690, +689, 689, 688, 687, 687, 686, 686, 685, +685, 684, 683, 683, 682, 682, 681, 681, +680, 679, 679, 678, 678, 677, 676, 676, +675, 675, 674, 674, 673, 672, 672, 671, +671, 670, 670, 669, 668, 668, 667, 667, +666, 665, 665, 664, 664, 663, 662, 662, +661, 661, 660, 660, 659, 658, 658, 657, +657, 656, 655, 655, 654, 654, 653, 652, +652, 651, 651, 650, 649, 649, 648, 648, +647, 646, 646, 645, 645, 644, 643, 643, +642, 642, 641, 640, 640, 639, 639, 638, +637, 637, 636, 636, 635, 634, 634, 633, +633, 632, 631, 631, 630, 630, 629, 628, +628, 627, 626, 626, 625, 625, 624, 623, +623, 622, 622, 621, 620, 620, 619, 618, +618, 617, 617, 616, 615, 615, 614, 614, +613, 612, 612, 611, 610, 610, 609, 609, +608, 607, 607, 606, 605, 605, 604, 604, +603, 602, 602, 601, 600, 600, 599, 599, +598, 597, 597, 596, 595, 595, 594, 593, +593, 592, 592, 591, 590, 590, 589, 588, +588, 587, 587, 586, 585, 585, 584, 583, +583, 582, 581, 581, 580, 579, 579, 578, +578, 577, 576, 576, 575, 574, 574, 573, +572, 572, 571, 570, 570, 569, 569, 568, +567, 567, 566, 565, 565, 564, 563, 563, +562, 561, 561, 560, 559, 559, 558, 558, +557, 556, 556, 555, 554, 554, 553, 552, +552, 551, 550, 550, 549, 548, 548, 547, +546, 546, 545, 544, 544, 543, 542, 542, +541, 540, 540, 539, 538, 538, 537, 536, +536, 535, 534, 534, 533, 533, 532, 531, +531, 530, 529, 529, 528, 527, 527, 526, +525, 525, 524, 523, 522, 522, 521, 520, +520, 519, 518, 518, 517, 516, 516, 515, +514, 514, 513, 512, 512, 511, 510, 510, +509, 508, 508, 507, 506, 506, 505, 504, +504, 503, 502, 502, 501, 500, 500, 499, +498, 498, 497, 496, 495, 495, 494, 493, +493, 492, 491, 491, 490, 489, 489, 488, +487, 487, 486, 485, 485, 484, 483, 482, +482, 481, 480, 480, 479, 478, 478, 477, +476, 476, 475, 474, 473, 473, 472, 471, +471, 470, 469, 469, 468, 467, 467, 466, +465, 464, 464, 463, 462, 462, 461, 460, +460, 459, 458, 457, 457, 456, 455, 455, +454, 453, 453, 452, 451, 450, 450, 449, +448, 448, 447, 446, 446, 445, 444, 443, +443, 442, 441, 441, 440, 439, 439, 438, +437, 436, 436, 435, 434, 434, 433, 432, +431, 431, 430, 429, 429, 428, 427, 426, +426, 425, 424, 424, 423, 422, 422, 421, +420, 419, 419, 418, 417, 417, 416, 415, +414, 414, 413, 412, 412, 411, 410, 409, +409, 408, 407, 406, 406, 405, 404, 404, +403, 402, 401, 401, 400, 399, 399, 398, +397, 396, 396, 395, 394, 394, 393, 392, +391, 391, 390, 389, 388, 388, 387, 386, +386, 385, 384, 383, 383, 382, 381, 381, +380, 379, 378, 378, 377, 376, 375, 375, +374, 373, 373, 372, 371, 370, 370, 369, +368, 367, 367, 366, 365, 364, 364, 363, +362, 362, 361, 360, 359, 359, 358, 357, +356, 356, 355, 354, 353, 353, 352, 351, +351, 350, 349, 348, 348, 347, 346, 345, +345, 344, 343, 342, 342, 341, 340, 339, +339, 338, 337, 337, 336, 335, 334, 334, +333, 332, 331, 331, 330, 329, 328, 328, +327, 326, 325, 325, 324, 323, 322, 322, +321, 320, 319, 319, 318, 317, 316, 316, +315, 314, 313, 313, 312, 311, 311, 310, +309, 308, 308, 307, 306, 305, 305, 304, +303, 302, 302, 301, 300, 299, 299, 298, +297, 296, 296, 295, 294, 293, 293, 292, +291, 290, 290, 289, 288, 287, 287, 286, +285, 284, 284, 283, 282, 281, 280, 280, +279, 278, 277, 277, 276, 275, 274, 274, +273, 272, 271, 271, 270, 269, 268, 268, +267, 266, 265, 265, 264, 263, 262, 262, +261, 260, 259, 259, 258, 257, 256, 256, +255, 254, 253, 252, 252, 251, 250, 249, +249, 248, 247, 246, 246, 245, 244, 243, +243, 242, 241, 240, 240, 239, 238, 237, +236, 236, 235, 234, 233, 233, 232, 231, +230, 230, 229, 228, 227, 227, 226, 225, +224, 224, 223, 222, 221, 220, 220, 219, +218, 217, 217, 216, 215, 214, 214, 213, +212, 211, 210, 210, 209, 208, 207, 207, +206, 205, 204, 204, 203, 202, 201, 200, +200, 199, 198, 197, 197, 196, 195, 194, +194, 193, 192, 191, 190, 190, 189, 188, +187, 187, 186, 185, 184, 184, 183, 182, +181, 180, 180, 179, 178, 177, 177, 176, +175, 174, 173, 173, 172, 171, 170, 170, +169, 168, 167, 167, 166, 165, 164, 163, +163, 162, 161, 160, 160, 159, 158, 157, +156, 156, 155, 154, 153, 153, 152, 151, +150, 149, 149, 148, 147, 146, 146, 145, +144, 143, 142, 142, 141, 140, 139, 139, +138, 137, 136, 135, 135, 134, 133, 132, +132, 131, 130, 129, 128, 128, 127, 126, +125, 125, 124, 123, 122, 121, 121, 120, +119, 118, 118, 117, 116, 115, 114, 114, +113, 112, 111, 111, 110, 109, 108, 107, +107, 106, 105, 104, 103, 103, 102, 101, +100, 100, 99, 98, 97, 96, 96, 95, +94, 93, 93, 92, 91, 90, 89, 89, +88, 87, 86, 86, 85, 84, 83, 82, +82, 81, 80, 79, 78, 78, 77, 76, +75, 75, 74, 73, 72, 71, 71, 70, +69, 68, 67, 67, 66, 65, 64, 64, +63, 62, 61, 60, 60, 59, 58, 57, +57, 56, 55, 54, 53, 53, 52, 51, +50, 49, 49, 48, 47, 46, 46, 45, +44, 43, 42, 42, 41, 40, 39, 38, +38, 37, 36, 35, 35, 34, 33, 32, +31, 31, 30, 29, 28, 27, 27, 26, +25, 24, 24, 23, 22, 21, 20, 20, +19, 18, 17, 16, 16, 15, 14, 13, +13, 12, 11, 10, 9, 9, 8, 7, +6, 5, 5, 4, 3, 2, 2, 1, +0, -1, -2, -2, -3, -4, -5, -5, +-6, -7, -8, -9, -9, -10, -11, -12, +-13, -13, -14, -15, -16, -16, -17, -18, +-19, -20, -20, -21, -22, -23, -24, -24, +-25, -26, -27, -27, -28, -29, -30, -31, +-31, -32, -33, -34, -35, -35, -36, -37, +-38, -38, -39, -40, -41, -42, -42, -43, +-44, -45, -46, -46, -47, -48, -49, -49, +-50, -51, -52, -53, -53, -54, -55, -56, +-57, -57, -58, -59, -60, -60, -61, -62, +-63, -64, -64, -65, -66, -67, -67, -68, +-69, -70, -71, -71, -72, -73, -74, -75, +-75, -76, -77, -78, -78, -79, -80, -81, +-82, -82, -83, -84, -85, -86, -86, -87, +-88, -89, -89, -90, -91, -92, -93, -93, +-94, -95, -96, -96, -97, -98, -99, -100, +-100, -101, -102, -103, -103, -104, -105, -106, +-107, -107, -108, -109, -110, -111, -111, -112, +-113, -114, -114, -115, -116, -117, -118, -118, +-119, -120, -121, -121, -122, -123, -124, -125, +-125, -126, -127, -128, -128, -129, -130, -131, +-132, -132, -133, -134, -135, -135, -136, -137, +-138, -139, -139, -140, -141, -142, -142, -143, +-144, -145, -146, -146, -147, -148, -149, -149, +-150, -151, -152, -153, -153, -154, -155, -156, +-156, -157, -158, -159, -160, -160, -161, -162, +-163, -163, -164, -165, -166, -167, -167, -168, +-169, -170, -170, -171, -172, -173, -173, -174, +-175, -176, -177, -177, -178, -179, -180, -180, +-181, -182, -183, -184, -184, -185, -186, -187, +-187, -188, -189, -190, -190, -191, -192, -193, +-194, -194, -195, -196, -197, -197, -198, -199, +-200, -200, -201, -202, -203, -204, -204, -205, +-206, -207, -207, -208, -209, -210, -210, -211, +-212, -213, -214, -214, -215, -216, -217, -217, +-218, -219, -220, -220, -221, -222, -223, -224, +-224, -225, -226, -227, -227, -228, -229, -230, +-230, -231, -232, -233, -233, -234, -235, -236, +-236, -237, -238, -239, -240, -240, -241, -242, +-243, -243, -244, -245, -246, -246, -247, -248, +-249, -249, -250, -251, -252, -252, -253, -254, +-255, -256, -256, -257, -258, -259, -259, -260, +-261, -262, -262, -263, -264, -265, -265, -266, +-267, -268, -268, -269, -270, -271, -271, -272, +-273, -274, -274, -275, -276, -277, -277, -278, +-279, -280, -280, -281, -282, -283, -284, -284, +-285, -286, -287, -287, -288, -289, -290, -290, +-291, -292, -293, -293, -294, -295, -296, -296, +-297, -298, -299, -299, -300, -301, -302, -302, +-303, -304, -305, -305, -306, -307, -308, -308, +-309, -310, -311, -311, -312, -313, -313, -314, +-315, -316, -316, -317, -318, -319, -319, -320, +-321, -322, -322, -323, -324, -325, -325, -326, +-327, -328, -328, -329, -330, -331, -331, -332, +-333, -334, -334, -335, -336, -337, -337, -338, +-339, -339, -340, -341, -342, -342, -343, -344, +-345, -345, -346, -347, -348, -348, -349, -350, +-351, -351, -352, -353, -353, -354, -355, -356, +-356, -357, -358, -359, -359, -360, -361, -362, +-362, -363, -364, -364, -365, -366, -367, -367, +-368, -369, -370, -370, -371, -372, -373, -373, +-374, -375, -375, -376, -377, -378, -378, -379, +-380, -381, -381, -382, -383, -383, -384, -385, +-386, -386, -387, -388, -388, -389, -390, -391, +-391, -392, -393, -394, -394, -395, -396, -396, +-397, -398, -399, -399, -400, -401, -401, -402, +-403, -404, -404, -405, -406, -406, -407, -408, +-409, -409, -410, -411, -412, -412, -413, -414, +-414, -415, -416, -417, -417, -418, -419, -419, +-420, -421, -422, -422, -423, -424, -424, -425, +-426, -426, -427, -428, -429, -429, -430, -431, +-431, -432, -433, -434, -434, -435, -436, -436, +-437, -438, -439, -439, -440, -441, -441, -442, +-443, -443, -444, -445, -446, -446, -447, -448, +-448, -449, -450, -450, -451, -452, -453, -453, +-454, -455, -455, -456, -457, -457, -458, -459, +-460, -460, -461, -462, -462, -463, -464, -464, +-465, -466, -467, -467, -468, -469, -469, -470, +-471, -471, -472, -473, -473, -474, -475, -476, +-476, -477, -478, -478, -479, -480, -480, -481, +-482, -482, -483, -484, -485, -485, -486, -487, +-487, -488, -489, -489, -490, -491, -491, -492, +-493, -493, -494, -495, -495, -496, -497, -498, +-498, -499, -500, -500, -501, -502, -502, -503, +-504, -504, -505, -506, -506, -507, -508, -508, +-509, -510, -510, -511, -512, -512, -513, -514, +-514, -515, -516, -516, -517, -518, -518, -519, +-520, -520, -521, -522, -522, -523, -524, -525, +-525, -526, -527, -527, -528, -529, -529, -530, +-531, -531, -532, -533, -533, -534, -534, -535, +-536, -536, -537, -538, -538, -539, -540, -540, +-541, -542, -542, -543, -544, -544, -545, -546, +-546, -547, -548, -548, -549, -550, -550, -551, +-552, -552, -553, -554, -554, -555, -556, -556, +-557, -558, -558, -559, -559, -560, -561, -561, +-562, -563, -563, -564, -565, -565, -566, -567, +-567, -568, -569, -569, -570, -570, -571, -572, +-572, -573, -574, -574, -575, -576, -576, -577, +-578, -578, -579, -579, -580, -581, -581, -582, +-583, -583, -584, -585, -585, -586, -587, -587, +-588, -588, -589, -590, -590, -591, -592, -592, +-593, -593, -594, -595, -595, -596, -597, -597, +-598, -599, -599, -600, -600, -601, -602, -602, +-603, -604, -604, -605, -605, -606, -607, -607, +-608, -609, -609, -610, -610, -611, -612, -612, +-613, -614, -614, -615, -615, -616, -617, -617, +-618, -618, -619, -620, -620, -621, -622, -622, +-623, -623, -624, -625, -625, -626, -626, -627, +-628, -628, -629, -630, -630, -631, -631, -632, +-633, -633, -634, -634, -635, -636, -636, -637, +-637, -638, -639, -639, -640, -640, -641, -642, +-642, -643, -643, -644, -645, -645, -646, -646, +-647, -648, -648, -649, -649, -650, -651, -651, +-652, -652, -653, -654, -654, -655, -655, -656, +-657, -657, -658, -658, -659, -660, -660, -661, +-661, -662, -662, -663, -664, -664, -665, -665, +-666, -667, -667, -668, -668, -669, -670, -670, +-671, -671, -672, -672, -673, -674, -674, -675, +-675, -676, -676, -677, -678, -678, -679, -679, +-680, -681, -681, -682, -682, -683, -683, -684, +-685, -685, -686, -686, -687, -687, -688, -689, +-689, -690, -690, -691, -691, -692, -693, -693, +-694, -694, -695, -695, -696, -696, -697, -698, +-698, -699, -699, -700, -700, -701, -702, -702, +-703, -703, -704, -704, -705, -705, -706, -707, +-707, -708, -708, -709, -709, -710, -710, -711, +-712, -712, -713, -713, -714, -714, -715, -715, +-716, -716, -717, -718, -718, -719, -719, -720, +-720, -721, -721, -722, -722, -723, -724, -724, +-725, -725, -726, -726, -727, -727, -728, -728, +-729, -730, -730, -731, -731, -732, -732, -733, +-733, -734, -734, -735, -735, -736, -736, -737, +-738, -738, -739, -739, -740, -740, -741, -741, +-742, -742, -743, -743, -744, -744, -745, -745, +-746, -746, -747, -748, -748, -749, -749, -750, +-750, -751, -751, -752, -752, -753, -753, -754, +-754, -755, -755, -756, -756, -757, -757, -758, +-758, -759, -759, -760, -760, -761, -761, -762, +-762, -763, -763, -764, -764, -765, -765, -766, +-766, -767, -768, -768, -769, -769, -770, -770, +-771, -771, -772, -772, -773, -773, -774, -774, +-775, -775, -775, -776, -776, -777, -777, -778, +-778, -779, -779, -780, -780, -781, -781, -782, +-782, -783, -783, -784, -784, -785, -785, -786, +-786, -787, -787, -788, -788, -789, -789, -790, +-790, -791, -791, -792, -792, -793, -793, -794, +-794, -794, -795, -795, -796, -796, -797, -797, +-798, -798, -799, -799, -800, -800, -801, -801, +-802, -802, -803, -803, -803, -804, -804, -805, +-805, -806, -806, -807, -807, -808, -808, -809, +-809, -809, -810, -810, -811, -811, -812, -812, +-813, -813, -814, -814, -815, -815, -815, -816, +-816, -817, -817, -818, -818, -819, -819, -820, +-820, -820, -821, -821, -822, -822, -823, -823, +-824, -824, -824, -825, -825, -826, -826, -827, +-827, -828, -828, -828, -829, -829, -830, -830, +-831, -831, -831, -832, -832, -833, -833, -834, +-834, -835, -835, -835, -836, -836, -837, -837, +-838, -838, -838, -839, -839, -840, -840, -841, +-841, -841, -842, -842, -843, -843, -843, -844, +-844, -845, -845, -846, -846, -846, -847, -847, +-848, -848, -849, -849, -849, -850, -850, -851, +-851, -851, -852, -852, -853, -853, -853, -854, +-854, -855, -855, -855, -856, -856, -857, -857, +-858, -858, -858, -859, -859, -860, -860, -860, +-861, -861, -862, -862, -862, -863, -863, -864, +-864, -864, -865, -865, -866, -866, -866, -867, +-867, -867, -868, -868, -869, -869, -869, -870, +-870, -871, -871, -871, -872, -872, -872, -873, +-873, -874, -874, -874, -875, -875, -876, -876, +-876, -877, -877, -877, -878, -878, -879, -879, +-879, -880, -880, -880, -881, -881, -882, -882, +-882, -883, -883, -883, -884, -884, -884, -885, +-885, -886, -886, -886, -887, -887, -887, -888, +-888, -888, -889, -889, -890, -890, -890, -891, +-891, -891, -892, -892, -892, -893, -893, -893, +-894, -894, -895, -895, -895, -896, -896, -896, +-897, -897, -897, -898, -898, -898, -899, -899, +-899, -900, -900, -900, -901, -901, -901, -902, +-902, -902, -903, -903, -903, -904, -904, -904, +-905, -905, -905, -906, -906, -906, -907, -907, +-907, -908, -908, -908, -909, -909, -909, -910, +-910, -910, -911, -911, -911, -912, -912, -912, +-913, -913, -913, -914, -914, -914, -915, -915, +-915, -916, -916, -916, -917, -917, -917, -917, +-918, -918, -918, -919, -919, -919, -920, -920, +-920, -921, -921, -921, -921, -922, -922, -922, +-923, -923, -923, -924, -924, -924, -924, -925, +-925, -925, -926, -926, -926, -927, -927, -927, +-927, -928, -928, -928, -929, -929, -929, -929, +-930, -930, -930, -931, -931, -931, -932, -932, +-932, -932, -933, -933, -933, -933, -934, -934, +-934, -935, -935, -935, -935, -936, -936, -936, +-937, -937, -937, -937, -938, -938, -938, -938, +-939, -939, -939, -940, -940, -940, -940, -941, +-941, -941, -941, -942, -942, -942, -942, -943, +-943, -943, -944, -944, -944, -944, -945, -945, +-945, -945, -946, -946, -946, -946, -947, -947, +-947, -947, -948, -948, -948, -948, -949, -949, +-949, -949, -950, -950, -950, -950, -951, -951, +-951, -951, -952, -952, -952, -952, -953, -953, +-953, -953, -953, -954, -954, -954, -954, -955, +-955, -955, -955, -956, -956, -956, -956, -956, +-957, -957, -957, -957, -958, -958, -958, -958, +-959, -959, -959, -959, -959, -960, -960, -960, +-960, -961, -961, -961, -961, -961, -962, -962, +-962, -962, -962, -963, -963, -963, -963, -964, +-964, -964, -964, -964, -965, -965, -965, -965, +-965, -966, -966, -966, -966, -966, -967, -967, +-967, -967, -967, -968, -968, -968, -968, -968, +-969, -969, -969, -969, -969, -970, -970, -970, +-970, -970, -971, -971, -971, -971, -971, -971, +-972, -972, -972, -972, -972, -973, -973, -973, +-973, -973, -973, -974, -974, -974, -974, -974, +-975, -975, -975, -975, -975, -975, -976, -976, +-976, -976, -976, -976, -977, -977, -977, -977, +-977, -977, -978, -978, -978, -978, -978, -978, +-979, -979, -979, -979, -979, -979, -980, -980, +-980, -980, -980, -980, -980, -981, -981, -981, +-981, -981, -981, -982, -982, -982, -982, -982, +-982, -982, -983, -983, -983, -983, -983, -983, +-983, -984, -984, -984, -984, -984, -984, -984, +-985, -985, -985, -985, -985, -985, -985, -986, +-986, -986, -986, -986, -986, -986, -986, -987, +-987, -987, -987, -987, -987, -987, -987, -988, +-988, -988, -988, -988, -988, -988, -988, -989, +-989, -989, -989, -989, -989, -989, -989, -989, +-990, -990, -990, -990, -990, -990, -990, -990, +-990, -991, -991, -991, -991, -991, -991, -991, +-991, -991, -992, -992, -992, -992, -992, -992, +-992, -992, -992, -992, -993, -993, -993, -993, +-993, -993, -993, -993, -993, -993, -993, -994, +-994, -994, -994, -994, -994, -994, -994, -994, +-994, -994, -994, -995, -995, -995, -995, -995, +-995, -995, -995, -995, -995, -995, -995, -995, +-996, -996, -996, -996, -996, -996, -996, -996, +-996, -996, -996, -996, -996, -996, -997, -997, +-997, -997, -997, -997, -997, -997, -997, -997, +-997, -997, -997, -997, -997, -997, -998, -998, +-998, -998, -998, -998, -998, -998, -998, -998, +-998, -998, -998, -998, -998, -998, -998, -998, +-998, -998, -998, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -999, -999, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, +-1000, -999, -999, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -999, -999, +-999, -999, -999, -999, -999, -999, -998, -998, +-998, -998, -998, -998, -998, -998, -998, -998, +-998, -998, -998, -998, -998, -998, -998, -998, +-998, -998, -998, -997, -997, -997, -997, -997, +-997, -997, -997, -997, -997, -997, -997, -997, +-997, -997, -997, -996, -996, -996, -996, -996, +-996, -996, -996, -996, -996, -996, -996, -996, +-996, -995, -995, -995, -995, -995, -995, -995, +-995, -995, -995, -995, -995, -995, -994, -994, +-994, -994, -994, -994, -994, -994, -994, -994, +-994, -994, -993, -993, -993, -993, -993, -993, +-993, -993, -993, -993, -993, -992, -992, -992, +-992, -992, -992, -992, -992, -992, -992, -991, +-991, -991, -991, -991, -991, -991, -991, -991, +-990, -990, -990, -990, -990, -990, -990, -990, +-990, -989, -989, -989, -989, -989, -989, -989, +-989, -989, -988, -988, -988, -988, -988, -988, +-988, -988, -987, -987, -987, -987, -987, -987, +-987, -987, -986, -986, -986, -986, -986, -986, +-986, -986, -985, -985, -985, -985, -985, -985, +-985, -984, -984, -984, -984, -984, -984, -984, +-983, -983, -983, -983, -983, -983, -983, -982, +-982, -982, -982, -982, -982, -982, -981, -981, +-981, -981, -981, -981, -980, -980, -980, -980, +-980, -980, -980, -979, -979, -979, -979, -979, +-979, -978, -978, -978, -978, -978, -978, -977, +-977, -977, -977, -977, -977, -976, -976, -976, +-976, -976, -976, -975, -975, -975, -975, -975, +-975, -974, -974, -974, -974, -974, -973, -973, +-973, -973, -973, -973, -972, -972, -972, -972, +-972, -971, -971, -971, -971, -971, -971, -970, +-970, -970, -970, -970, -969, -969, -969, -969, +-969, -968, -968, -968, -968, -968, -967, -967, +-967, -967, -967, -966, -966, -966, -966, -966, +-965, -965, -965, -965, -965, -964, -964, -964, +-964, -964, -963, -963, -963, -963, -962, -962, +-962, -962, -962, -961, -961, -961, -961, -961, +-960, -960, -960, -960, -959, -959, -959, -959, +-959, -958, -958, -958, -958, -957, -957, -957, +-957, -956, -956, -956, -956, -956, -955, -955, +-955, -955, -954, -954, -954, -954, -953, -953, +-953, -953, -953, -952, -952, -952, -952, -951, +-951, -951, -951, -950, -950, -950, -950, -949, +-949, -949, -949, -948, -948, -948, -948, -947, +-947, -947, -947, -946, -946, -946, -946, -945, +-945, -945, -945, -944, -944, -944, -944, -943, +-943, -943, -942, -942, -942, -942, -941, -941, +-941, -941, -940, -940, -940, -940, -939, -939, +-939, -938, -938, -938, -938, -937, -937, -937, +-937, -936, -936, -936, -935, -935, -935, -935, +-934, -934, -934, -933, -933, -933, -933, -932, +-932, -932, -932, -931, -931, -931, -930, -930, +-930, -929, -929, -929, -929, -928, -928, -928, +-927, -927, -927, -927, -926, -926, -926, -925, +-925, -925, -924, -924, -924, -924, -923, -923, +-923, -922, -922, -922, -921, -921, -921, -921, +-920, -920, -920, -919, -919, -919, -918, -918, +-918, -917, -917, -917, -917, -916, -916, -916, +-915, -915, -915, -914, -914, -914, -913, -913, +-913, -912, -912, -912, -911, -911, -911, -910, +-910, -910, -909, -909, -909, -908, -908, -908, +-907, -907, -907, -906, -906, -906, -905, -905, +-905, -904, -904, -904, -903, -903, -903, -902, +-902, -902, -901, -901, -901, -900, -900, -900, +-899, -899, -899, -898, -898, -898, -897, -897, +-897, -896, -896, -896, -895, -895, -895, -894, +-894, -893, -893, -893, -892, -892, -892, -891, +-891, -891, -890, -890, -890, -889, -889, -888, +-888, -888, -887, -887, -887, -886, -886, -886, +-885, -885, -884, -884, -884, -883, -883, -883, +-882, -882, -882, -881, -881, -880, -880, -880, +-879, -879, -879, -878, -878, -877, -877, -877, +-876, -876, -876, -875, -875, -874, -874, -874, +-873, -873, -872, -872, -872, -871, -871, -871, +-870, -870, -869, -869, -869, -868, -868, -867, +-867, -867, -866, -866, -866, -865, -865, -864, +-864, -864, -863, -863, -862, -862, -862, -861, +-861, -860, -860, -860, -859, -859, -858, -858, +-858, -857, -857, -856, -856, -855, -855, -855, +-854, -854, -853, -853, -853, -852, -852, -851, +-851, -851, -850, -850, -849, -849, -849, -848, +-848, -847, -847, -846, -846, -846, -845, -845, +-844, -844, -843, -843, -843, -842, -842, -841, +-841, -841, -840, -840, -839, -839, -838, -838, +-838, -837, -837, -836, -836, -835, -835, -835, +-834, -834, -833, -833, -832, -832, -831, -831, +-831, -830, -830, -829, -829, -828, -828, -828, +-827, -827, -826, -826, -825, -825, -824, -824, +-824, -823, -823, -822, -822, -821, -821, -820, +-820, -820, -819, -819, -818, -818, -817, -817, +-816, -816, -815, -815, -815, -814, -814, -813, +-813, -812, -812, -811, -811, -810, -810, -809, +-809, -809, -808, -808, -807, -807, -806, -806, +-805, -805, -804, -804, -803, -803, -803, -802, +-802, -801, -801, -800, -800, -799, -799, -798, +-798, -797, -797, -796, -796, -795, -795, -794, +-794, -794, -793, -793, -792, -792, -791, -791, +-790, -790, -789, -789, -788, -788, -787, -787, +-786, -786, -785, -785, -784, -784, -783, -783, +-782, -782, -781, -781, -780, -780, -779, -779, +-778, -778, -777, -777, -776, -776, -775, -775, +-775, -774, -774, -773, -773, -772, -772, -771, +-771, -770, -770, -769, -769, -768, -768, -767, +-766, -766, -765, -765, -764, -764, -763, -763, +-762, -762, -761, -761, -760, -760, -759, -759, +-758, -758, -757, -757, -756, -756, -755, -755, +-754, -754, -753, -753, -752, -752, -751, -751, +-750, -750, -749, -749, -748, -748, -747, -746, +-746, -745, -745, -744, -744, -743, -743, -742, +-742, -741, -741, -740, -740, -739, -739, -738, +-738, -737, -736, -736, -735, -735, -734, -734, +-733, -733, -732, -732, -731, -731, -730, -730, +-729, -728, -728, -727, -727, -726, -726, -725, +-725, -724, -724, -723, -722, -722, -721, -721, +-720, -720, -719, -719, -718, -718, -717, -716, +-716, -715, -715, -714, -714, -713, -713, -712, +-712, -711, -710, -710, -709, -709, -708, -708, +-707, -707, -706, -705, -705, -704, -704, -703, +-703, -702, -702, -701, -700, -700, -699, -699, +-698, -698, -697, -696, -696, -695, -695, -694, +-694, -693, -693, -692, -691, -691, -690, -690, +-689, -689, -688, -687, -687, -686, -686, -685, +-685, -684, -683, -683, -682, -682, -681, -681, +-680, -679, -679, -678, -678, -677, -676, -676, +-675, -675, -674, -674, -673, -672, -672, -671, +-671, -670, -670, -669, -668, -668, -667, -667, +-666, -665, -665, -664, -664, -663, -662, -662, +-661, -661, -660, -660, -659, -658, -658, -657, +-657, -656, -655, -655, -654, -654, -653, -652, +-652, -651, -651, -650, -649, -649, -648, -648, +-647, -646, -646, -645, -645, -644, -643, -643, +-642, -642, -641, -640, -640, -639, -639, -638, +-637, -637, -636, -636, -635, -634, -634, -633, +-633, -632, -631, -631, -630, -630, -629, -628, +-628, -627, -626, -626, -625, -625, -624, -623, +-623, -622, -622, -621, -620, -620, -619, -618, +-618, -617, -617, -616, -615, -615, -614, -614, +-613, -612, -612, -611, -610, -610, -609, -609, +-608, -607, -607, -606, -605, -605, -604, -604, +-603, -602, -602, -601, -600, -600, -599, -599, +-598, -597, -597, -596, -595, -595, -594, -593, +-593, -592, -592, -591, -590, -590, -589, -588, +-588, -587, -587, -586, -585, -585, -584, -583, +-583, -582, -581, -581, -580, -579, -579, -578, +-578, -577, -576, -576, -575, -574, -574, -573, +-572, -572, -571, -570, -570, -569, -569, -568, +-567, -567, -566, -565, -565, -564, -563, -563, +-562, -561, -561, -560, -559, -559, -558, -558, +-557, -556, -556, -555, -554, -554, -553, -552, +-552, -551, -550, -550, -549, -548, -548, -547, +-546, -546, -545, -544, -544, -543, -542, -542, +-541, -540, -540, -539, -538, -538, -537, -536, +-536, -535, -534, -534, -533, -533, -532, -531, +-531, -530, -529, -529, -528, -527, -527, -526, +-525, -525, -524, -523, -522, -522, -521, -520, +-520, -519, -518, -518, -517, -516, -516, -515, +-514, -514, -513, -512, -512, -511, -510, -510, +-509, -508, -508, -507, -506, -506, -505, -504, +-504, -503, -502, -502, -501, -500, -500, -499, +-498, -498, -497, -496, -495, -495, -494, -493, +-493, -492, -491, -491, -490, -489, -489, -488, +-487, -487, -486, -485, -485, -484, -483, -482, +-482, -481, -480, -480, -479, -478, -478, -477, +-476, -476, -475, -474, -473, -473, -472, -471, +-471, -470, -469, -469, -468, -467, -467, -466, +-465, -464, -464, -463, -462, -462, -461, -460, +-460, -459, -458, -457, -457, -456, -455, -455, +-454, -453, -453, -452, -451, -450, -450, -449, +-448, -448, -447, -446, -446, -445, -444, -443, +-443, -442, -441, -441, -440, -439, -439, -438, +-437, -436, -436, -435, -434, -434, -433, -432, +-431, -431, -430, -429, -429, -428, -427, -426, +-426, -425, -424, -424, -423, -422, -422, -421, +-420, -419, -419, -418, -417, -417, -416, -415, +-414, -414, -413, -412, -412, -411, -410, -409, +-409, -408, -407, -406, -406, -405, -404, -404, +-403, -402, -401, -401, -400, -399, -399, -398, +-397, -396, -396, -395, -394, -394, -393, -392, +-391, -391, -390, -389, -388, -388, -387, -386, +-386, -385, -384, -383, -383, -382, -381, -381, +-380, -379, -378, -378, -377, -376, -375, -375, +-374, -373, -373, -372, -371, -370, -370, -369, +-368, -367, -367, -366, -365, -364, -364, -363, +-362, -362, -361, -360, -359, -359, -358, -357, +-356, -356, -355, -354, -353, -353, -352, -351, +-351, -350, -349, -348, -348, -347, -346, -345, +-345, -344, -343, -342, -342, -341, -340, -339, +-339, -338, -337, -337, -336, -335, -334, -334, +-333, -332, -331, -331, -330, -329, -328, -328, +-327, -326, -325, -325, -324, -323, -322, -322, +-321, -320, -319, -319, -318, -317, -316, -316, +-315, -314, -313, -313, -312, -311, -311, -310, +-309, -308, -308, -307, -306, -305, -305, -304, +-303, -302, -302, -301, -300, -299, -299, -298, +-297, -296, -296, -295, -294, -293, -293, -292, +-291, -290, -290, -289, -288, -287, -287, -286, +-285, -284, -284, -283, -282, -281, -280, -280, +-279, -278, -277, -277, -276, -275, -274, -274, +-273, -272, -271, -271, -270, -269, -268, -268, +-267, -266, -265, -265, -264, -263, -262, -262, +-261, -260, -259, -259, -258, -257, -256, -256, +-255, -254, -253, -252, -252, -251, -250, -249, +-249, -248, -247, -246, -246, -245, -244, -243, +-243, -242, -241, -240, -240, -239, -238, -237, +-236, -236, -235, -234, -233, -233, -232, -231, +-230, -230, -229, -228, -227, -227, -226, -225, +-224, -224, -223, -222, -221, -220, -220, -219, +-218, -217, -217, -216, -215, -214, -214, -213, +-212, -211, -210, -210, -209, -208, -207, -207, +-206, -205, -204, -204, -203, -202, -201, -200, +-200, -199, -198, -197, -197, -196, -195, -194, +-194, -193, -192, -191, -190, -190, -189, -188, +-187, -187, -186, -185, -184, -184, -183, -182, +-181, -180, -180, -179, -178, -177, -177, -176, +-175, -174, -173, -173, -172, -171, -170, -170, +-169, -168, -167, -167, -166, -165, -164, -163, +-163, -162, -161, -160, -160, -159, -158, -157, +-156, -156, -155, -154, -153, -153, -152, -151, +-150, -149, -149, -148, -147, -146, -146, -145, +-144, -143, -142, -142, -141, -140, -139, -139, +-138, -137, -136, -135, -135, -134, -133, -132, +-132, -131, -130, -129, -128, -128, -127, -126, +-125, -125, -124, -123, -122, -121, -121, -120, +-119, -118, -118, -117, -116, -115, -114, -114, +-113, -112, -111, -111, -110, -109, -108, -107, +-107, -106, -105, -104, -103, -103, -102, -101, +-100, -100, -99, -98, -97, -96, -96, -95, +-94, -93, -93, -92, -91, -90, -89, -89, +-88, -87, -86, -86, -85, -84, -83, -82, +-82, -81, -80, -79, -78, -78, -77, -76, +-75, -75, -74, -73, -72, -71, -71, -70, +-69, -68, -67, -67, -66, -65, -64, -64, +-63, -62, -61, -60, -60, -59, -58, -57, +-57, -56, -55, -54, -53, -53, -52, -51, +-50, -49, -49, -48, -47, -46, -46, -45, +-44, -43, -42, -42, -41, -40, -39, -38, +-38, -37, -36, -35, -35, -34, -33, -32, +-31, -31, -30, -29, -28, -27, -27, -26, +-25, -24, -24, -23, -22, -21, -20, -20, +-19, -18, -17, -16, -16, -15, -14, -13, +-13, -12, -11, -10, -9, -9, -8, -7, +-6, -5, -5, -4, -3, -2, -2, -1}; diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stlogo.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stlogo.h new file mode 100644 index 0000000..c4e322d --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stlogo.h @@ -0,0 +1,623 @@ +/** + ****************************************************************************** + * @file BSP/Inc/stlogo.h + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief This file contains image used for BSP example. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STLOGO_H +#define __STLOGO_H + +__ALIGN_BEGIN const unsigned char stlogo[9174] __ALIGN_END = +{ +0x42,0x4d,0xd6,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00, +0x00,0x00,0x50,0x00,0x00,0x00,0x39,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x03,0x00, +0x00,0x00,0xa0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x98,0xb5,0xa9,0x08, +0x4b,0x29,0x27,0x00,0xd2,0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x7f,0xd7,0x5f,0xc7,0x1e,0xb7,0x9f,0xdf,0x3f,0xc7,0x5f,0xc7,0x3e,0xc7,0x3f,0xc7, +0x5f,0xc7,0xff,0xff,0xdf,0xf7,0xbe,0x9e,0xbe,0xa6,0xff,0xff,0xff,0xff,0xff,0xf7, +0x9e,0x96,0xff,0xff,0xff,0xff,0xff,0xff,0xd6,0x9c,0x14,0x84,0xdc,0xde,0xfa,0xc5, +0xff,0xff,0xff,0xff,0xb5,0x9c,0x34,0x8c,0x3a,0xce,0x3d,0xef,0xa9,0x08,0x34,0x8c, +0xd6,0x9c,0x1a,0xce,0x04,0x00,0xff,0xff,0xb8,0xbd,0xff,0xff,0xff,0xff,0xf9,0xc5, +0xff,0xff,0xff,0xff,0x98,0xb5,0xbf,0xff,0xff,0xff,0x37,0xad,0xf3,0x7b,0xfd,0xe6, +0xff,0xff,0xdc,0xde,0xdc,0xde,0xff,0xff,0xff,0xff,0x99,0xb5,0xff,0xff,0x9c,0xd6, +0xdc,0xde,0xff,0xff,0xff,0xff,0x57,0xad,0xf3,0x7b,0xdc,0xde,0xff,0xff,0xff,0xff, +0xdf,0xff,0x14,0x84,0x95,0x94,0xfd,0xe6,0x1a,0xc6,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xde,0xae,0xdb,0x14,0xdd,0x5d,0x1e,0xbf,0xfb,0x1c,0x5d,0x7e,0x9e,0x96,0xdb,0x14, +0x9e,0x96,0xdf,0xf7,0xbb,0x04,0x7d,0x8e,0x3d,0x76,0xbb,0x04,0xff,0xff,0x3d,0x7e, +0xbb,0x04,0x3d,0x7e,0xff,0xff,0xc9,0x10,0xcd,0x31,0xf3,0x73,0x07,0x00,0x06,0x00, +0xff,0xff,0xc9,0x10,0x2d,0x3a,0x51,0x63,0x04,0x00,0x54,0x84,0x13,0x84,0x89,0x00, +0xf3,0x7b,0x0a,0x11,0x06,0x00,0xd8,0xbd,0x06,0x00,0xff,0xff,0xff,0xff,0x06,0x00, +0xff,0xff,0xff,0xff,0x05,0x00,0xbc,0xde,0x0d,0x3a,0x2a,0x19,0xd3,0x73,0x05,0x00, +0x78,0xb5,0xb2,0x6b,0x51,0x6b,0xff,0xff,0xff,0xff,0x03,0x00,0xdf,0xff,0x0e,0x3a, +0xb2,0x73,0xff,0xff,0x0d,0x3a,0x0a,0x11,0x14,0x7c,0x05,0x00,0x77,0xad,0xff,0xff, +0x06,0x00,0x10,0x5b,0xf0,0x5a,0x04,0x00,0x4b,0x21,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x1c,0x25,0x5f,0xdf,0xff,0xff,0x3a,0x2d,0xdf,0xff,0xff,0xff,0x1c,0x25, +0xff,0xff,0x1d,0x76,0x9e,0x96,0xff,0xff,0xff,0xff,0xff,0xae,0x5f,0xd7,0xff,0xff, +0x7e,0x86,0xff,0xff,0x98,0xb5,0x88,0x08,0xff,0xff,0xff,0xff,0x5d,0xef,0x07,0x00, +0x7e,0xef,0x06,0x00,0xff,0xff,0xff,0xff,0x11,0x5b,0x51,0x6b,0x06,0x00,0xff,0xff, +0xff,0xff,0xff,0xff,0x05,0x00,0x1a,0xc6,0x27,0x00,0xff,0xff,0xff,0xff,0x69,0x08, +0xff,0xff,0xff,0xff,0x27,0x00,0x37,0xa5,0x07,0x00,0xff,0xff,0xdf,0xff,0x3a,0xce, +0xab,0x31,0x14,0x84,0xb2,0x73,0xff,0xff,0xff,0xff,0x06,0x00,0xff,0xff,0xaf,0x52, +0x34,0x84,0x3a,0xce,0x06,0x00,0xff,0xff,0xdf,0xff,0xf9,0xc5,0x8b,0x31,0x12,0x5b, +0x10,0x5b,0xff,0xff,0xff,0xff,0x95,0x94,0x4b,0x21,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xfc,0x1c,0x5f,0xd7,0xff,0xff,0x3b,0x2d,0xbf,0xef,0xff,0xff,0xfb,0x1c, +0xff,0xff,0xfc,0x6d,0xbd,0x4d,0xfd,0x5d,0x1e,0x66,0x5c,0x2d,0xfd,0x65,0xff,0xff, +0xff,0xff,0xff,0xff,0xd6,0x9c,0x4e,0x3a,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, +0x5e,0xef,0x48,0x00,0xff,0xff,0xff,0xff,0x13,0x84,0x6e,0x4a,0x28,0x00,0xff,0xff, +0xff,0xff,0xff,0xff,0x68,0x08,0xf9,0xbd,0x48,0x00,0xff,0xff,0xff,0xff,0x68,0x08, +0xff,0xff,0xff,0xff,0x48,0x00,0x53,0x84,0x28,0x00,0x0a,0x11,0xca,0x10,0x0a,0x11, +0x06,0x00,0x92,0x6b,0x14,0x84,0xff,0xff,0xff,0xff,0x05,0x00,0xff,0xff,0xaf,0x52, +0x75,0x8c,0xb9,0xbd,0x07,0x00,0x2a,0x19,0xca,0x10,0x0a,0x11,0xa9,0x08,0x8b,0x29, +0x74,0x8c,0xff,0xff,0xff,0xff,0x57,0xa5,0x4b,0x19,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x1c,0x25,0x5f,0xd7,0x7f,0xdf,0xfb,0x1c,0xdf,0xf7,0x1e,0xb7,0x1c,0x25, +0x3f,0xc7,0x7f,0xd7,0x1c,0x25,0x3f,0xcf,0xde,0xae,0xfc,0x1c,0xbf,0xef,0xff,0xff, +0xff,0xff,0xff,0xff,0xbf,0xff,0x05,0x00,0xd6,0x94,0xdc,0xde,0xed,0x31,0x07,0x00, +0x5e,0xef,0x07,0x00,0xff,0xff,0xff,0xff,0xb2,0x73,0x14,0x7c,0x6b,0x21,0xf0,0x5a, +0xbb,0xde,0xf3,0x7b,0x04,0x00,0x1a,0xc6,0x06,0x00,0x98,0xb5,0xf6,0x9c,0x05,0x00, +0xb5,0x94,0x19,0xc6,0x04,0x00,0xff,0xff,0x47,0x00,0x37,0xa5,0x5e,0xef,0x4e,0x42, +0xef,0x5a,0x74,0x8c,0x27,0x00,0x9b,0xd6,0xb5,0x94,0x07,0x00,0x5d,0xef,0xcd,0x31, +0xaf,0x52,0x7b,0xd6,0x68,0x00,0xf6,0x9c,0x5d,0xef,0x2e,0x42,0x11,0x5b,0xfc,0xe6, +0x06,0x00,0x1a,0xc6,0xf9,0xc5,0xa9,0x08,0xac,0x29,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xfb,0x1c,0x7f,0xdf,0x7d,0x8e,0xfd,0x65,0xdf,0xff,0xdd,0x5d,0x1b,0x25, +0x5e,0x86,0xff,0xff,0x5f,0xcf,0x9c,0x45,0xfd,0x6d,0xbf,0xe7,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x3d,0xe7,0x2b,0x19,0x48,0x00,0xb2,0x73,0x2e,0x42, +0x7e,0xf7,0xec,0x39,0xff,0xff,0xff,0xff,0xb5,0x9c,0xb5,0x94,0xff,0xff,0x8e,0x4a, +0x48,0x00,0xef,0x52,0x0d,0x3a,0x7a,0xd6,0x0d,0x3a,0x4a,0x19,0x2b,0x19,0x5a,0xce, +0x2b,0x21,0x68,0x00,0x19,0xc6,0xff,0xff,0x9e,0xf7,0x4a,0x19,0x68,0x00,0xb2,0x73, +0xff,0xff,0xd5,0x9c,0xf0,0x5a,0x89,0x00,0x2b,0x21,0xde,0xf7,0x77,0xb5,0x89,0x00, +0xea,0x10,0xd3,0x7b,0xff,0xff,0xed,0x31,0x68,0x00,0x91,0x6b,0xff,0xff,0xff,0xff, +0xd9,0xbd,0x89,0x00,0xc9,0x10,0x51,0x63,0x6c,0x29,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x9e,0x96,0xdc,0x0c,0x3f,0xcf,0xff,0xff,0x1c,0x1d,0xff,0xff,0xff,0xff,0x3c,0x25, +0x1c,0x6e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x42, +0xf3,0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xa5,0xa9,0x08,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x3f,0xcf,0xde,0xa6,0xdf,0xf7,0xff,0xff,0x1e,0x76,0xff,0xff,0xff,0xff,0xdf,0xf7, +0xbd,0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x39,0xce, +0xbb,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xde,0xd8,0xbd,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x14,0x54,0xf0,0x22,0x72,0x3b, +0x72,0x33,0x72,0x3b,0x71,0x33,0x72,0x3b,0x72,0x33,0x51,0x2b,0x7b,0xbe,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0x51,0x33,0x72,0x3b, +0x71,0x33,0xd3,0x43,0x37,0x85,0x3e,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb9,0x9d,0x0d,0x02, +0x6d,0x12,0x6d,0x0a,0x8e,0x12,0x6e,0x0a,0x8e,0x0a,0x6e,0x02,0xf0,0x1a,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x64,0x6e,0x02,0x8f,0x0a, +0xaf,0x12,0x8e,0x0a,0x8e,0x0a,0x2e,0x02,0x92,0x3b,0x5d,0xe7,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xa5, +0x4e,0x02,0xaf,0x12,0xaf,0x12,0xd0,0x12,0xaf,0x12,0xd0,0x12,0x4e,0x02,0x7b,0xbe, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5e,0xe7,0x4e,0x02,0xf0,0x12, +0xf0,0x12,0xf0,0x1a,0xd0,0x12,0xf0,0x12,0xaf,0x0a,0x0d,0x02,0xf9,0xb5,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x54,0x5c,0x6e,0x02,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xcf,0x12,0xaf,0x12,0xd2,0x43, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0xcf,0x0a, +0xf0,0x1a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0xf0,0x12,0xf0,0x12,0xab,0x01,0x9b,0xc6, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x8f,0x0a,0xcf,0x12,0xf0,0x1a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0x6f,0x02, +0x5e,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5b,0xbe,0xb0,0x0a, +0x11,0x1b,0x11,0x1b,0x11,0x13,0x11,0x1b,0x10,0x13,0x11,0x1b,0xf0,0x12,0xd0,0x0a, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xb2,0x3b,0xd0,0x0a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0x11,0x1b,0xd0,0x0a, +0xd6,0x74,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x12, +0x31,0x1b,0x11,0x13,0x11,0x1b,0x11,0x13,0x31,0x1b,0x10,0x13,0x11,0x1b,0xb0,0x02, +0xfb,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3a,0xb6,0x51,0x2b,0x92,0x3b,0xb2,0x3b, +0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb3,0x3b,0x92,0x3b,0xb2,0x3b, +0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b, +0x92,0x3b,0x92,0x3b,0x34,0x5c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x98,0x95,0xaf,0x02,0x11,0x1b,0x11,0x13,0x31,0x1b,0x11,0x1b,0x32,0x1b, +0x0c,0x02,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0x84, +0xaf,0x0a,0x52,0x1b,0x31,0x1b,0x32,0x1b,0x31,0x1b,0x32,0x1b,0x11,0x1b,0xf1,0x12, +0x57,0x24,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0xef,0xcc,0x01,0x0c,0x1a,0x0b,0x12, +0x0c,0x1a,0x0b,0x12,0x0c,0x1a,0x0c,0x12,0x2c,0x1a,0x2c,0x12,0x4d,0x12,0x4d,0x12, +0x6d,0x12,0x6d,0x0a,0x8e,0x12,0x8e,0x0a,0x8f,0x0a,0x8f,0x0a,0xaf,0x12,0xaf,0x0a, +0xd0,0x12,0xd0,0x0a,0x6f,0x02,0xd9,0x9d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x19,0xb6,0x6f,0x02,0x11,0x13,0x31,0x1b,0x31,0x13,0x32,0x1b,0x31,0x13, +0x8f,0x02,0x57,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9e,0xf7, +0x4e,0x02,0x52,0x13,0x52,0x1b,0x31,0x13,0x52,0x1b,0x31,0x13,0x32,0x1b,0x11,0x13, +0x53,0x0b,0x1e,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0x0c,0x1a,0x4d,0x22, +0x2c,0x1a,0x4d,0x22,0x4c,0x1a,0x6d,0x22,0x6d,0x1a,0x8e,0x1a,0x6d,0x1a,0x8f,0x1a, +0x8e,0x12,0xaf,0x1a,0xaf,0x12,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xf0,0x12,0x10,0x1b, +0xf0,0x12,0x11,0x13,0x2d,0x02,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x1a,0xae,0xaf,0x02,0x32,0x1b,0x32,0x1b,0x52,0x1b,0x32,0x13,0x53,0x1b, +0x52,0x13,0xf1,0x0a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x54,0x4c,0x32,0x13,0x52,0x1b,0x73,0x1b,0x52,0x1b,0x52,0x1b,0x52,0x13,0x52,0x1b, +0x11,0x13,0xdb,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbb,0xc6,0xcb,0x01,0x2c,0x1a, +0x4d,0x22,0x4c,0x1a,0x4d,0x1a,0x4d,0x1a,0x6e,0x1a,0x6d,0x12,0x8e,0x1a,0x8e,0x12, +0xaf,0x1a,0xae,0x12,0xcf,0x12,0xaf,0x12,0xd0,0x12,0xcf,0x12,0xf0,0x1a,0xf0,0x12, +0xd0,0x0a,0x4d,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xd7,0x54,0x11,0x13,0x31,0x13,0x52,0x1b,0x52,0x13,0x52,0x1b,0x52,0x1b, +0x53,0x1b,0x12,0x03,0x1e,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x1d,0xd7,0x12,0x03,0x73,0x1b,0x52,0x1b,0x73,0x1b,0x52,0x1b,0x53,0x1b,0x52,0x13, +0x32,0x13,0xd4,0x1b,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0c,0x0a,0x2c,0x22, +0x4c,0x1a,0x4d,0x22,0x4d,0x1a,0x6d,0x1a,0x6d,0x1a,0x8e,0x1a,0x8e,0x1a,0xaf,0x1a, +0xae,0x12,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xd0,0x12,0xf1,0x1a,0x10,0x1b,0xb0,0x0a, +0xae,0x2a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xf6,0x13,0x11,0x13,0x52,0x1b,0x52,0x13,0x73,0x1b,0x53,0x1b,0x73,0x1b, +0x73,0x1b,0x53,0x1b,0x19,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x98,0x34,0x53,0x13,0x93,0x23,0x73,0x1b,0x73,0x23,0x73,0x1b,0x73,0x1b, +0x52,0x1b,0x53,0x13,0xfb,0x8d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x8d,0xcb,0x09, +0x4d,0x22,0x4d,0x1a,0x6d,0x1a,0x6d,0x12,0x8e,0x1a,0x8e,0x12,0xaf,0x1a,0x8e,0x12, +0xaf,0x12,0xaf,0x12,0xd0,0x12,0xcf,0x12,0xf0,0x12,0xf0,0x12,0x8f,0x02,0x71,0x3b, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x7c,0xae,0x73,0x23,0x73,0x2b,0x73,0x23,0x93,0x2b,0x93,0x23,0x94,0x2b,0x93,0x23, +0x94,0x23,0x73,0x13,0xf5,0x23,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x7c,0xae,0x94,0x13,0x73,0x13,0x94,0x1b,0x73,0x1b,0x93,0x1b,0x73,0x1b, +0x73,0x1b,0x32,0x13,0x74,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4e,0x02, +0x2c,0x1a,0x6d,0x1a,0x6d,0x1a,0x8e,0x1a,0x8e,0x1a,0xae,0x1a,0x8e,0x12,0xaf,0x12, +0xaf,0x12,0xd0,0x12,0xf0,0x1a,0x11,0x23,0x11,0x23,0xf1,0x1a,0x96,0x64,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xef, +0x76,0x4c,0xb3,0x33,0xd4,0x3b,0xf5,0x3b,0xd4,0x3b,0xf5,0x3b,0xf5,0x3b,0x15,0x3c, +0xf5,0x3b,0x16,0x3c,0xf5,0x33,0x3c,0xa6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0x76,0x3c,0x74,0x13,0x94,0x13,0xb4,0x1b,0x93,0x1b,0x94,0x23, +0x73,0x1b,0x73,0x23,0x12,0x03,0x5b,0xae,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0x5c, +0x2c,0x12,0x4d,0x1a,0x6e,0x1a,0x6d,0x12,0x8e,0x12,0x8e,0x12,0xcf,0x1a,0xef,0x22, +0x31,0x33,0x51,0x33,0x71,0x3b,0x51,0x33,0x32,0x23,0x79,0x7d,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5e,0xdf,0x36,0x3c, +0x93,0x33,0xb4,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf4,0x33,0xf5,0x3b,0xf5,0x3b, +0x16,0x3c,0x15,0x3c,0xf5,0x3b,0xf6,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0x5c,0xa6,0xd5,0x2b,0xd5,0x2b,0xb4,0x1b,0xb4,0x1b,0x93,0x13, +0x94,0x1b,0x73,0x1b,0x73,0x1b,0xf0,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xdf, +0xb0,0x02,0x4d,0x1a,0x8e,0x1a,0xcf,0x2a,0xef,0x32,0x31,0x3b,0x30,0x33,0x51,0x3b, +0x31,0x33,0x52,0x3b,0x31,0x33,0x53,0x23,0x3c,0x9e,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xce,0xb5,0x23,0xb4,0x33, +0xd4,0x33,0xf5,0x3b,0xd4,0x3b,0xf5,0x3b,0xf5,0x3b,0x16,0x3c,0x15,0x3c,0x36,0x3c, +0x16,0x3c,0x36,0x44,0x36,0x3c,0xd5,0x2b,0x3b,0xae,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x2b,0x16,0x3c,0x36,0x44,0x16,0x3c,0x16,0x3c, +0xd4,0x2b,0xb4,0x23,0x94,0x13,0x4f,0x02,0xdc,0xd6,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xf8,0x5c,0x8e,0x2a,0xf0,0x32,0xef,0x32,0x10,0x33,0x10,0x33,0x31,0x33,0x30,0x33, +0x51,0x33,0x10,0x33,0xb4,0x2b,0xbd,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5b,0xae,0x53,0x1b,0xb4,0x3b,0xd4,0x33, +0xf4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x15,0x3c,0x15,0x3c,0x16,0x3c,0x16,0x3c, +0x36,0x3c,0x36,0x3c,0x37,0x3c,0x36,0x34,0xd4,0x3b,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0x54,0x16,0x34,0x16,0x3c,0x36,0x3c,0x15,0x3c, +0x16,0x3c,0x15,0x3c,0x15,0x3c,0x94,0x1b,0xb1,0x5b,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x1e,0xcf,0x52,0x33,0xcf,0x32,0x10,0x3b,0x10,0x33,0x31,0x33,0x30,0x33,0x51,0x3b, +0x31,0x33,0x93,0x33,0xbd,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x99,0x95,0x11,0x13,0xd4,0x3b,0xd4,0x33,0xf5,0x3b, +0xf5,0x3b,0x15,0x3c,0x15,0x3c,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c, +0x37,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x44,0x73,0x23,0xdc,0xce,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0xdf,0x94,0x23,0x57,0x44,0x36,0x3c,0x37,0x3c, +0x16,0x3c,0x36,0x3c,0x15,0x3c,0x36,0x44,0xaf,0x1a,0xdf,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xb6,0x5c,0xae,0x2a,0x10,0x33,0x30,0x33,0x10,0x33,0x51,0x33,0x31,0x33, +0x11,0x33,0x59,0x75,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xd6,0x7c,0xf1,0x12,0xd4,0x3b,0xd4,0x33,0xf4,0x3b,0xd4,0x33, +0xf5,0x3b,0xf5,0x33,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x37,0x3c, +0x57,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c,0x57,0x3c,0xd2,0x53,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x51,0x33,0x57,0x3c,0x57,0x3c,0x36,0x3c, +0x37,0x3c,0x16,0x3c,0x36,0x3c,0x15,0x3c,0xb4,0x2b,0x77,0x95,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xdd,0xbe,0x10,0x33,0x10,0x33,0x10,0x33,0x31,0x3b,0x31,0x33,0x51,0x3b, +0x72,0x33,0xfe,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0x13,0x64,0xf1,0x22,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xd5,0x3b,0x15,0x3c, +0xf5,0x3b,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x44,0x57,0x3c,0x78,0x3c, +0x57,0x3c,0x78,0x44,0x77,0x44,0x78,0x44,0x98,0x44,0xf0,0x22,0xbf,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0xa5,0xb5,0x2b,0x77,0x3c,0x57,0x3c, +0x37,0x3c,0x57,0x44,0x36,0x3c,0x36,0x3c,0x16,0x34,0xb3,0x43,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xd4,0x3b,0xcf,0x2a,0x30,0x33,0x30,0x33,0x51,0x33,0x31,0x33, +0xb4,0x33,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x2f,0x3b,0x11,0x23,0xd4,0x3b,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x33, +0x16,0x3c,0x15,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c, +0x77,0x44,0x77,0x44,0x98,0x44,0x77,0x44,0x98,0x4c,0x15,0x34,0xd5,0x84,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8e,0x1a,0x98,0x44,0x57,0x3c, +0x57,0x3c,0x36,0x3c,0x57,0x3c,0x16,0x3c,0x36,0x3c,0xb4,0x33,0xdc,0xce,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0x9a,0x75,0xf0,0x32,0x30,0x33,0x51,0x33,0x51,0x33,0x52,0x3b, +0xb4,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x74, +0x11,0x23,0xb4,0x3b,0xb4,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x16,0x3c, +0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x3c,0x77,0x3c,0x78,0x44, +0x77,0x44,0x98,0x4c,0x97,0x44,0x98,0x4c,0x98,0x4c,0xb8,0x4c,0xf3,0x43,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x74,0x74,0x57,0x3c,0x78,0x44, +0x77,0x3c,0x77,0x3c,0x37,0x3c,0x37,0x3c,0x36,0x3c,0x16,0x34,0xf7,0x6c,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0x5e,0xdf,0x12,0x1b,0x30,0x33,0x31,0x33,0x51,0x33,0x51,0x33, +0x94,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x98,0x95, +0x32,0x23,0x72,0x2b,0x93,0x2b,0x93,0x2b,0xb4,0x33,0xb4,0x2b,0xd5,0x33,0xd5,0x2b, +0xf5,0x33,0xf5,0x2b,0x16,0x34,0x16,0x34,0x37,0x3c,0x36,0x34,0x57,0x3c,0x56,0x3c, +0x57,0x44,0x56,0x3c,0x77,0x44,0x77,0x44,0x97,0x4c,0x77,0x44,0x56,0x44,0x9b,0xb6, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9e,0xf7,0x11,0x1b,0x16,0x34, +0x16,0x34,0x16,0x2c,0x16,0x34,0x16,0x34,0x16,0x34,0xf5,0x2b,0x36,0x3c,0x7e,0xe7, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x44,0x10,0x33,0x51,0x3b,0x51,0x33,0x72,0x3b, +0x32,0x23,0x9f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x1d,0xd7,0xdd,0xc6,0xdc,0xc6,0xdd,0xc6,0xdc,0xc6,0xdd,0xce,0xdc,0xc6,0xfd,0xce, +0xdc,0xc6,0xfd,0xce,0xdd,0xce,0xfd,0xce,0xfd,0xc6,0xfd,0xce,0xfd,0xce,0xfd,0xce, +0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xdd,0xc6,0xbf,0xef, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3d,0xe7,0x3a,0xb6, +0x5a,0xbe,0x9b,0xc6,0x9b,0xc6,0xbc,0xc6,0xdc,0xc6,0xfd,0xce,0xdd,0xc6,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xa6,0x11,0x23,0x31,0x33,0x52,0x3b,0x52,0x33, +0x52,0x2b,0xb9,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x52,0x23,0x51,0x33,0x51,0x33,0x72,0x3b, +0x72,0x33,0x93,0x33,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0x85,0x10,0x23,0x72,0x3b,0x72,0x33, +0x93,0x3b,0x31,0x23,0xf7,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xd0,0x1a,0x72,0x33,0x73,0x3b, +0x92,0x33,0xb3,0x3b,0xd0,0x1a,0x78,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0x4b,0x52,0x33,0x72,0x33, +0x93,0x3b,0x93,0x33,0xd4,0x3b,0xf0,0x1a,0x91,0x4b,0x7e,0xef,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xd6,0x6e,0x12,0x93,0x3b, +0x93,0x33,0xb3,0x3b,0xb3,0x33,0xd4,0x3b,0xb4,0x33,0x8f,0x12,0xef,0x2a,0x94,0x74, +0x36,0x95,0x57,0x9d,0x36,0x95,0x57,0x9d,0x36,0x95,0x56,0x95,0x36,0x95,0x36,0x95, +0x36,0x95,0x36,0x95,0x36,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x16,0x8d,0x36,0x95, +0x16,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x36,0x95,0x36,0x95, +0x36,0x95,0x36,0x95,0x36,0x95,0x57,0x9d,0x36,0x95,0x57,0x9d,0x56,0x95,0x57,0x9d, +0x56,0x95,0x57,0x9d,0x56,0x95,0x57,0x9d,0x57,0x9d,0x77,0x9d,0x57,0x9d,0x77,0x9d, +0x77,0x9d,0x57,0x95,0xbe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb1,0x53,0x11,0x2b, +0x93,0x3b,0x92,0x33,0xb3,0x3b,0xb3,0x33,0xd4,0x3b,0xf5,0x33,0x16,0x3c,0xd4,0x2b, +0x94,0x2b,0x93,0x23,0xb4,0x2b,0xb4,0x2b,0xb5,0x2b,0xb4,0x2b,0xd5,0x33,0xd5,0x33, +0xf5,0x3b,0xf5,0x33,0x15,0x3c,0x15,0x3c,0x35,0x44,0x35,0x44,0x56,0x4c,0x55,0x4c, +0x76,0x4c,0x75,0x4c,0x96,0x54,0x76,0x54,0x96,0x54,0x76,0x54,0x76,0x54,0x56,0x4c, +0x76,0x4c,0x55,0x44,0x56,0x4c,0x35,0x44,0x36,0x44,0x15,0x3c,0x15,0x3c,0xf5,0x33, +0xf5,0x3b,0xf5,0x33,0xf5,0x33,0xd5,0x2b,0xd5,0x2b,0xb4,0x2b,0xb4,0x2b,0x93,0x2b, +0x94,0x2b,0x32,0x1b,0xf6,0x84,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x30,0x33, +0x52,0x2b,0x93,0x3b,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x16,0x3c, +0x16,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x44,0x77,0x3c,0x98,0x44,0x98,0x44,0xb8,0x4c, +0xb8,0x4c,0xd9,0x54,0xd8,0x54,0xf9,0x5c,0xf8,0x5c,0x19,0x65,0x19,0x65,0x39,0x65, +0x39,0x65,0x59,0x6d,0x59,0x6d,0x7a,0x75,0x59,0x6d,0x59,0x75,0x39,0x6d,0x39,0x6d, +0x19,0x65,0x19,0x65,0xf8,0x5c,0xf9,0x5c,0xd8,0x54,0xd9,0x54,0xb8,0x54,0xb8,0x4c, +0x98,0x4c,0x98,0x4c,0x77,0x44,0x78,0x44,0x57,0x3c,0x57,0x44,0x36,0x3c,0x36,0x3c, +0x15,0x3c,0xf6,0x3b,0x72,0x33,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0x74,0x64,0x11,0x23,0x93,0x33,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x33, +0x16,0x3c,0x16,0x34,0x37,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c,0x98,0x44,0x97,0x44, +0x98,0x4c,0x98,0x4c,0xd8,0x54,0xd8,0x54,0xf8,0x5c,0xf8,0x5c,0x19,0x65,0x18,0x5d, +0x39,0x65,0x39,0x6d,0x59,0x6d,0x59,0x6d,0x59,0x6d,0x39,0x6d,0x39,0x6d,0x18,0x65, +0x19,0x65,0xf8,0x5c,0xf9,0x5c,0xd8,0x54,0xd8,0x54,0xb8,0x54,0xb8,0x4c,0x97,0x44, +0x98,0x4c,0x77,0x44,0x78,0x44,0x57,0x3c,0x57,0x3c,0x16,0x3c,0x36,0x3c,0x15,0x34, +0xf5,0x3b,0xd4,0x33,0xb4,0x33,0x7b,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xdc,0xce,0xb6,0x64,0x93,0x33,0x93,0x2b,0xb4,0x33,0xb4,0x33,0xd5,0x33, +0xd4,0x33,0xf5,0x33,0xf5,0x33,0x16,0x34,0x16,0x34,0x36,0x3c,0x16,0x3c,0x36,0x3c, +0x36,0x3c,0x56,0x44,0x56,0x44,0x77,0x4c,0x76,0x4c,0x97,0x4c,0x96,0x4c,0x97,0x54, +0x97,0x54,0xb7,0x54,0xb7,0x54,0xd8,0x5c,0xb7,0x54,0xd7,0x5c,0xb7,0x54,0xb8,0x54, +0x97,0x54,0x97,0x54,0x97,0x4c,0x97,0x4c,0x77,0x4c,0x97,0x4c,0x77,0x44,0x77,0x44, +0x56,0x44,0x77,0x44,0x56,0x3c,0x57,0x3c,0x36,0x3c,0x36,0x3c,0x16,0x3c,0x36,0x3c, +0x15,0x3c,0x15,0x3c,0xd4,0x33,0x18,0x6d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0xef,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf, +0x5e,0xe7,0x3d,0xdf,0x5d,0xdf,0x3d,0xdf,0x3e,0xe7,0x3d,0xdf,0x3d,0xdf,0x3d,0xdf, +0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf, +0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf, +0x5e,0xe7,0x5d,0xdf,0x5e,0xe7,0x5e,0xdf,0x5e,0xe7,0x5d,0xdf,0x5e,0xe7,0x5e,0xdf, +0x7e,0xe7,0x5e,0xdf,0x7e,0xe7,0x5e,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7, +0x7f,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, +0xff,0xff,0xff,0xff,0xff,0xff +}; + + +#endif /* __STLOGO_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_display.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_display.h new file mode 100644 index 0000000..981eb62 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_display.h @@ -0,0 +1,111 @@ +// stm32f7_display.h + +// much of this was main.h - I'm not sure that all of it is needed !! + +#include "stdio.h" +//#include "stm32746g_discovery.h" +#include "stm32746g_discovery_lcd.h" + +#include +#include "string.h" + +#include "arm_math.h" +//#include "arm_const_structs.h" + +#include "armlogo.h" + +/* Macros --------------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/* Assert activated */ +#define ASSERT(__condition__) do { if(__condition__) \ + { assert_failed(__FILE__, __LINE__); \ + while(1); \ + } \ + }while(0) +#else +/* Assert not activated : macro has no effect */ +#define ASSERT(__condition__) do { if(__condition__) \ + { \ + } \ + }while(0) +#endif /* USE_FULL_ASSERT */ + +#define RGB565_BYTE_PER_PIXEL 2 +#define ARBG8888_BYTE_PER_PIXEL 4 + +/* Camera have a max resolution of VGA : 640x480 */ +#define CAMERA_RES_MAX_X 640 +#define CAMERA_RES_MAX_Y 480 + +/** + * @brief LCD FB_StartAddress + * LCD Frame buffer start address : starts at beginning of SDRAM + */ +#define LCD_FRAME_BUFFER SDRAM_DEVICE_ADDR + +/** + * @brief Camera frame buffer start address + * Assuming LCD frame buffer is of size 480x800 and format ARGB8888 (32 bits per pixel). + */ +#define CAMERA_FRAME_BUFFER ((uint32_t)(LCD_FRAME_BUFFER + (RK043FN48H_WIDTH * RK043FN48H_HEIGHT * ARBG8888_BYTE_PER_PIXEL))) + +/** + * @brief SDRAM Write read buffer start address after CAM Frame buffer + * Assuming Camera frame buffer is of size 640x480 and format RGB565 (16 bits per pixel). + */ +#define SDRAM_WRITE_READ_ADDR ((uint32_t)(CAMERA_FRAME_BUFFER + (CAMERA_RES_MAX_X * CAMERA_RES_MAX_Y * RGB565_BYTE_PER_PIXEL))) + +#define SDRAM_WRITE_READ_ADDR_OFFSET ((uint32_t)0x0800) +#define SRAM_WRITE_READ_ADDR_OFFSET SDRAM_WRITE_READ_ADDR_OFFSET + +#define HEADER_HEIGHT 20 +#define FIRST_DATA_PIXEL 100 +#define GRAPH_VER_END_PIXEL 260 +#define GRAPH_HEIGHT GRAPH_VER_END_PIXEL-HEADER_HEIGHT +#define GRAPH_WIDTH 256 + +#define LMS 1 +#define FFT 2 +#define WAVE 3 +#define LOGFFT 4 + +#define FFT_YCENTRE 260 +#define GRAPH_YCENTRE 140 +#define LOGFFT_YCENTRE 68 + +#define BACKGROUND_COLOUR LCD_COLOR_WHITE +#define GRAPH_COLOUR LCD_COLOR_BLUE +#define GRID_COLOUR LCD_COLOR_BLACK +#define TEXT_COLOUR LCD_COLOR_BLACK +#define IMAGINARY_COLOUR LCD_COLOR_RED + +#define GRAPH 1 +#define NOGRAPH 0 + +#define LIVE 1 +#define STATIC 0 + +#define COMPLEX_STRUCT 1 +#define ARRAY 0 + +#define AUTO_SCALING 1 +#define NO_AUTO_SCALING 0 +/* Exported functions ------------------------------------------------------- */ + +void init_LCD(int16_t sample_frequency, char *name, int16_t io_method, int graph); +void stm32f7_LCD_init(int16_t sample_frequency, char *name, int graph); +void clearScreen(void); +void plotWave(float32_t * data_buffer, int size, int live, int complex); +void plotWaveNoAutoScale(float32_t * data_buffer, int num_samples); +void plotSamples(int16_t * data_buffer, int num_samples, int num_plots); +void plotSamplesIntr(int16_t data_sample, int num_plots); +void plotFFT(float32_t * data_buffer, int size, int auto_scaling); +void plotLogFFT(float32_t * data_buffer, int size, int live); +void plotLMS(float32_t * data_buffer, int size, int live); +int checkButtonFlag(void); +void changeButtonFlag(int value); +void proceed_statement(void); + +uint8_t CheckForUserInput(void); + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_wm8994_init.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_wm8994_init.h new file mode 100644 index 0000000..03e8451 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7_wm8994_init.h @@ -0,0 +1,206 @@ +// stm32f7_wm8994_init.h + +// much of this was main.h - I'm not sure that all of it is needed !! + +#include "stdio.h" +#include "stm32746g_discovery.h" +#include "stm32746g_discovery_lcd.h" +#include "stm32746g_discovery_sdram.h" +#include "stm32746g_discovery_audio.h" + + +#include +#include "string.h" + +//#define ARM_MATH_CM7 // no need for this if defined in target options C/C++ +#include "arm_math.h" +#include "arm_const_structs.h" + + +#define IO_METHOD_INTR 0 +#define IO_METHOD_DMA 1 + +// the following are digital PGA gains and attenuations +// implemented within the AIF + +// write these to registers 0x1C and 0x1D +#define WM8994_HP_OUT_ANALOG_GAIN_0DB 0x39 +#define WM8994_HP_OUT_ANALOG_GAIN_3DB 0x3C +#define WM8994_HP_OUT_ANALOG_GAIN_6DB 0x3F +#define WM8994_HP_OUT_ANALOG_ATTEN_3DB 0x36 +#define WM8994_HP_OUT_ANALOG_ATTEN_6DB 0x33 +#define WM8994_HP_OUT_ANALOG_ATTEN_9DB 0x30 + +// write these to registers 0x402 and 0x403 +#define WM8994_HP_OUT_GAIN_MUTE 0x00 +#define WM8994_HP_OUT_GAIN_0DB 0xC0 +#define WM8994_HP_OUT_GAIN_3DB 0xC8 +#define WM8994_HP_OUT_GAIN_6DB 0xD0 +#define WM8994_HP_OUT_GAIN_9DB 0xD8 +#define WM8994_HP_OUT_ATTEN_3DB 0xB8 +#define WM8994_HP_OUT_ATTEN_6DB 0xB0 +#define WM8994_HP_OUT_ATTEN_9DB 0xA8 + +// write these to registers 0x404 and 0x405 +#define WM8994_DMIC_GAIN_MUTE 0x00 +#define WM8994_DMIC_GAIN_0DB 0xC0 +#define WM8994_DMIC_GAIN_3DB 0xC8 +#define WM8994_DMIC_GAIN_6DB 0xD0 +#define WM8994_DMIC_GAIN_9DB 0xD8 +#define WM8994_DMIC_GAIN_17DB 0xEF +#define WM8994_DMIC_ATTEN_3DB 0xB8 +#define WM8994_DMIC_ATTEN_6DB 0xB0 +#define WM8994_DMIC_ATTEN_9DB 0xA8 + +// write these to registers 0x400 and 0x401 +#define WM8994_LINE_IN_GAIN_MUTE 0x00 +#define WM8994_LINE_IN_GAIN_0DB 0xC0 +#define WM8994_LINE_IN_GAIN_3DB 0xC8 +#define WM8994_LINE_IN_GAIN_6DB 0xD0 +#define WM8994_LINE_IN_GAIN_9DB 0xD8 +#define WM8994_LINE_IN_ATTEN_3DB 0xB8 +#define WM8994_LINE_IN_ATTEN_6DB 0xB0 +#define WM8994_LINE_IN_ATTEN_9DB 0xA8 + +// the following are analogue PGA gains and attenuations +// currently, function wm8994_SetVolume() sets these to +// 0dB + +// write these to registers 0x18 and 0x1A +#define WM8994_LINE_IN_ANALOG_GAIN_0DB 0x0B +#define WM8994_LINE_IN_ANALOG_GAIN_3DB 0x0D +#define WM8994_LINE_IN_ANALOG_GAIN_6DB 0x0F +#define WM8994_LINE_IN_ANALOG_GAIN_9DB 0x11 +#define WM8994_LINE_IN_ANALOG_ATTEN_3DB 0x09 +#define WM8994_LINE_IN_ANALOG_ATTEN_6DB 0x07 +#define WM8994_LINE_IN_ANALOG_ATTEN_9DB 0x05 + +// write these to registers 0x19 and 0x1B +#define WM8994_DMIC_ANALOG_GAIN_0DB 0x0B +#define WM8994_DMIC_ANALOG_GAIN_3DB 0x0D +#define WM8994_DMIC_ANALOG_GAIN_6DB 0x0F +#define WM8994_DMIC_ANALOG_GAIN_9DB 0x11 +#define WM8994_DMIC_ANALOG_ATTEN_3DB 0x09 +#define WM8994_DMIC_ANALOG_ATTEN_6DB 0x07 +#define WM8994_DMIC_ANALOG_ATTEN_9DB 0x05 + + +// this is the size of each ping pong buffer - PING_IN, PING_OUT, PONG_IN and PONG_OUT in sample instants +// there are two samples (left and right) per sample instant +#define PING_PONG_BUFFER_SIZE ((uint32_t)256) + +// buffers are placed in SDRAM - AUDIO_REC_START_ADDR is defined in stm32f7_wm8994_init.h +// this is the start address of the PING_IN buffer +#define PING_IN AUDIO_REC_START_ADDR + +// length of each ping pong buffer in bytes is number of sample instants (PING_PONG_BUFFER_SIZE) +// multiplied by bytes per 16-bit sample (2) multiplied by samples per sample instant (L+R => 2) +// start addresses of PING_OUT, PONG_IN and PONG_OUT buffers are offset from start of PING_IN +// in the STM32F4 version these were extern arrays - may need to move these #defines to stm32f7_wm8994_init.h +// since they may be used in functions that are defined in stm32f7_wm8994_init.c - or not? +// on the other hand, perhaps all of these 'global' scope variables and #defines might be moved to +// stm32f7_wm8994_init.h + +#define PING_OUT (AUDIO_REC_START_ADDR + (PING_PONG_BUFFER_SIZE * 4)) +#define PONG_IN (AUDIO_REC_START_ADDR + (PING_PONG_BUFFER_SIZE * 8)) +#define PONG_OUT (AUDIO_REC_START_ADDR + (PING_PONG_BUFFER_SIZE * 12)) + +// this code provided by ST - do we need it? should we place it in another, copyright-headed file? +/* Macros --------------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/* Assert activated */ +#define ASSERT(__condition__) do { if(__condition__) \ + { assert_failed(__FILE__, __LINE__); \ + while(1); \ + } \ + }while(0) +#else +/* Assert not activated : macro has no effect */ +#define ASSERT(__condition__) do { if(__condition__) \ + { \ + } \ + }while(0) +#endif /* USE_FULL_ASSERT */ + +#define RGB565_BYTE_PER_PIXEL 2 +#define ARBG8888_BYTE_PER_PIXEL 4 + +/* Camera have a max resolution of VGA : 640x480 */ +#define CAMERA_RES_MAX_X 640 +#define CAMERA_RES_MAX_Y 480 + +/** + * @brief LCD FB_StartAddress + * LCD Frame buffer start address : starts at beginning of SDRAM + */ +#define LCD_FRAME_BUFFER SDRAM_DEVICE_ADDR + +/** + * @brief Camera frame buffer start address + * Assuming LCD frame buffer is of size 480x800 and format ARGB8888 (32 bits per pixel). + */ +#define CAMERA_FRAME_BUFFER ((uint32_t)(LCD_FRAME_BUFFER + (RK043FN48H_WIDTH * RK043FN48H_HEIGHT * ARBG8888_BYTE_PER_PIXEL))) + +/** + * @brief SDRAM Write read buffer start address after CAM Frame buffer + * Assuming Camera frame buffer is of size 640x480 and format RGB565 (16 bits per pixel). + */ +#define SDRAM_WRITE_READ_ADDR ((uint32_t)(CAMERA_FRAME_BUFFER + (CAMERA_RES_MAX_X * CAMERA_RES_MAX_Y * RGB565_BYTE_PER_PIXEL))) + +#define SDRAM_WRITE_READ_ADDR_OFFSET ((uint32_t)0x0800) +#define SRAM_WRITE_READ_ADDR_OFFSET SDRAM_WRITE_READ_ADDR_OFFSET + +#define AUDIO_REC_START_ADDR SDRAM_WRITE_READ_ADDR + +// added 16 May DSR +#define PING 0 +#define PONG 1 + + +/* Exported types ------------------------------------------------------------*/ + +typedef enum { + AUDIO_ERROR_NONE = 0, + AUDIO_ERROR_NOTREADY, + AUDIO_ERROR_IO, + AUDIO_ERROR_EOF, +}AUDIO_ErrorTypeDef; + +/* Exported variables ---------------------------------------------------*/ +extern uint8_t NbLoop; +extern uint8_t MfxExtiReceived; +#ifndef USE_FULL_ASSERT +extern uint32_t ErrorCounter; +#endif +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ + +#define COUNT_OF_EXAMPLE(x) (sizeof(x)/sizeof(BSP_DemoTypedef)) +/* Exported functions ------------------------------------------------------- */ +void AudioLoopback_demo (void); +uint8_t CheckForUserInput(void); +void BSP_LCD_DMA2D_IRQHandler(void); +#ifdef USE_FULL_ASSERT +void assert_failed(uint8_t* file, uint32_t line); +#endif + + + +int16_t prand(void); +short prbs(int16_t noise_level); +void BSP_AUDIO_IN_TransferComplete_CallBack(void); +void BSP_AUDIO_IN_TransferCompleteM1_CallBack(void); +void BSP_AUDIO_IN_Error_CallBack(void); +void BSP_AUDIO_OUT_TransferComplete_CallBack(void); +void BSP_AUDIO_OUT_TransferCompleteM1_CallBack(void); +void BSP_AUDIO_OUT_Error_CallBack(void); +static void SystemClock_Config(void); +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); +static void MPU_Config(void); +static void CPU_CACHE_Enable(void); +void assert_failed(uint8_t* file, uint32_t line); +void stm32f7_wm8994_init(uint32_t fs, int16_t io_method, int16_t select_input, int16_t select_output, int16_t headphone_gain, int16_t line_in_gain, int16_t dmic_gain, char *name, int graph); + +void init_LCD(int16_t sample_frequency, char *name, int16_t io_method, int graph); + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_hal_conf.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_hal_conf.h new file mode 100644 index 0000000..6d70b69 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_hal_conf.h @@ -0,0 +1,425 @@ +/** + ****************************************************************************** + * @file BSP/inc/stm32f7xx_hal_conf.h + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_CONF_H +#define __STM32F7xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED +/* #define HAL_ADC_MODULE_ENABLED */ +/* #define HAL_CAN_MODULE_ENABLED */ +/* #define HAL_CRC_MODULE_ENABLED */ +/* #define HAL_CRYP_MODULE_ENABLED */ +/* #define HAL_DAC_MODULE_ENABLED */ +#define HAL_DCMI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_DMA2D_MODULE_ENABLED +/* #define HAL_ETH_MODULE_ENABLED */ +#define HAL_FLASH_MODULE_ENABLED +/* #define HAL_NAND_MODULE_ENABLED */ +#define HAL_NOR_MODULE_ENABLED +/* #define HAL_PCCARD_MODULE_ENABLED */ +#define HAL_SRAM_MODULE_ENABLED +#define HAL_SDRAM_MODULE_ENABLED +/* #define HAL_HASH_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_I2S_MODULE_ENABLED +/* #define HAL_IWDG_MODULE_ENABLED */ +#define HAL_LTDC_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_QSPI_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +/* #define HAL_RNG_MODULE_ENABLED */ +/* #define HAL_RTC_MODULE_ENABLED */ +#define HAL_SAI_MODULE_ENABLED +#define HAL_SD_MODULE_ENABLED +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_SPI_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +#define HAL_UART_MODULE_ENABLED +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +#define HAL_CORTEX_MODULE_ENABLED +/* #define HAL_PCD_MODULE_ENABLED */ +/* #define HAL_HCD_MODULE_ENABLED */ + + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) + #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0x0FU) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define ART_ACCLERATOR_ENABLE 1U /* To enable instruction cache and prefetch */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1 */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)5U) /* 5 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)5U) /* 5 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ +/* LAN8742A PHY Address*/ +#define LAN8742A_PHY_ADDRESS 0x00U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x00000FFFU) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU) + +#define PHY_READ_TO ((uint32_t)0x0000FFFFU) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x00U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x01U) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ + +#define PHY_SR ((uint16_t)0x1FU) /*!< PHY special control/ status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0004U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0010U) /*!< PHY Duplex mask */ + + +#define PHY_ISFR ((uint16_t)0x1DU) /*!< PHY Interrupt Source Flag register Offset */ +#define PHY_ISFR_INT4 ((uint16_t)0x0010U) /*!< PHY Link down inturrupt */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 1U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f7xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f7xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f7xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f7xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f7xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f7xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f7xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f7xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32f7xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32f7xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f7xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32f7xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f7xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f7xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f7xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f7xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f7xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED + #include "stm32f7xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32f7xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f7xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f7xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f7xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32f7xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32f7xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f7xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32f7xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32f7xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f7xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32f7xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f7xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32f7xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f7xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f7xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f7xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f7xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f7xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f7xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f7xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f7xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f7xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0) +#endif /* USE_FULL_ASSERT */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_CONF_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_it.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_it.h new file mode 100644 index 0000000..fcc6a48 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Inc/stm32f7xx_it.h @@ -0,0 +1,78 @@ +/** + ****************************************************************************** + * @file BSP/Inc/stm32f7xx_it.h + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_IT_H +#define __STM32F7xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +void EXTI0_IRQHandler(void); +void EXTI2_IRQHandler(void); +void EXTI15_10_IRQHandler(void); +void AUDIO_OUT_SAIx_DMAx_IRQHandler(void); +void DMA2_Stream1_IRQHandler(void); +void DCMI_IRQHandler(void); +void AUDIO_IN_SAIx_DMAx_IRQHandler(void); +void BSP_SDRAM_DMA_IRQHandler(void); +void DMA2D_IRQHandler(void); +void BSP_LCD_DMA2D_IRQHandler(void); +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvoptx b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvoptx new file mode 100644 index 0000000..348143c --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvoptx @@ -0,0 +1,832 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + STM32746G_DISCOVERY + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20010000 -FC1000 -FN2 -FF0STM32F7x_1024 -FS08000000 -FL0100000 -FF1STM32F7xTCM_1024 -FS1200000 -FL1100000 -FP0($$Device:STM32F746NGHx$CMSIS\Flash\STM32F7x_1024.FLM) -FP1($$Device:STM32F746NGHx$CMSIS\Flash\STM32F7xTCM_1024.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Example/MDK-ARM + 1 + 0 + 0 + 0 + + 1 + 1 + 2 + 0 + 0 + 0 + startup_stm32f746xx.s + startup_stm32f746xx.s + 0 + 0 + + + + + Doc + 1 + 0 + 0 + 0 + + 2 + 2 + 5 + 0 + 0 + 0 + ../readme.txt + readme.txt + 0 + 0 + + + + + Drivers/CMSIS + 1 + 0 + 0 + 0 + + 3 + 3 + 1 + 0 + 0 + 0 + ../Src/system_stm32f7xx.c + system_stm32f7xx.c + 0 + 0 + + + 3 + 4 + 4 + 0 + 0 + 0 + ..\..\..\..\..\Drivers\CMSIS\Lib\ARM\arm_cortexM7lfsp_math.lib + arm_cortexM7lfsp_math.lib + 0 + 0 + + + + + Drivers/BSP/Components + 1 + 0 + 0 + 0 + + 4 + 5 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/Components/ov9655/ov9655.c + ov9655.c + 0 + 0 + + + 4 + 6 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/Components/ft5336/ft5336.c + ft5336.c + 0 + 0 + + + 4 + 7 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/Components/wm8994/wm8994.c + wm8994.c + 0 + 0 + + + + + Example/User + 1 + 0 + 0 + 0 + + 5 + 8 + 1 + 0 + 0 + 0 + ..\Src\stm32f7xx_it.c + stm32f7xx_it.c + 0 + 0 + + + 5 + 9 + 1 + 0 + 0 + 0 + ..\Src\stm32f7_display.c + stm32f7_display.c + 0 + 0 + + + 5 + 10 + 1 + 0 + 0 + 0 + ..\Src\stm32f7_wm8994_init.c + stm32f7_wm8994_init.c + 0 + 0 + + + 5 + 11 + 1 + 0 + 0 + 0 + ..\Src\stm32f7_sine_lut_intr.c + stm32f7_sine_lut_intr.c + 0 + 0 + + + + + Drivers/BSP/STM32746G_DISCOVERY + 1 + 0 + 0 + 0 + + 6 + 12 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery.c + stm32746g_discovery.c + 0 + 0 + + + 6 + 13 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_qspi.c + stm32746g_discovery_qspi.c + 0 + 0 + + + 6 + 14 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.c + stm32746g_discovery_lcd.c + 0 + 0 + + + 6 + 15 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_ts.c + stm32746g_discovery_ts.c + 0 + 0 + + + 6 + 16 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_eeprom.c + stm32746g_discovery_eeprom.c + 0 + 0 + + + 6 + 17 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_audio.c + stm32746g_discovery_audio.c + 0 + 0 + + + 6 + 18 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_camera.c + stm32746g_discovery_camera.c + 0 + 0 + + + 6 + 19 + 1 + 0 + 0 + 0 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_sdram.c + stm32746g_discovery_sdram.c + 0 + 0 + + + 6 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\..\Drivers\BSP\STM32746G-Discovery\stm32746g_discovery_sd.c + stm32746g_discovery_sd.c + 0 + 0 + + + + + Drivers/STM32F7xx_HAL_Driver + 1 + 0 + 0 + 0 + + 7 + 21 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c + stm32f7xx_ll_sdmmc.c + 0 + 0 + + + 7 + 22 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c + stm32f7xx_hal_tim_ex.c + 0 + 0 + + + 7 + 23 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c + stm32f7xx_hal_qspi.c + 0 + 0 + + + 7 + 24 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c + stm32f7xx_hal_rcc_ex.c + 0 + 0 + + + 7 + 25 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sdram.c + stm32f7xx_hal_sdram.c + 0 + 0 + + + 7 + 26 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + stm32f7xx_hal.c + 0 + 0 + + + 7 + 27 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c + stm32f7xx_hal_dma.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2s.c + stm32f7xx_hal_i2s.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma2d.c + stm32f7xx_hal_dma2d.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai_ex.c + stm32f7xx_hal_sai_ex.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_fmc.c + stm32f7xx_ll_fmc.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_ltdc.c + stm32f7xx_hal_ltdc.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c + stm32f7xx_hal_flash.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai.c + stm32f7xx_hal_sai.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c + stm32f7xx_hal_uart.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c + stm32f7xx_hal_dcmi.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c + stm32f7xx_hal_tim.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c + stm32f7xx_hal_rcc.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c + stm32f7xx_hal_pwr_ex.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nor.c + stm32f7xx_hal_nor.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c + stm32f7xx_hal_dma_ex.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c + stm32f7xx_hal_pwr.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c + stm32f7xx_hal_gpio.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sram.c + stm32f7xx_hal_sram.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c + stm32f7xx_hal_flash_ex.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c + stm32f7xx_hal_cortex.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c + stm32f7xx_hal_i2c.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_sd.c + stm32f7xx_hal_sd.c + 0 + 0 + + + + + Utilities + 1 + 0 + 0 + 0 + + 8 + 49 + 1 + 0 + 0 + 0 + ../../../../../Utilities/Log/lcd_log.c + lcd_log.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvprojx b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvprojx new file mode 100644 index 0000000..0862a96 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/DSP_Education_Kit.uvprojx @@ -0,0 +1,687 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + STM32746G_DISCOVERY + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + STM32F746NGHx + STMicroelectronics + Keil.STM32F7xx_DFP.2.12.0 + https://www.keil.com/pack/ + IROM(0x08000000-0x080FFFFF) IRAM(0x20000000-0x2004FFFF) CPUTYPE("Cortex-M7") FPU3(SFPU) CLOCK(12000000) ELITTLE + + + + + + + + + + + + + + + $$Device:STM32F746NGHx$CMSIS\SVD\STM32F7x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + STM32746G_DISCOVERY\ + STM32746G_DISCOVERY + 1 + 0 + 0 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4107 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M7" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x50000 + + + 1 + 0x8000000 + 0x100000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x100000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x50000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + --C99 + USE_HAL_DRIVER,STM32F746xx,USE_STM32746G_DISCO,USE_IOEXPANDER,ARM_MATH_CM7 + + ../Inc;../../../../../Drivers/CMSIS/Include;../../../../../Drivers/CMSIS/Device/ST/STM32F7xx/Include;../../../../../Drivers/STM32F7xx_HAL_Driver/Inc;../../../../../Drivers/BSP/STM32746G-Discovery;../../../../../Drivers/BSP/Components/Common;../../../../../Utilities/Log;../../../../../Utilities/Fonts;../../../../../Utilities/CPU;Drivers/CMSIS + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + --diag_suppress=L6329 + + + + + + + + Example/MDK-ARM + + + startup_stm32f746xx.s + 2 + startup_stm32f746xx.s + + + + + Doc + + + readme.txt + 5 + ../readme.txt + + + + + Drivers/CMSIS + + + system_stm32f7xx.c + 1 + ../Src/system_stm32f7xx.c + + + arm_cortexM7lfsp_math.lib + 4 + ..\..\..\..\..\Drivers\CMSIS\Lib\ARM\arm_cortexM7lfsp_math.lib + + + + + Drivers/BSP/Components + + + ov9655.c + 1 + ../../../../../Drivers/BSP/Components/ov9655/ov9655.c + + + ft5336.c + 1 + ../../../../../Drivers/BSP/Components/ft5336/ft5336.c + + + wm8994.c + 1 + ../../../../../Drivers/BSP/Components/wm8994/wm8994.c + + + + + Example/User + + + stm32f7xx_it.c + 1 + ..\Src\stm32f7xx_it.c + + + stm32f7_display.c + 1 + ..\Src\stm32f7_display.c + + + stm32f7_wm8994_init.c + 1 + ..\Src\stm32f7_wm8994_init.c + + + stm32f7_sine_lut_intr.c + 1 + ..\Src\stm32f7_sine_lut_intr.c + + + + + Drivers/BSP/STM32746G_DISCOVERY + + + stm32746g_discovery.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery.c + + + stm32746g_discovery_qspi.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_qspi.c + + + stm32746g_discovery_lcd.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.c + + + stm32746g_discovery_ts.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_ts.c + + + stm32746g_discovery_eeprom.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_eeprom.c + + + stm32746g_discovery_audio.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_audio.c + + + stm32746g_discovery_camera.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_camera.c + + + stm32746g_discovery_sdram.c + 1 + ../../../../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_sdram.c + + + stm32746g_discovery_sd.c + 1 + ..\..\..\..\..\Drivers\BSP\STM32746G-Discovery\stm32746g_discovery_sd.c + + + + + Drivers/STM32F7xx_HAL_Driver + + + stm32f7xx_ll_sdmmc.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c + + + stm32f7xx_hal_tim_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c + + + stm32f7xx_hal_qspi.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c + + + stm32f7xx_hal_rcc_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c + + + stm32f7xx_hal_sdram.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sdram.c + + + stm32f7xx_hal.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + + + stm32f7xx_hal_dma.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c + + + stm32f7xx_hal_i2s.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2s.c + + + stm32f7xx_hal_dma2d.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma2d.c + + + stm32f7xx_hal_sai_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai_ex.c + + + stm32f7xx_ll_fmc.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_fmc.c + + + stm32f7xx_hal_ltdc.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_ltdc.c + + + stm32f7xx_hal_flash.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c + + + stm32f7xx_hal_sai.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai.c + + + stm32f7xx_hal_uart.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c + + + stm32f7xx_hal_dcmi.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c + + + stm32f7xx_hal_tim.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c + + + stm32f7xx_hal_rcc.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c + + + stm32f7xx_hal_pwr_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c + + + stm32f7xx_hal_nor.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nor.c + + + stm32f7xx_hal_dma_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c + + + stm32f7xx_hal_pwr.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c + + + stm32f7xx_hal_gpio.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c + + + stm32f7xx_hal_sram.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sram.c + + + stm32f7xx_hal_flash_ex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c + + + stm32f7xx_hal_cortex.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c + + + stm32f7xx_hal_i2c.c + 1 + ../../../../../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c + + + stm32f7xx_hal_sd.c + 1 + ..\..\..\..\..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_sd.c + + + + + Utilities + + + lcd_log.c + 1 + ../../../../../Utilities/Log/lcd_log.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + +
diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/RTE/_STM32746G_DISCOVERY/RTE_Components.h b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/RTE/_STM32746G_DISCOVERY/RTE_Components.h new file mode 100644 index 0000000..b475cc3 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/RTE/_STM32746G_DISCOVERY/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'DSP_Education_Kit' + * Target: 'STM32746G_DISCOVERY' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "stm32f7xx.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/STM32746G_DISCOVERY/STM32746G_DISCOVERY.sct b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/STM32746G_DISCOVERY/STM32746G_DISCOVERY.sct new file mode 100644 index 0000000..83747e9 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/STM32746G_DISCOVERY/STM32746G_DISCOVERY.sct @@ -0,0 +1,16 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00100000 { ; load region size_region + ER_IROM1 0x08000000 0x00100000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x20000000 0x00050000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/startup_stm32f746xx.s b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/startup_stm32f746xx.s new file mode 100644 index 0000000..b52c6a5 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/MDK-ARM/startup_stm32f746xx.s @@ -0,0 +1,485 @@ +;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** +;* File Name : startup_stm32f746xx.s +;* Author : MCD Application Team +;* Version : V1.1.0 +;* Date : 30-December-2016 +;* Description : STM32F746xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM7 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of STMicroelectronics nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x4000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x4000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDMMC1_IRQHandler ; SDMMC1 + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD 0 ; Reserved + DCD RNG_IRQHandler ; Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + DCD SAI2_IRQHandler ; SAI2 + DCD QUADSPI_IRQHandler ; QUADSPI + DCD LPTIM1_IRQHandler ; LPTIM1 + DCD CEC_IRQHandler ; HDMI_CEC + DCD I2C4_EV_IRQHandler ; I2C4 Event + DCD I2C4_ER_IRQHandler ; I2C4 Error + DCD SPDIF_RX_IRQHandler ; SPDIF_RX +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDMMC1_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + EXPORT SAI2_IRQHandler [WEAK] + EXPORT QUADSPI_IRQHandler [WEAK] + EXPORT LPTIM1_IRQHandler [WEAK] + EXPORT CEC_IRQHandler [WEAK] + EXPORT I2C4_EV_IRQHandler [WEAK] + EXPORT I2C4_ER_IRQHandler [WEAK] + EXPORT SPDIF_RX_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDMMC1_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler +SAI2_IRQHandler +QUADSPI_IRQHandler +LPTIM1_IRQHandler +CEC_IRQHandler +I2C4_EV_IRQHandler +I2C4_ER_IRQHandler +SPDIF_RX_IRQHandler + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.cproject b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.cproject new file mode 100644 index 0000000..73eec99 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.cproject @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.project b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.project new file mode 100644 index 0000000..e038446 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/.project @@ -0,0 +1,324 @@ + + + STM32746G_DISCOVERY + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + fr.ac6.mcu.ide.core.MCUProjectNature + + + + Doc/readme.txt + 1 + PARENT-2-PROJECT_LOC/readme.txt + + + Utilities/lcd_log.c + 1 + PARENT-6-PROJECT_LOC/Utilities/Log/lcd_log.c + + + Drivers/CMSIS/system_stm32f7xx.c + 1 + PARENT-2-PROJECT_LOC/Src/system_stm32f7xx.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_cortex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_dcmi.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_dma.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_dma2d.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma2d.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_dma_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_flash.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_flash_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_gpio.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_i2c.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_i2s.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2s.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_ltdc.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_ltdc.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_nor.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nor.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_pwr.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_pwr_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_qspi.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_rcc.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_rcc_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_sai.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_sai_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_sd.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_sdram.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sdram.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_sram.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sram.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_tim.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_tim_ex.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_uart.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_ll_fmc.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_fmc.c + + + Drivers/STM32F7xx_HAL_Driver/stm32f7xx_ll_sdmmc.c + 1 + PARENT-6-PROJECT_LOC/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c + + + Example/SW4STM32/startup_stm32f746xx.s + 1 + PARENT-1-PROJECT_LOC/startup_stm32f746xx.s + + + Example/SW4STM32/syscalls.c + 1 + PARENT-1-PROJECT_LOC/syscalls.c + + + Example/User/audio_loopback.c + 1 + PARENT-2-PROJECT_LOC/Src/audio_loopback.c + + + Example/User/audio_play.c + 1 + PARENT-2-PROJECT_LOC/Src/audio_play.c + + + Example/User/audio_rec.c + 1 + PARENT-2-PROJECT_LOC/Src/audio_rec.c + + + Example/User/camera.c + 1 + PARENT-2-PROJECT_LOC/Src/camera.c + + + Example/User/eeprom.c + 1 + PARENT-2-PROJECT_LOC/Src/eeprom.c + + + Example/User/lcd.c + 1 + PARENT-2-PROJECT_LOC/Src/lcd.c + + + Example/User/log.c + 1 + PARENT-2-PROJECT_LOC/Src/log.c + + + Example/User/main.c + 1 + PARENT-2-PROJECT_LOC/Src/main.c + + + Example/User/qspi.c + 1 + PARENT-2-PROJECT_LOC/Src/qspi.c + + + Example/User/sd.c + 1 + PARENT-2-PROJECT_LOC/Src/sd.c + + + Example/User/sdram.c + 1 + PARENT-2-PROJECT_LOC/Src/sdram.c + + + Example/User/sdram_dma.c + 1 + PARENT-2-PROJECT_LOC/Src/sdram_dma.c + + + Example/User/stm32f7xx_it.c + 1 + PARENT-2-PROJECT_LOC/Src/stm32f7xx_it.c + + + Example/User/touchscreen.c + 1 + PARENT-2-PROJECT_LOC/Src/touchscreen.c + + + Drivers/BSP/Components/ft5336.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ft5336/ft5336.c + + + Drivers/BSP/Components/ov9655.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ov9655/ov9655.c + + + Drivers/BSP/Components/wm8994.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/Components/wm8994/wm8994.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_audio.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_audio.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_camera.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_camera.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_eeprom.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_eeprom.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_lcd.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_qspi.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_qspi.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_sd.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_sd.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_sdram.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_sdram.c + + + Drivers/BSP/STM32746G_DISCOVERY/stm32746g_discovery_ts.c + 1 + PARENT-6-PROJECT_LOC/Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_ts.c + + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/STM32F746NGHx_FLASH.ld b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/STM32F746NGHx_FLASH.ld new file mode 100644 index 0000000..860566e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/STM32746G_DISCOVERY/STM32F746NGHx_FLASH.ld @@ -0,0 +1,169 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32F746NGHx Device with +** 1024KByte FLASH, 320KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20050000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 320K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/startup_stm32f746xx.s b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/startup_stm32f746xx.s new file mode 100644 index 0000000..4c4990a --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/startup_stm32f746xx.s @@ -0,0 +1,591 @@ +/** + ****************************************************************************** + * @file startup_stm32f746xx.s + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief STM32F746xx Devices vector table for GCC based toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M7 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m7 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss +/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr sp, =_estack /* set stack pointer */ + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r3, =_sidata + ldr r3, [r3, r1] + str r3, [r0, r1] + adds r1, r1, #4 + +LoopCopyDataInit: + ldr r0, =_sdata + ldr r3, =_edata + adds r2, r0, r1 + cmp r2, r3 + bcc CopyDataInit + ldr r2, =_sbss + b LoopFillZerobss +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + str r3, [r2], #4 + +LoopFillZerobss: + ldr r3, = _ebss + cmp r2, r3 + bcc FillZerobss + +/* Call the clock system initialization function.*/ + bl SystemInit +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * @param None + * @retval None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/****************************************************************************** +* +* The minimal vector table for a Cortex M7. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +*******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + + /* External Interrupts */ + .word WWDG_IRQHandler /* Window WatchDog */ + .word PVD_IRQHandler /* PVD through EXTI Line detection */ + .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ + .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ + .word FLASH_IRQHandler /* FLASH */ + .word RCC_IRQHandler /* RCC */ + .word EXTI0_IRQHandler /* EXTI Line0 */ + .word EXTI1_IRQHandler /* EXTI Line1 */ + .word EXTI2_IRQHandler /* EXTI Line2 */ + .word EXTI3_IRQHandler /* EXTI Line3 */ + .word EXTI4_IRQHandler /* EXTI Line4 */ + .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ + .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ + .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ + .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ + .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ + .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ + .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ + .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ + .word CAN1_TX_IRQHandler /* CAN1 TX */ + .word CAN1_RX0_IRQHandler /* CAN1 RX0 */ + .word CAN1_RX1_IRQHandler /* CAN1 RX1 */ + .word CAN1_SCE_IRQHandler /* CAN1 SCE */ + .word EXTI9_5_IRQHandler /* External Line[9:5]s */ + .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ + .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ + .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ + .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ + .word TIM2_IRQHandler /* TIM2 */ + .word TIM3_IRQHandler /* TIM3 */ + .word TIM4_IRQHandler /* TIM4 */ + .word I2C1_EV_IRQHandler /* I2C1 Event */ + .word I2C1_ER_IRQHandler /* I2C1 Error */ + .word I2C2_EV_IRQHandler /* I2C2 Event */ + .word I2C2_ER_IRQHandler /* I2C2 Error */ + .word SPI1_IRQHandler /* SPI1 */ + .word SPI2_IRQHandler /* SPI2 */ + .word USART1_IRQHandler /* USART1 */ + .word USART2_IRQHandler /* USART2 */ + .word USART3_IRQHandler /* USART3 */ + .word EXTI15_10_IRQHandler /* External Line[15:10]s */ + .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ + .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ + .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ + .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ + .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ + .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ + .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ + .word FMC_IRQHandler /* FMC */ + .word SDMMC1_IRQHandler /* SDMMC1 */ + .word TIM5_IRQHandler /* TIM5 */ + .word SPI3_IRQHandler /* SPI3 */ + .word UART4_IRQHandler /* UART4 */ + .word UART5_IRQHandler /* UART5 */ + .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ + .word TIM7_IRQHandler /* TIM7 */ + .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ + .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ + .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ + .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ + .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ + .word ETH_IRQHandler /* Ethernet */ + .word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ + .word CAN2_TX_IRQHandler /* CAN2 TX */ + .word CAN2_RX0_IRQHandler /* CAN2 RX0 */ + .word CAN2_RX1_IRQHandler /* CAN2 RX1 */ + .word CAN2_SCE_IRQHandler /* CAN2 SCE */ + .word OTG_FS_IRQHandler /* USB OTG FS */ + .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ + .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ + .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ + .word USART6_IRQHandler /* USART6 */ + .word I2C3_EV_IRQHandler /* I2C3 event */ + .word I2C3_ER_IRQHandler /* I2C3 error */ + .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ + .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ + .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ + .word OTG_HS_IRQHandler /* USB OTG HS */ + .word DCMI_IRQHandler /* DCMI */ + .word 0 /* Reserved */ + .word RNG_IRQHandler /* Rng */ + .word FPU_IRQHandler /* FPU */ + .word UART7_IRQHandler /* UART7 */ + .word UART8_IRQHandler /* UART8 */ + .word SPI4_IRQHandler /* SPI4 */ + .word SPI5_IRQHandler /* SPI5 */ + .word SPI6_IRQHandler /* SPI6 */ + .word SAI1_IRQHandler /* SAI1 */ + .word LTDC_IRQHandler /* LTDC */ + .word LTDC_ER_IRQHandler /* LTDC error */ + .word DMA2D_IRQHandler /* DMA2D */ + .word SAI2_IRQHandler /* SAI2 */ + .word QUADSPI_IRQHandler /* QUADSPI */ + .word LPTIM1_IRQHandler /* LPTIM1 */ + .word CEC_IRQHandler /* HDMI_CEC */ + .word I2C4_EV_IRQHandler /* I2C4 Event */ + .word I2C4_ER_IRQHandler /* I2C4 Error */ + .word SPDIF_RX_IRQHandler /* SPDIF_RX */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMP_STAMP_IRQHandler + .thumb_set TAMP_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Stream0_IRQHandler + .thumb_set DMA1_Stream0_IRQHandler,Default_Handler + + .weak DMA1_Stream1_IRQHandler + .thumb_set DMA1_Stream1_IRQHandler,Default_Handler + + .weak DMA1_Stream2_IRQHandler + .thumb_set DMA1_Stream2_IRQHandler,Default_Handler + + .weak DMA1_Stream3_IRQHandler + .thumb_set DMA1_Stream3_IRQHandler,Default_Handler + + .weak DMA1_Stream4_IRQHandler + .thumb_set DMA1_Stream4_IRQHandler,Default_Handler + + .weak DMA1_Stream5_IRQHandler + .thumb_set DMA1_Stream5_IRQHandler,Default_Handler + + .weak DMA1_Stream6_IRQHandler + .thumb_set DMA1_Stream6_IRQHandler,Default_Handler + + .weak ADC_IRQHandler + .thumb_set ADC_IRQHandler,Default_Handler + + .weak CAN1_TX_IRQHandler + .thumb_set CAN1_TX_IRQHandler,Default_Handler + + .weak CAN1_RX0_IRQHandler + .thumb_set CAN1_RX0_IRQHandler,Default_Handler + + .weak CAN1_RX1_IRQHandler + .thumb_set CAN1_RX1_IRQHandler,Default_Handler + + .weak CAN1_SCE_IRQHandler + .thumb_set CAN1_SCE_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak TIM1_BRK_TIM9_IRQHandler + .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler + + .weak TIM1_UP_TIM10_IRQHandler + .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler + + .weak TIM1_TRG_COM_TIM11_IRQHandler + .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler + + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak OTG_FS_WKUP_IRQHandler + .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler + + .weak TIM8_BRK_TIM12_IRQHandler + .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler + + .weak TIM8_UP_TIM13_IRQHandler + .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler + + .weak TIM8_TRG_COM_TIM14_IRQHandler + .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler + + .weak TIM8_CC_IRQHandler + .thumb_set TIM8_CC_IRQHandler,Default_Handler + + .weak DMA1_Stream7_IRQHandler + .thumb_set DMA1_Stream7_IRQHandler,Default_Handler + + .weak FMC_IRQHandler + .thumb_set FMC_IRQHandler,Default_Handler + + .weak SDMMC1_IRQHandler + .thumb_set SDMMC1_IRQHandler,Default_Handler + + .weak TIM5_IRQHandler + .thumb_set TIM5_IRQHandler,Default_Handler + + .weak SPI3_IRQHandler + .thumb_set SPI3_IRQHandler,Default_Handler + + .weak UART4_IRQHandler + .thumb_set UART4_IRQHandler,Default_Handler + + .weak UART5_IRQHandler + .thumb_set UART5_IRQHandler,Default_Handler + + .weak TIM6_DAC_IRQHandler + .thumb_set TIM6_DAC_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak DMA2_Stream0_IRQHandler + .thumb_set DMA2_Stream0_IRQHandler,Default_Handler + + .weak DMA2_Stream1_IRQHandler + .thumb_set DMA2_Stream1_IRQHandler,Default_Handler + + .weak DMA2_Stream2_IRQHandler + .thumb_set DMA2_Stream2_IRQHandler,Default_Handler + + .weak DMA2_Stream3_IRQHandler + .thumb_set DMA2_Stream3_IRQHandler,Default_Handler + + .weak DMA2_Stream4_IRQHandler + .thumb_set DMA2_Stream4_IRQHandler,Default_Handler + + .weak DMA2_Stream4_IRQHandler + .thumb_set DMA2_Stream4_IRQHandler,Default_Handler + + .weak ETH_IRQHandler + .thumb_set ETH_IRQHandler,Default_Handler + + .weak ETH_WKUP_IRQHandler + .thumb_set ETH_WKUP_IRQHandler,Default_Handler + + .weak CAN2_TX_IRQHandler + .thumb_set CAN2_TX_IRQHandler,Default_Handler + + .weak CAN2_RX0_IRQHandler + .thumb_set CAN2_RX0_IRQHandler,Default_Handler + + .weak CAN2_RX1_IRQHandler + .thumb_set CAN2_RX1_IRQHandler,Default_Handler + + .weak CAN2_SCE_IRQHandler + .thumb_set CAN2_SCE_IRQHandler,Default_Handler + + .weak OTG_FS_IRQHandler + .thumb_set OTG_FS_IRQHandler,Default_Handler + + .weak DMA2_Stream5_IRQHandler + .thumb_set DMA2_Stream5_IRQHandler,Default_Handler + + .weak DMA2_Stream6_IRQHandler + .thumb_set DMA2_Stream6_IRQHandler,Default_Handler + + .weak DMA2_Stream7_IRQHandler + .thumb_set DMA2_Stream7_IRQHandler,Default_Handler + + .weak USART6_IRQHandler + .thumb_set USART6_IRQHandler,Default_Handler + + .weak I2C3_EV_IRQHandler + .thumb_set I2C3_EV_IRQHandler,Default_Handler + + .weak I2C3_ER_IRQHandler + .thumb_set I2C3_ER_IRQHandler,Default_Handler + + .weak OTG_HS_EP1_OUT_IRQHandler + .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler + + .weak OTG_HS_EP1_IN_IRQHandler + .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler + + .weak OTG_HS_WKUP_IRQHandler + .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler + + .weak OTG_HS_IRQHandler + .thumb_set OTG_HS_IRQHandler,Default_Handler + + .weak DCMI_IRQHandler + .thumb_set DCMI_IRQHandler,Default_Handler + + .weak RNG_IRQHandler + .thumb_set RNG_IRQHandler,Default_Handler + + .weak FPU_IRQHandler + .thumb_set FPU_IRQHandler,Default_Handler + + .weak UART7_IRQHandler + .thumb_set UART7_IRQHandler,Default_Handler + + .weak UART8_IRQHandler + .thumb_set UART8_IRQHandler,Default_Handler + + .weak SPI4_IRQHandler + .thumb_set SPI4_IRQHandler,Default_Handler + + .weak SPI5_IRQHandler + .thumb_set SPI5_IRQHandler,Default_Handler + + .weak SPI6_IRQHandler + .thumb_set SPI6_IRQHandler,Default_Handler + + .weak SAI1_IRQHandler + .thumb_set SAI1_IRQHandler,Default_Handler + + .weak LTDC_IRQHandler + .thumb_set LTDC_IRQHandler,Default_Handler + + .weak LTDC_ER_IRQHandler + .thumb_set LTDC_ER_IRQHandler,Default_Handler + + .weak DMA2D_IRQHandler + .thumb_set DMA2D_IRQHandler,Default_Handler + + .weak SAI2_IRQHandler + .thumb_set SAI2_IRQHandler,Default_Handler + + .weak QUADSPI_IRQHandler + .thumb_set QUADSPI_IRQHandler,Default_Handler + + .weak LPTIM1_IRQHandler + .thumb_set LPTIM1_IRQHandler,Default_Handler + + .weak CEC_IRQHandler + .thumb_set CEC_IRQHandler,Default_Handler + + .weak I2C4_EV_IRQHandler + .thumb_set I2C4_EV_IRQHandler,Default_Handler + + .weak I2C4_ER_IRQHandler + .thumb_set I2C4_ER_IRQHandler,Default_Handler + + .weak SPDIF_RX_IRQHandler + .thumb_set SPDIF_RX_IRQHandler,Default_Handler + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/syscalls.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/syscalls.c new file mode 100644 index 0000000..9fecc64 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/SW4STM32/syscalls.c @@ -0,0 +1,194 @@ +/** +***************************************************************************** +** +** File : syscalls.c +** +** Abstract : System Workbench Minimal System calls file +** +** For more information about which c-functions +** need which of these lowlevel functions +** please consult the Newlib libc-manual +** +** Environment : System Workbench for MCU +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright System Workbench for MCU. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. System Workbench for MCU permit registered System Workbench(R) users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +//#undef errno +extern int errno; +#define FreeRTOS +#define MAX_STACK_SIZE 0x2000 + +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + +#ifndef FreeRTOS + register char * stack_ptr asm("sp"); +#endif + + +register char * stack_ptr asm("sp"); + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +int _read (int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + +return len; +} + +int _write(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +caddr_t _sbrk(int incr) +{ + extern char end asm("end"); + static char *heap_end; + char *prev_heap_end; + + if (heap_end == 0) + heap_end = &end; + + prev_heap_end = heap_end; + if (heap_end + incr > stack_ptr) + { +// write(1, "Heap and stack collision\n", 25); +// abort(); + errno = ENOMEM; + return (caddr_t) -1; + } + + heap_end += incr; + + return (caddr_t) prev_heap_end; +} + +int _close(int file) +{ + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _open(char *path, int flags, ...) +{ + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + return -1; +} + +int _stat(char *file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + errno = ENOMEM; + return -1; +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_adaptive.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_adaptive.c new file mode 100644 index 0000000..e6ceac2 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_adaptive.c @@ -0,0 +1,51 @@ +// stm32f7_adaptive.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_adaptive.c" + +#define BETA 0.01f // learning rate +#define N 21 // number of filter coeffs +#define NUM_ITERS 64 // number of iterations + +float32_t desired[NUM_ITERS]; // storage for results +float32_t y_out[NUM_ITERS]; +float32_t error[NUM_ITERS]; +float32_t w[N+1] = {0.0}; // adaptive filter weights +float32_t x[N+1] = {0.0}; // adaptive filter delay line +int i, t; +float32_t d, y, e; + +int main() +{ + for (t = 0; t < NUM_ITERS; t++) + { + x[0] = sin(2*PI*t/8); // get new input sample + d = cos(2*PI*t/8); // get new desired output + y = 0; // compute filter output + for (i = 0; i <= N; i++) + y += (w[i]*x[i]); + e = d - y; // compute error + for (i = N; i >= 0; i--) + { + w[i] += (BETA*e*x[i]); // update filter weights + if (i != 0) + x[i] = x[i-1]; // shift data in delay line + } + desired[t] = d; // store results + y_out[t] = y; + error[t] = e; + } + stm32f7_LCD_init(0, SOURCE_FILE_NAME, GRAPH); + + while(1) + { + plotWave(desired, NUM_ITERS, 0, 0); + proceed_statement(); + plotWave(y_out, NUM_ITERS, 0, 0); + proceed_statement(); + plotWave(error, NUM_ITERS, 0, 0); + proceed_statement(); + } +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_average_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_average_intr.c new file mode 100644 index 0000000..485e070 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_average_intr.c @@ -0,0 +1,56 @@ +// stm32f7_average_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_average_intr.c" +#define N 5 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float32_t h[N]; +// float32_t h[N] = {0.08333, 0.25, 0.3333333, 0.25, 0.08333}; +float32_t x[N]; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t i; + float32_t yn = 0.0; + + x[0] = (float32_t)(rx_sample_L); + for (i=0 ; i0 ; i--) x[i] = x[i-1]; + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + BSP_LED_Toggle(LED1); + + return; +} + +int main(void) +{ + int i; + + for (i=0 ; i0 ; i--) x[i] = x[i-1]; + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + BSP_LED_Toggle(LED1); + + return; +} + +int main(void) +{ + int i; + + for (i=0 ; ireal, N, 0, 1); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dftw.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dftw.c new file mode 100644 index 0000000..8c938da --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dftw.c @@ -0,0 +1,43 @@ +// stm32f7_dftw.c + +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_dftw.c " + +#define N 128 +#define TESTFREQ 1800.0 +#define SAMPLING_FREQ 8000.0 + +typedef struct +{ + float real; + float imag; +} COMPLEX; + +COMPLEX samples[N]; +COMPLEX twiddle[N]; + +void dftw(COMPLEX *x, COMPLEX *w) +{ +} + +int main() +{ + int n; + + stm32f7_LCD_init(SAMPLING_FREQ, SOURCE_FILE_NAME, GRAPH); + + for(n=0 ; nreal, N/2, 0, 1); + while(1){} +} + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_DAC12_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_DAC12_intr.c new file mode 100644 index 0000000..e4f754a --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_DAC12_intr.c @@ -0,0 +1,65 @@ +// stm32f7_dimpulse_DAC12_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_dimpulse_DAC12_intr.c" +#define IMPULSE_PERIOD 256 +#define IMPULSE_AMPLITUDE 10000 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int impulse_count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + if (impulse_count == 0) + { + tx_sample_L = IMPULSE_AMPLITUDE; + } + else + { + tx_sample_L = 0; + } + impulse_count = (impulse_count + 1) % IMPULSE_PERIOD; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((tx_sample_L+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_intr.c new file mode 100644 index 0000000..75c8d55 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_intr.c @@ -0,0 +1,53 @@ +// stm32f7_dimpulse_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_dimpulse_intr.c" +#define IMPULSE_PERIOD 256 +#define IMPULSE_AMPLITUDE 20000 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int impulse_count = 0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + if (impulse_count == 0) + { + tx_sample_L = IMPULSE_AMPLITUDE; + } + else + { + tx_sample_L = 0; + } + impulse_count = (impulse_count + 1) % IMPULSE_PERIOD; + tx_sample_R = tx_sample_L; + plotSamplesIntr(tx_sample_L, 256); + BSP_LED_Toggle(LED1); + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_FIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_FIR_intr.c new file mode 100644 index 0000000..836f173 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_FIR_intr.c @@ -0,0 +1,86 @@ +// stm32f7_dimpulse_recon48_FIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "recon484fird.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_dimpulse_recon48_FIR_intr.c" + +#define LOOPLENGTH 128 +#define OVERSAMPLING_RATIO 6 +#define DIMPULSE_AMPLITUDE 30000.0 + +float32_t x, y, state[N]; +arm_fir_instance_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t dimpulse_table[LOOPLENGTH] = {0}; +int16_t dimpulse_ptr = 0; + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + x = (float32_t)(dimpulse_table[dimpulse_ptr]); + dimpulse_ptr = (dimpulse_ptr+1) % LOOPLENGTH; +// GPIO pin transition coincides with non-zero sample value + if (dimpulse_ptr == 0) BSP_LED_Toggle(LED1); + } + else + { + x = 0.0; + } + arm_fir_f32(&S,&x,&y,1); + y_bit16 = (int16_t)(y); + + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = 0; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + dimpulse_table[0] = DIMPULSE_AMPLITUDE; + arm_fir_init_f32(&S, N, h, state, 1); + stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_IIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_IIR_intr.c new file mode 100644 index 0000000..cbf6cba --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_dimpulse_recon48_IIR_intr.c @@ -0,0 +1,99 @@ +// stm32f7_dimpulse_recon48_IIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "recon14julyiir.h" + +#define SOURCE_FILE_NAME "stm32f7_dimpulse_recon48_IIR_intr.c" + +#define LOOPLENGTH 128 +#define OVERSAMPLING_RATIO 6 +#define DIMPULSE_AMPLITUDE 30000.0 + +float32_t coeffs[5*NUM_SECTIONS] = {0}; +float32_t state[4*NUM_SECTIONS] = {0}; + +arm_biquad_casd_df1_inst_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t dimpulse_table[LOOPLENGTH] = {0}; +int16_t dimpulse_ptr = 0; + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + float32_t xn, yn; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + xn = (float32_t)(dimpulse_table[dimpulse_ptr]); + dimpulse_ptr = (dimpulse_ptr+1) % LOOPLENGTH; +// GPIO pin transition coincides with non-zero sample value + if (dimpulse_ptr == 0) BSP_LED_Toggle(LED1); + } + else + { + xn = 0.0; + } + arm_biquad_cascade_df1_f32(&S, &xn, &yn, 1); + y_bit16 = (int16_t)(yn); + + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = rx_sample_L; + tx_sample_R = tx_sample_L; + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + int i,k; + + dimpulse_table[0] = DIMPULSE_AMPLITUDE; + k = 0; + for (i=0; i 28) BSP_LCD_SetFont(&Font12); + else BSP_LCD_SetFont(&Font16); + BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)name, RIGHT_MODE); + + //Draw the grid area + BSP_LCD_SetTextColor(LCD_COLOR_BLACK); + BSP_LCD_DrawRect(FIRST_DATA_PIXEL, HEADER_HEIGHT, GRAPH_WIDTH, GRAPH_HEIGHT); + + //Drawing grid lines + for(i = 0; i < 5; i++) { + BSP_LCD_DrawVLine(FIRST_DATA_PIXEL+64*i, HEADER_HEIGHT, GRAPH_HEIGHT+5); + BSP_LCD_DrawHLine(FIRST_DATA_PIXEL, HEADER_HEIGHT+48*i, GRAPH_WIDTH); + } + + //Go back to the graph layer for the remaining graph drawing + BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); + BSP_LCD_Clear(BACKGROUND_COLOUR); + BSP_LCD_SetTransparency(1, 200); +} + +/** + * @brief Display the x and y axis values and labels + * @param ycentre: pixel of the y centre line of the graph + * @param ymax: maximum data pixel y location + * @param ymin: minimum data pixel y location + * @param max: maximum data actual value + * @param min: minimum data actual value + * @param size: size of the displaying buffer + * @param xpos: last data in the buffer pixel x location + * @param mode: graph type WAVE/ FFT/ LOG FFT/ LMS + * @retval none + */ + +void drawAxes (int ycentre, int ymax, int ymin, float max, float min, float dB_per_divs, int size, int xpos, int type) { + uint32_t axes_value [20]; + + int i = 0; + + BSP_LCD_SetFont(&Font12); + + /*Drawing y axis*/ + + //If the max/min value doesn't change or user didn't push the button, stop drawing the y-axis to prevent flickering on the axis + if(fixymax != ymax || fixymin != ymin || update_flag == 1){ + fixymax = ymax; + fixymin = ymin; + + //Clear the y-axis area + BSP_LCD_SetTextColor(BACKGROUND_COLOUR); + BSP_LCD_FillRect(0, HEADER_HEIGHT, FIRST_DATA_PIXEL, 272); + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_SetBackColor(BACKGROUND_COLOUR); + + if(dB_per_divs != 0) { + sprintf((char*)axes_value, "%.3f dB/div", dB_per_divs); + BSP_LCD_DisplayStringAt(0, 20, (uint8_t * ) &axes_value, LEFT_MODE); + + if(ycentre != FFT_YCENTRE) { + //Display 0 + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(0, ycentre, (uint8_t * ) &axes_value, LEFT_MODE); + } + + } else { + //Display 0 + + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(0, ycentre, (uint8_t * ) &axes_value, LEFT_MODE); + + if((ycentre - ymax) > 5) { + sprintf((char*)axes_value, "%.3f", max); + BSP_LCD_DisplayStringAt(0, ymax, (uint8_t * ) &axes_value, LEFT_MODE); + } + + if((ymin - ycentre) > 5) { + //BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); //for debugging + sprintf((char*)axes_value, "%.3f", min); + BSP_LCD_DisplayStringAt(0, ymin, (uint8_t * ) &axes_value, LEFT_MODE); + } + } + update_flag = 0; + } + + /*Drawing x axis*/ + + switch(type){ + + case LMS: + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(0, 0, (uint8_t * ) "sample value", LEFT_MODE); + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_SetBackColor(BACKGROUND_COLOUR); + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(20, GRAPH_VER_END_PIXEL - 15, (uint8_t * ) "Time(s)", RIGHT_MODE); + //BSP_LCD_DisplayStringAt(20, 50, (uint8_t * ) "LMS Graph", RIGHT_MODE); //Uncomment this if the graph name is needed on screen + + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(FIRST_DATA_PIXEL+3, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + + for(i = 1; i < 5; i++) { + sprintf((char*)axes_value, "%.3f", (float)64*i/frequency); + BSP_LCD_DisplayStringAt(FIRST_DATA_PIXEL+64*i+3, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + } + break; + + case FFT: + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(0, 0, (uint8_t * ) "Magnitude", LEFT_MODE); + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(20, GRAPH_VER_END_PIXEL - 15, (uint8_t * ) "Frequency(Hz)", RIGHT_MODE); + //BSP_LCD_DisplayStringAt(20, 50, (uint8_t * ) "FFT Graph", RIGHT_MODE); //Uncomment this if the graph name is needed on screen + + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(FIRST_DATA_PIXEL, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + + sprintf((char*)axes_value, "%d", frequency/2); + BSP_LCD_DisplayStringAt(xpos, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + + break; + + case WAVE: + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(0, 0, (uint8_t * ) "sample value", LEFT_MODE); + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(20, GRAPH_VER_END_PIXEL - 15, (uint8_t * ) "sample number", RIGHT_MODE); + //BSP_LCD_DisplayStringAt(20, 50, (uint8_t * ) "Input signal", RIGHT_MODE); //Uncomment this if the graph name is needed on screen + + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(FIRST_DATA_PIXEL, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + + sprintf((char*)axes_value, "%d", size); + BSP_LCD_DisplayStringAt(xpos, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + break; + + case LOGFFT: + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(0, 0, (uint8_t * ) "Magnitude(dB)", LEFT_MODE); + //BSP_LCD_DisplayStringAt(20, 50, (uint8_t * ) "FFT Graph", RIGHT_MODE); //Uncomment this if the graph name is needed on screen + + BSP_LCD_SetTextColor(TEXT_COLOUR); + BSP_LCD_DisplayStringAt(20, GRAPH_VER_END_PIXEL - 15, (uint8_t * ) "Frequency(Hz)", RIGHT_MODE); + + sprintf((char*)axes_value, "%c", '0'); + BSP_LCD_DisplayStringAt(FIRST_DATA_PIXEL, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + + sprintf((char*)axes_value, "%d", frequency/2); + BSP_LCD_DisplayStringAt(xpos, GRAPH_VER_END_PIXEL+2, (uint8_t * ) &axes_value, LEFT_MODE); + break; + } + +} + +/** + * @brief Initialise the LCD screen, initialise 2 layers + * layer 0 is for the logo and unchange elements + * layer 1 (LTDC_ACTIVE_LAYER) is for graph data + * Display the start screen which have logo and title + * Draw the grid + * @param sample_frequency: get the sample frequency from the main and save in the global + * variable frequency + * @param name: get the program name from the main and use in + * the drawGrid() + * @param io_method: IO_METHOD_DMA = slower refresh rate, + * IO_METHOD_INTR = faster refresh rate + * @param graph: GRAPH = display graph, NOGRAPH = display start screen only + * @retval none + */ + +void init_LCD(int16_t sample_frequency, char *name, int16_t io_method, int graph) { + + frequency = sample_frequency; + + // Set up the LCD + BSP_LCD_Init(); + + BSP_LCD_LayerDefaultInit(0, 0xC0400000); //Initialise the logo layer + BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FRAME_BUFFER); + + BSP_LCD_DisplayOn(); + + //BSP_LCD_SetLayerVisible(0, ENABLE); + BSP_LCD_SelectLayer(0); + BSP_LCD_Clear(0xFF0090BF); + + BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); + BSP_LCD_Clear(BACKGROUND_COLOUR); + + BSP_LCD_SetTransparency(0, 255); + BSP_LCD_SetTransparency(1, 150); + + BSP_LCD_SelectLayer(0); + /* Draw Bitmap Logo*/ + BSP_LCD_DrawBitmap(50, 70, (uint8_t *)armlogo); + + BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); + /* Set the LCD Text Color */ + BSP_LCD_SetTextColor(TEXT_COLOUR); + + /* Display LCD messages */ + BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"STM32F746G DSP Education Kit", CENTER_MODE); + if(strlen(name) > 28) BSP_LCD_SetFont(&Font16); + BSP_LCD_DisplayStringAt(0, 50, (uint8_t *)name, CENTER_MODE); + BSP_LCD_SetFont(&Font24); + if(io_method == 0) { + refresh_counter_factor = 100; + } + if(graph == 1){ + BSP_LCD_DisplayStringAt(0, 200, (uint8_t *)"Press User Button to start", CENTER_MODE); + while(CheckForUserInput() != 1){} + + drawGrid(name); + } +} + +/** + * @brief Clear the graph area only, draw vertical lines from the start of + * the graph to the end of the graph + * @param none + * @retval none + */ + +void clearScreen () { + unsigned i = 0; + + refresh_counter = 0; + + for(i = FIRST_DATA_PIXEL; i < GRAPH_WIDTH+FIRST_DATA_PIXEL; i++) { + BSP_LCD_SetTextColor(BACKGROUND_COLOUR); + BSP_LCD_DrawVLine(i, 0, GRAPH_VER_END_PIXEL); + } +} + +/** + * @brief For debug only, display the axes data on the screen + * @param ymax: maximum data pixel y location + * @param ymin: minimum data pixel y location + * @param max: maximum data actual value + * @param min: minimum data actual value + * @param yscalefactor: y scale factor + * @retval none + */ + +void debug_display(int ymax, int ymin, float max, float min, float biggestmag, float yscalefactor) { + uint8_t axes_debug_value [20]; + + BSP_LCD_SetFont(&Font12); + + sprintf((char*)axes_debug_value, "ymax: %d", ymax); + BSP_LCD_DisplayStringAt(10, 20, (uint8_t * ) &axes_debug_value, RIGHT_MODE); + sprintf((char*)axes_debug_value, "ymin: %d", ymin); + BSP_LCD_DisplayStringAt(10, 30, (uint8_t * ) &axes_debug_value, RIGHT_MODE); + sprintf((char*)axes_debug_value, "max: %g", max); + BSP_LCD_DisplayStringAt(10, 40, (uint8_t * ) &axes_debug_value, RIGHT_MODE); + sprintf((char*)axes_debug_value, "min: %g", min); + BSP_LCD_DisplayStringAt(10, 50, (uint8_t * ) &axes_debug_value, RIGHT_MODE); + sprintf((char*)axes_debug_value, "ycentre: %g", biggestmag); + BSP_LCD_DisplayStringAt(10, 60, (uint8_t * ) &axes_debug_value, RIGHT_MODE); + sprintf((char*)axes_debug_value, "yscalefactor: %g", yscalefactor); + BSP_LCD_DisplayStringAt(10, 70, (uint8_t * ) &axes_debug_value, RIGHT_MODE); +} + +/** + * @brief Draw bars according to the value inside data_buffer + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @param live: static data = 0, live data = 1 + * @param complex: complex data = 1, non-complex data = 0 + * @retval none + */ + +void plotWave(float32_t * data_buffer, int num_samples, int live, int complex) { + int16_t i; + int16_t xvalue; // x in pixels + int16_t ymax = HEADER_HEIGHT; + int16_t ymin = GRAPH_VER_END_PIXEL; // max and min y values in pixels + float32_t max, min = data_buffer[0]; // max and min y values passed to function + float32_t biggestmag, yscalefactor; + float x_spacing = 1; + int step = 1; + + if(complex) step = 2; + + x_spacing = GRAPH_WIDTH / (num_samples*step); + + // initialise some variables + max = data_buffer[0]; + min = data_buffer[0]; + xvalue = FIRST_DATA_PIXEL; + + //Whenever user push the button or live data is needed, bar charts will be drawn, + //Otherwise, the graph will only be drawn once + if(stop == 0 || CheckForUserInput() == 1 || live == 1){ + //If static data is needed, the graph will only be drawn once + stop = 1; + + // determine min and max values + for(i = 0; i < num_samples*step; i++) { + if(min >= data_buffer[i]) min = data_buffer[i]; + if(max <= data_buffer[i]) max = data_buffer[i]; + } + + //Determine the largest value and limit the graph size by using yscalefactor + if(max*max > min*min) biggestmag = max; else biggestmag = -min; + if(biggestmag == 0) biggestmag = 1; + + yscalefactor = 100/(biggestmag); // 100 is +/- pixels from centre of screen + ymin = GRAPH_YCENTRE - min*yscalefactor; + ymax = GRAPH_YCENTRE - max*yscalefactor; + + for(i = 0; i < num_samples*step; i++) { + //Clear the previous bar before drawing the new bar on the screen + BSP_LCD_SetTextColor(BACKGROUND_COLOUR); + BSP_LCD_DrawLine(xvalue, 0, xvalue, 272); + + //if the data is complex values, real values and imaginary values will + //display in different colour + if(complex) { + if(i % 2 == 0) + BSP_LCD_SetTextColor(GRAPH_COLOUR); + else + BSP_LCD_SetTextColor(IMAGINARY_COLOUR); + } else + BSP_LCD_SetTextColor(GRAPH_COLOUR); + + //Draw the bars + BSP_LCD_DrawLine(xvalue, GRAPH_YCENTRE, xvalue, GRAPH_YCENTRE - data_buffer[i]*yscalefactor); + + xvalue += x_spacing; + } + + //debug_display(ymax,ymin,max,min,data_buffer[10],data_buffer[20]); + + //Draw the axes values and labels + drawAxes (GRAPH_YCENTRE, ymax, ymin, max, min, 0, num_samples, xvalue, WAVE); + } +} + +/** + * @brief Draw bars according to the value inside data_buffer but without auto-scaling + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @retval none + */ + +void plotWaveNoAutoScale(float32_t * data_buffer, int num_samples) { + unsigned i = 0; + int xcoor = FIRST_DATA_PIXEL; + + int ymax = 20; + int ymin = GRAPH_VER_END_PIXEL; + float max, min = data_buffer[0]; + + float yscalefactor = 270; + + float x_spacing = 1; + + x_spacing = GRAPH_WIDTH / num_samples; + + + for(i = 0; i < num_samples; i++) { + //Clear the previous bar before drawing the new bar on the screen + BSP_LCD_SetTextColor(BACKGROUND_COLOUR); + BSP_LCD_DrawLine(xcoor, 0, xcoor, 272); + + //Draw the bars + BSP_LCD_SetTextColor(GRAPH_COLOUR); + BSP_LCD_DrawLine(xcoor, GRAPH_YCENTRE, xcoor, GRAPH_YCENTRE - data_buffer[i]/yscalefactor); + + // determine min and max values to draw the y-axis + if(min >= data_buffer[i]){ + ymin = GRAPH_YCENTRE - data_buffer[i]/yscalefactor; + min = data_buffer[i]; + } + if(max <= data_buffer[i]){ + ymax = GRAPH_YCENTRE - data_buffer[i]/yscalefactor; + max = data_buffer[i]; + } + + //Safety measure to avoid the bars go outside the grid area + if(ymax < HEADER_HEIGHT) ymax = HEADER_HEIGHT; + if(ymin > GRAPH_VER_END_PIXEL) ymin = GRAPH_VER_END_PIXEL; + + xcoor += x_spacing; + } + //debug_display(ymax,ymin,max,min,20,yscalefactor); + drawAxes (GRAPH_YCENTRE, ymax, ymin, max, min, 0, num_samples, xcoor, WAVE); + +} + +/** + * @brief Draw bars according to the value inside data_buffer, + * if buffer size is smaller than the no of plots, repeat the graph + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @param num_plots: how many data points needed to plot + * @retval none + */ + +void plotSamples(int16_t * data_buffer, int num_samples, int num_plots) { + int16_t i; + int16_t xvalue; // x in pixels + int16_t ymax = HEADER_HEIGHT; + int16_t ymin = GRAPH_VER_END_PIXEL; // max and min y values in pixels + float32_t max, min = data_buffer[0]; // max and min y values passed to function + float32_t biggestmag, yscalefactor; + int counter = 0; + float x_spacing = 1; + + // initialise some variables + max = data_buffer[0]; + min = data_buffer[0]; + xvalue = FIRST_DATA_PIXEL; + + x_spacing = GRAPH_WIDTH / num_plots; + // determine min and max values + for(i = 0; i < num_samples; i++) { + if(min >= data_buffer[i]) min = data_buffer[i]; + if(max <= data_buffer[i]) max = data_buffer[i]; + } + + //Determine the largest value and limit the graph size by using yscalefactor + if(max*max > min*min) biggestmag = max; else biggestmag = -min; + + yscalefactor = 100/(biggestmag); // 100 is +/- pixels from centre of screen + ymin = GRAPH_YCENTRE - min*yscalefactor; + ymax = GRAPH_YCENTRE - max*yscalefactor; + + for(i = 0; i < num_plots; i++) { + //Draw the bars + BSP_LCD_SetTextColor(GRAPH_COLOUR); + BSP_LCD_DrawLine(xvalue, GRAPH_YCENTRE, xvalue, GRAPH_YCENTRE - data_buffer[counter]*yscalefactor); + + if(counter >= num_samples - 1) + counter = 0; + else + counter ++; + + xvalue += x_spacing; + } + //Draw the axes values and labels + drawAxes (GRAPH_YCENTRE, ymax, ymin, max, min, 0, num_plots, xvalue, WAVE); +} + +/** + * @brief Save data_sample to the temporary buffer + * @brief Draw the graph from the temporary buffer only when enough data points have got + * @param data_sumple: a pointer that points to the data that need to plot + * @param num_plots: how many data points needed to plot + * @retval none + */ + +void plotSamplesIntr(int16_t data_sample, int num_plots) { + float x_spacing = 1; + unsigned int i = 0; + + int xvalue = FIRST_DATA_PIXEL; + int ymax = 20; + int ymin = GRAPH_VER_END_PIXEL; + float max, min = data_sample; + float32_t biggestmag, yscalefactor; + + if(stop == 0){ + x_spacing = GRAPH_WIDTH / num_plots; + temp_buffer[temp_buffer_ptr] = data_sample; + temp_buffer_ptr++; + if(temp_buffer_ptr >= num_plots){ + temp_buffer_ptr = 0; + stop = 1; + + for(i = 0; i < num_plots; i++) { + if(min >= temp_buffer[i]) min = temp_buffer[i]; + if(max <= temp_buffer[i]) max = temp_buffer[i]; + } + + //Determine the largest value and limit the graph size by using yscalefactor + if(max*max >= min*min) biggestmag = max; else biggestmag = -min; + + yscalefactor = 100/(biggestmag); // 100 is +/- pixels from centre of screen + ymin = GRAPH_YCENTRE - min*yscalefactor; + ymax = GRAPH_YCENTRE - max*yscalefactor; + + BSP_LCD_SetTextColor(GRAPH_COLOUR); + for(i = 0; i < num_plots; i++) { + //Draw the bars + BSP_LCD_SetTextColor(GRAPH_COLOUR); + BSP_LCD_DrawLine(xvalue, GRAPH_YCENTRE, xvalue, GRAPH_YCENTRE - temp_buffer[i]*yscalefactor); + xvalue += x_spacing; + } + + drawAxes (GRAPH_YCENTRE, ymax, ymin, max, min, 0, num_plots, xvalue, WAVE); + } + } +} + +/** + * @brief Plot the FFT graph according to the data buffer + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @param auto_scale: AUTO_SCALING: auto scaling of the y-axis, + NO_AUTO_SCALING: no auto scaling of the y-axis + * @retval none + */ + +void plotFFT(float32_t * data_buffer, int num_samples, int auto_scale){ + int16_t i; + int16_t xvalue; // x and y value in pixels + int16_t ymax = HEADER_HEIGHT; // max and min y values in pixels + int16_t ymin = GRAPH_VER_END_PIXEL; + float32_t max, min; // max and min y values passed to function + float32_t biggestmag, yscalefactor; + + float x_spacing = 1; + + x_spacing = GRAPH_WIDTH / num_samples; + + // initialise some variables + max = data_buffer[0]; + min = data_buffer[0]; + xvalue = FIRST_DATA_PIXEL; + + //Refresh the screen in a specific rate, larger the number, slower refresh rate + if(refresh_counter > 40) { + clearScreen(); + refresh_counter = 0; + } + + // determine min and max values + for(i = 0; i < num_samples; i++) { + if(min >= data_buffer[i]) min = data_buffer[i]; + if(max <= data_buffer[i]) max = data_buffer[i]; + } + + //If y-axis needed to auto-scaling, have to work out the yscalefactor to limit the + //graph size. If no auto-scaling, the yscalefactor will set to a fix value + switch(auto_scale){ + case AUTO_SCALING: + + //Determine the largest value and limit the graph size by using yscalefactor + if(max*max > min*min) biggestmag = max; else biggestmag = -min; + + yscalefactor = 200/(biggestmag); // 200 is +/- pixels from centre of screen + + break; + + case NO_AUTO_SCALING: + yscalefactor = 0.0075; + + break; + + } + ymin = FFT_YCENTRE - min*yscalefactor; + ymax = FFT_YCENTRE - max*yscalefactor; + + BSP_LCD_SetTextColor(GRAPH_COLOUR); + + //Safety measure to prevent the graph go off the screen + if(ymax < HEADER_HEIGHT) + ymax = HEADER_HEIGHT; + + //Draw the bars, only draw half of the data buffer because the other half data is duplicated + for(i = 0; i < num_samples/2; i++) { + BSP_LCD_DrawLine(xvalue, FFT_YCENTRE, xvalue, FFT_YCENTRE - data_buffer[i]*yscalefactor); + BSP_LCD_DrawLine(xvalue, FFT_YCENTRE, xvalue, FFT_YCENTRE - data_buffer[i]*yscalefactor); + + xvalue += x_spacing*2; + } + + //debug_display(ymax,ymin,max,min,biggestmag,yscalefactor); + //Draw the axes values and labels + drawAxes (FFT_YCENTRE, ymax, ymin, max, min, 0, num_samples, xvalue, FFT); + refresh_counter ++; + +} + +/** + * @brief Plot the FFT graph in decibel according to the data buffer + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @param live: LIVE = plot the graph live + * STATIC = will only draw the graph once + * @retval none + */ + +void plotLogFFT(float32_t *(data_buffer), int num_samples, int live){ + int16_t i; + int16_t xvalue = FIRST_DATA_PIXEL; + int16_t yvalue; // x and y value in pixels + int16_t ymax = HEADER_HEIGHT; + int16_t ymin = GRAPH_VER_END_PIXEL; // max and min y values in pixels + float32_t max, min, dB_per_divs; // max and min y values passed to function + float32_t biggestmag, yscalefactor; + int16_t ycentre = FFT_YCENTRE; + int negative = 0; + int pixels_from_centre = 180; + + float x_spacing = 1; + + x_spacing = GRAPH_WIDTH / num_samples; + + //the data can't be zero as it has to be used in log calculation afterwards + if(data_buffer[0] == 0) + return; + + if(stop == 0) { + if(live == 0){ + stop = 1; + } else + stop = 0; + //Refresh the screen in a specific rate, larger the number, slower refresh rate + if(refresh_counter > 100*refresh_counter_factor) { + clearScreen(); + refresh_counter = 0; + } + + if(refresh_counter == 0){ + + // initialise some variables + max = 20 * log10(data_buffer[0]); + min = 20 * log10(data_buffer[0]); + + for(i = 0; i < num_samples; i++) { + if(data_buffer[i] == 0) + return; + //Calculate the decibel of the data + data_buffer[i] = 20 * log10(data_buffer[i]); + + //Determine where is the y-axis centre + if(data_buffer[i] < 0) negative++; + + if(min >= data_buffer[i]) min = data_buffer[i]; + if(max <= data_buffer[i]) max = data_buffer[i]; + } + if(max*max > min*min) biggestmag = max; else biggestmag = -min; + + if(negative != num_samples && negative != 0) { + pixels_from_centre = 100; + ycentre = GRAPH_YCENTRE; + } else if (negative == num_samples){ + pixels_from_centre = 150; + ycentre = LOGFFT_YCENTRE; + } else { + pixels_from_centre = 200; + ycentre = FFT_YCENTRE; + } + + yscalefactor = pixels_from_centre/(biggestmag); // pixels_from_centre is +/- pixels from centre of screen + ymin = ycentre - min*yscalefactor; + ymax = ycentre - max*yscalefactor; + + dB_per_divs = (max - min)*48/abs(ymin - ymax); + + BSP_LCD_SetTextColor(GRAPH_COLOUR); + + for(i = 0; i < num_samples/2; i++) { + yvalue = ycentre - data_buffer[i]*yscalefactor; + + //Determine if the plotting out of the graph area, if yes plot it at the bottom of the graph + if(yvalue > GRAPH_VER_END_PIXEL){ + yvalue = GRAPH_VER_END_PIXEL; + } else if (yvalue < HEADER_HEIGHT) { + yvalue = HEADER_HEIGHT; + } + + BSP_LCD_DrawLine(xvalue, GRAPH_VER_END_PIXEL, xvalue, yvalue); + + xvalue += x_spacing*2; + } + + //Determine the largest value and limit the graph size by using yscalefactor +/* if(max*max > min*min) biggestmag = max; else biggestmag = -min; + + //As the ycenter move up so less pixels from centre of screen + if(ycenter == LOGFFT_YCENTRE) yscalefactor = 40/(biggestmag); // 40 is +/- pixels from centre of screen + else yscalefactor = 200/(biggestmag); // 200 is +/- pixels from centre of screen + ymin = ycenter - min*yscalefactor; + ymax = ycenter - max*yscalefactor; + + dB_per_divs = (max - min)*48/abs(ymin - ymax); + BSP_LCD_SetTextColor(GRAPH_COLOUR); + + for(i = 0; i < num_samples/2; i++) { + yvalue = ycenter - data_buffer[i]*yscalefactor; + + //Determine if the plotting out of the graph area, if yes plot it at the bottom of the graph + if(yvalue > GRAPH_VER_END_PIXEL){ + yvalue = GRAPH_VER_END_PIXEL; + } else if (yvalue < HEADER_HEIGHT) { + yvalue = HEADER_HEIGHT; + } + + BSP_LCD_DrawLine(xvalue, GRAPH_VER_END_PIXEL, xvalue, yvalue); + + xvalue += x_spacing*2; + }*/ + + //debug_display(ymax, ymin, max, min, ycentre, yscalefactor); + drawAxes (ycentre, ymax, ymin, max, min, dB_per_divs, num_samples, xvalue, LOGFFT); + negative = 0; + } + refresh_counter ++; + } +} + +/** + * @brief Plot the LMS graph according to the data buffer + * @param data_buffer: a pointer that points to the data that need to plot + * @param num_samples: number of the plotted data buffer + * @param live: LIVE = plot the graph live + * STATIC = will only draw the graph once + * @retval none + */ + +void plotLMS(float32_t * data_buffer, int num_samples, int live) { + int16_t i; + int16_t xvalue, yvalue; // x and y value in pixels + int16_t ymax, ymin; // max and min y values in pixels + float32_t max, min; // max and min y values passed to function + float32_t biggestmag, yscalefactor; + + float x_spacing = 1; + + x_spacing = GRAPH_WIDTH / num_samples; + + if(stop == 0){ + if(live == 0) + stop = 1; + else + stop = 0; + + // initialise some variables + max = data_buffer[0]; + min = data_buffer[0]; + xvalue = FIRST_DATA_PIXEL; + + + // determine min and max values + for(i = 0; i < num_samples; i++) { + if(min >= data_buffer[num_samples - 1 - i]) min = data_buffer[num_samples - 1 - i]; + if(max <= data_buffer[num_samples - 1 - i]) max = data_buffer[num_samples - 1 - i]; + } + + //Determine the largest value and limit the graph size by using yscalefactor + if(max*max > min*min) biggestmag = max; else biggestmag = -min; + + yscalefactor = (GRAPH_YCENTRE-60)/(biggestmag); // 100 is +/- pixels from centre of screen + ymin = GRAPH_YCENTRE - min*yscalefactor; + ymax = GRAPH_YCENTRE - max*yscalefactor; + + BSP_LCD_SetTextColor(GRAPH_COLOUR); + for(i = 0; i < num_samples; i++) { + //truncates the decimal value from floating point value and returns integer value + yvalue = GRAPH_YCENTRE - trunc(data_buffer[num_samples - 1 - i]*yscalefactor); + + //Determine if the plotting out of the graph area, if yes plot it at the limit of the graph area + if(yvalue > GRAPH_VER_END_PIXEL){ + yvalue = GRAPH_VER_END_PIXEL; + } else if (yvalue < HEADER_HEIGHT) { + yvalue = HEADER_HEIGHT; + } + + BSP_LCD_DrawLine(xvalue, GRAPH_YCENTRE, xvalue, yvalue); + xvalue += x_spacing; + } + + drawAxes (GRAPH_YCENTRE, ymax, ymin, max, min, 0, num_samples, xvalue, LMS); + + //Refresh the screen in a specific rate, larger the number, slower refresh rate + if(refresh_counter > 100) { + clearScreen(); + refresh_counter = 0; + } + + refresh_counter ++; + } +} + +/** + * @brief Change the global variable button_flag to a specific value + * @brief Button_flag control 3 states only + * @param value: No effect if value smaller than 0 or greater than 3 + * @retval none + */ + +void changeButtonFlag(int value) { + button_flag = value; +} + +/** + * @brief Get the value of the global variable button_flag and check the user button status + * @brief Button_flag control 3 states only + * @param none + * @retval button_flag: return the state + */ + +int checkButtonFlag() { + + //If user press the button, the whole screen will be cleared and change the state + if(CheckForUserInput() == 1) { + refresh_counter = 0; + stop = 0; + BSP_LCD_Clear(BACKGROUND_COLOUR); + button_flag++; + } + + + //If button flag greater than 2, the button flag will go the first state and reset everything + if(button_flag >= 2) { + stop = 0; + button_flag=0; + } + + return button_flag; +} + +/** + * @brief To configure the system clock. There's an exactly the same function in + * stm32f7_wm8994_init.c This function will only use when stm32f7_wm8994_init + * didn't call in the main + * @param none + * @retval none + */ + +static void SystemClock_Config_LCD(void){ + HAL_StatusTypeDef ret = HAL_OK; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_OscInitTypeDef RCC_OscInitStruct; + + /* Enable Power Control clock */ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* The voltage scaling allows optimizing the power consumption when the device is + clocked below the maximum system frequency, to update the voltage scaling value + regarding system frequency refer to product datasheet. */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /* Enable HSE Oscillator and activate PLL with HSE as source */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 25; + RCC_OscInitStruct.PLL.PLLN = 400; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 8; + ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); + ASSERT(ret != HAL_OK); + + /* activate the OverDrive */ + ret = HAL_PWREx_ActivateOverDrive(); + ASSERT(ret != HAL_OK); + + /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 + clocks dividers */ + RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); + ASSERT(ret != HAL_OK); +} + +/** + * @brief To initialise the LCD. + * This function will only use when stm32f7_wm8994_init + * didn't call in the main + * @param sample_frequency: get the sample frequency from the main and + * pass it to init_LCD() + * @param name: get the program name from the main and pass it to + * init_LCD() + * @param graph: GRAPH = display graph, NOGRAPH = display start screen only + * @retval none + */ + +void stm32f7_LCD_init(int16_t sample_frequency, char *name, int graph){ + + + //Enable I-Cache + SCB_EnableICache(); + + //Enable D-Cache + SCB_EnableDCache(); + + SystemClock_Config_LCD(); // configure the system clock to 200 Mhz + BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO); // configure the blue user pushbutton in GPIO mode + BSP_LED_Init(LED1); // initialise LED on GPIO pin P (also accessible on arduino header) + BSP_SDRAM_Init(); + init_LCD(sample_frequency, name, 0, graph); +} + +/** + * @brief Display a statement on the top of the screen also reset the stop global variable. + * This global variable is used to draw the static graph + * @brief Can add a paramenter to display custom string, change the default string to the + * paramenter's name, type of the parameter is char * + * @param none + * @retval none + */ + +void proceed_statement(){ + stop = 0; + update_flag = 1; + + BSP_LCD_SetFont(&Font12); + + BSP_LCD_DisplayStringAt(100, 10, (uint8_t * ) "Push button to next screen", LEFT_MODE); + + while(CheckForUserInput() != 1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_echo_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_echo_intr.c new file mode 100644 index 0000000..52897b1 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_echo_intr.c @@ -0,0 +1,49 @@ +// stm32f7_echo_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_echo_intr.c" +#define DELAY_BUF_SIZE 16000 +#define GAIN 0.8f + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t buffer[DELAY_BUF_SIZE]; +int16_t bufptr = 0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + int16_t delayed_sample; + + delayed_sample = buffer[bufptr]; + tx_sample_L = delayed_sample + rx_sample_L; + buffer[bufptr] = rx_sample_L + delayed_sample*GAIN; + bufptr = (bufptr+1) % DELAY_BUF_SIZE; + tx_sample_R = 0; + BSP_LED_Toggle(LED1); + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_17DB, + SOURCE_FILE_NAME, + NOGRAPH); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft.c new file mode 100644 index 0000000..d4de0bb --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft.c @@ -0,0 +1,51 @@ +// stm32f7_fft.c + +#include +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_fft.c" + +#define PI 3.14159265358979 +// choose N from 32, 64, 128, 256 +#define N 128 +#define TESTFREQ 1800.0 +#define SAMPLING_FREQ 8000.0 + +typedef struct +{ + float real; + float imag; +} COMPLEX; + +#include "fft.h" + +COMPLEX samples[N]; +COMPLEX twiddle[N]; + + +int main() +{ + int n; + + stm32f7_LCD_init(SAMPLING_FREQ, SOURCE_FILE_NAME, GRAPH); + + for (n=0 ; n< N ; n++) + { + twiddle[n].real = cos(PI*n/N); + twiddle[n].imag = -sin(PI*n/N); + } + + for(n=0 ; nreal, N, 0, 1); + while(1){} +} + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft256_dma.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft256_dma.c new file mode 100644 index 0000000..609a1fa --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft256_dma.c @@ -0,0 +1,95 @@ +// stm32f7_fft256_dma.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "hamming256.h" + +#define SOURCE_FILE_NAME "stm32f7_fft256_dma.c" + +extern volatile int32_t TX_buffer_empty; // these may not need to be int32_t +extern volatile int32_t RX_buffer_full; // they were extern volatile int16_t in F4 version +extern int16_t rx_buffer_proc, tx_buffer_proc; // will be assigned token values PING or PONG + +#define N (PING_PONG_BUFFER_SIZE) +#define MAGNITUDE_SCALING_FACTOR 32 +#define TRIGGER 32000 + +typedef struct +{ + float real; + float imag; +} COMPLEX; + +#include "fft.h" + +COMPLEX twiddle[N]; +COMPLEX cbuf[N]; +int16_t sinebuf[N]; +float32_t outbuffer[N]; +float32_t inbuffer[N]; + +void process_buffer() +{ + int i; + int16_t *rx_buf, *tx_buf; + int16_t left_sample, right_sample; + + // determine which buffers to use + if (rx_buffer_proc == PING) {rx_buf = (int16_t *)PING_IN;} + else {rx_buf = (int16_t *)PONG_IN;} + if (tx_buffer_proc == PING) {tx_buf = (int16_t *)PING_OUT;} + else {tx_buf = (int16_t *)PONG_OUT;} + + for (i = 0; i < N ; i++) + { + left_sample = *rx_buf++; + right_sample = *rx_buf++; + cbuf[i].real = ((float)left_sample); +// cbuf[i].real = ((float)left_sample)*hamming[i]; + cbuf[i].imag = 0.0; + inbuffer[i] = cbuf[i].real; + } + + fft(cbuf,N,twiddle); + arm_cmplx_mag_f32((float32_t *)(cbuf), outbuffer,N); + for (i = 0; i < N ; i++) + { + outbuffer[i] = outbuffer[i]/MAGNITUDE_SCALING_FACTOR; + if (i==0) + *tx_buf++ = TRIGGER; + else + *tx_buf++ = (int16_t)(outbuffer[i]); + *tx_buf++ = inbuffer[i]; + } + + TX_buffer_empty = 0; + RX_buffer_full = 0; +} + +int main(void) +{ + int n; + for (n=0 ; n< N ; n++) + { + twiddle[n].real = cos(PI*n/N); + twiddle[n].imag = -sin(PI*n/N); + } + + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_DMA, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_6DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + while(1) + { + while (!(RX_buffer_full && TX_buffer_empty)){} + BSP_LED_On(LED1); + process_buffer(); + plotFFT(outbuffer, PING_PONG_BUFFER_SIZE, NO_AUTO_SCALING); + BSP_LED_Off(LED1); + } +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft_CMSIS.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft_CMSIS.c new file mode 100644 index 0000000..3d2b6f7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fft_CMSIS.c @@ -0,0 +1,38 @@ +// stm32f7_fft_CMSIS.c + +#define ARM_MATH_CM4 + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_fft_CMSIS.c" + +#define N 128 +#define TESTFREQ 900.0 +#define SAMPLING_FREQ 8000.0 + +float32_t samples[2*N]; + +int main() +{ + int n; + + stm32f7_LCD_init(SAMPLING_FREQ, SOURCE_FILE_NAME, GRAPH); + + for(n=0 ; n0 ; i--) x[i] = x[i-1]; + BSP_LED_Off(LED1); + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_dma.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_dma.c new file mode 100644 index 0000000..4f18bed --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_dma.c @@ -0,0 +1,66 @@ +// stm32f7_fir_prbs_CMSIS_dma.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#include "bp1750.h" + +#define SOURCE_FILE_NAME "stm32f7_fir_prbs_CMSIS_dma.c" + +extern volatile int32_t TX_buffer_empty; +extern volatile int32_t RX_buffer_full; +extern int16_t rx_buffer_proc, tx_buffer_proc; // will be assigned token values PING or PONG + +float32_t xright[PING_PONG_BUFFER_SIZE], xleft[PING_PONG_BUFFER_SIZE], y[PING_PONG_BUFFER_SIZE], state[N+PING_PONG_BUFFER_SIZE-1]; +arm_fir_instance_f32 S; + +void process_buffer(void) // this function processes one DMA transfer block worth of data +{ + int i; + int16_t *rx_buf, *tx_buf; + + if (rx_buffer_proc == PING) {rx_buf = (int16_t *)PING_IN;} + else {rx_buf = (int16_t *)PONG_IN;} + if (tx_buffer_proc == PING) {tx_buf = (int16_t *)PING_OUT;} + else {tx_buf = (int16_t *)PONG_OUT;} + + for (i=0 ; i<(PING_PONG_BUFFER_SIZE) ; i++) + { + xleft[i] = (float32_t)(prbs(8000)); + } + + BSP_LED_On(LED1); + arm_fir_f32(&S,xleft,y,PING_PONG_BUFFER_SIZE); + BSP_LED_Off(LED1); + + for (i=0 ; i<(PING_PONG_BUFFER_SIZE) ; i++) + { + *tx_buf++ = (short)(y[i]); + *tx_buf++ = (short)(y[i]); + } + + RX_buffer_full = 0; + TX_buffer_empty = 0; +} + +int main(void) +{ + arm_fir_init_f32(&S, N, h, state, PING_PONG_BUFFER_SIZE); + + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_DMA, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1) + { + while(!(RX_buffer_full && TX_buffer_empty)){} + process_buffer(); + } +} + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_intr.c new file mode 100644 index 0000000..2f68730 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_CMSIS_intr.c @@ -0,0 +1,51 @@ +// stm32f7_fir_prbs_CMSIS_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "bp1750.h" + +#define SOURCE_FILE_NAME "stm32f7_fir_prbs_CMSIS_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float32_t x, y, state[N]; +arm_fir_instance_f32 S; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + x = (float32_t)(prbs(8000)); + BSP_LED_On(LED1); + arm_fir_f32(&S,&x,&y,1); + BSP_LED_Off(LED1); + tx_sample_L = (int16_t)(y); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + + arm_fir_init_f32(&S, N, h, state, 1); + + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_dma.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_dma.c new file mode 100644 index 0000000..ca0f561 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_dma.c @@ -0,0 +1,60 @@ +// stm32f7_fir_prbs_dma.c + +#include "stm32f7_wm8994_init.h" +#include "maf5.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_fir_prbs_dma.c" + +extern volatile int32_t TX_buffer_empty; // these may not need to be int32_t +extern volatile int32_t RX_buffer_full; // they were extern volatile int16_t in F4 version +extern int16_t rx_buffer_proc, tx_buffer_proc; // will be assigned token values PING or PONG + +float32_t x[N], y[PING_PONG_BUFFER_SIZE]; + +void process_buffer(void) // this function processes one DMA transfer block worth of data +{ + int i,k; + int16_t *rx_buf, *tx_buf; + + if (rx_buffer_proc == PING) {rx_buf = (int16_t *)PING_IN;} + else {rx_buf = (int16_t *)PONG_IN;} + if (tx_buffer_proc == PING) {tx_buf = (int16_t *)PING_OUT;} + else {tx_buf = (int16_t *)PONG_OUT;} + BSP_LED_On(LED1); + for (i=0 ; i<(PING_PONG_BUFFER_SIZE) ; i++) + { + y[i] = 0.0; + x[0] = (float32_t)(prbs(8000)); + for (k=0 ; k0 ; k--) x[k] = x[k-1]; + } + BSP_LED_Off(LED1); + for (i=0 ; i<(PING_PONG_BUFFER_SIZE) ; i++) + { + *tx_buf++ = (short)(y[i]); + *tx_buf++ = (short)(y[i]); + } + RX_buffer_full = 0; + TX_buffer_empty = 0; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_DMA, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1) + { + while(!(RX_buffer_full && TX_buffer_empty)){} + process_buffer(); + } +} + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_intr.c new file mode 100644 index 0000000..99b7f98 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_fir_prbs_intr.c @@ -0,0 +1,45 @@ +// stm32f7_fir_prbs_intr.c + +#include "stm32f7_wm8994_init.h" +#include "bp1750.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_fir_prbs_intr.c" + +float32_t x[N]; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +void BSP_AUDIO_SAI_Interrupt_CallBack(void) +{ + int16_t i; + float32_t yn = 0.0; + + BSP_LED_On(LED1); + x[0] = (float32_t)prbs(8000); + for (i=0 ; i0 ; i--) x[i] = x[i-1]; + tx_sample_R = tx_sample_L = (int16_t)(yn); + BSP_LED_Off(LED1); + + return; +} + + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + while(1){} +} + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_delta_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_delta_intr.c new file mode 100644 index 0000000..d61dc2e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_delta_intr.c @@ -0,0 +1,67 @@ +// stm32f7_iirsos_delta_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "elliptic.h" + +#define SOURCE_FILE_NAME "stm32f7_iirsos_delta_intr.c" + +#define BUFFERSIZE 256 +#define AMPLITUDE 60000.0f + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float w[NUM_SECTIONS][2] = {0}; +float32_t dimpulse[BUFFERSIZE]; +float32_t response[BUFFERSIZE]; +int16_t indexptr = 0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + int16_t section; // index for section number + float32_t input; // input to each section + float32_t wn,yn; // intermediate and output values + + input = dimpulse[indexptr]; + for (section=0 ; section< NUM_SECTIONS ; section++) + { + wn = input - a[section][1]*w[section][0] + - a[section][2]*w[section][1]; + yn = b[section][0]*wn + b[section][1]*w[section][0] + + b[section][2]*w[section][1]; + w[section][1] = w[section][0]; + w[section][0] = wn; + input = yn; + } + response[indexptr++] = yn; + if (indexptr >= BUFFERSIZE) indexptr = 0; + + tx_sample_L = (int16_t)(yn*AMPLITUDE); + tx_sample_R = tx_sample_L; + + plotSamplesIntr(tx_sample_L, 64); + + return; +} + +int main(void) +{ + int i; + + for (i=0 ; i< BUFFERSIZE ; i++) dimpulse[i] = 0.0; + dimpulse[0] = 1.0; + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_intr.c new file mode 100644 index 0000000..9340efe --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_intr.c @@ -0,0 +1,51 @@ +// stm32f7_iirsos_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "elliptic.h" + +#define SOURCE_FILE_NAME "stm32f7_iirsos_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float w[NUM_SECTIONS][2] = {0}; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + int16_t section; // second order section number + float32_t input; // input to each section + float32_t wn, yn; // intermediate and output values + + input =(float32_t)(rx_sample_L); + for (section=0 ; section< NUM_SECTIONS ; section++) + { + wn = input - a[section][1]*w[section][0] + - a[section][2]*w[section][1]; + yn = b[section][0]*wn + b[section][1]*w[section][0] + + b[section][2]*w[section][1]; + w[section][1] = w[section][0]; + w[section][0] = wn; + input = yn; + } + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_prbs_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_prbs_intr.c new file mode 100644 index 0000000..31615be --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsos_prbs_intr.c @@ -0,0 +1,52 @@ +// stm32f7_iirsos_prbs_intr.c + +#include "stm32f7_wm8994_init.h" +#include "elliptic.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_iirsos_prbs_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float w[NUM_SECTIONS][2] = {0}; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + int16_t section; // second order section number + float32_t input; // input to each section + float32_t wn, yn; // intermediate and output values + + input =(float32_t)(prbs(8000)); + for (section=0 ; section< NUM_SECTIONS ; section++) + { + wn = input - a[section][1]*w[section][0] + - a[section][2]*w[section][1]; + yn = b[section][0]*wn + b[section][1]*w[section][0] + + b[section][2]*w[section][1]; + w[section][1] = w[section][0]; + w[section][0] = wn; + input = yn; + } + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsosadapt_CMSIS_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsosadapt_CMSIS_intr.c new file mode 100644 index 0000000..bdd6f80 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_iirsosadapt_CMSIS_intr.c @@ -0,0 +1,93 @@ +// stm32f7_iirsosadapt_CMSIS_intr.c +// uses normalised LMS + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "elliptic_bandpass.h" + +#define BLOCK_SIZE 1 +#define NUM_TAPS 256 + +#define SOURCE_FILE_NAME "stm32f7_iirsosadapt_CMSIS_intr.c" + +float32_t beta = 5E-3; // using normalised LMS ! +float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; +float32_t firCoeffs32[NUM_TAPS] = { 0.0f }; +arm_lms_norm_instance_f32 S; +float w[NUM_SECTIONS][2] = {0.0f, 0.0f}; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float32_t cmplx_buf[2*PING_PONG_BUFFER_SIZE]; +float32_t *cmplx_buf_ptr; +float32_t outbuffer[PING_PONG_BUFFER_SIZE]; +volatile int intr_flag = 0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + float32_t input; + int16_t section; +float32_t wn, yn, adapt_out, error, adapt_in; + + input = (float32_t)(prbs(8000)); +adapt_in = input; + for (section=0 ; section= 0; i--) // update weights + { // and delay line + dummy = beta*error; + dummy = dummy*x[i]; + h[i] = h[i] + dummy/energy; + x[i] = x[i-1]; + } + BSP_LED_Off(LED1); + tx_sample_L = (int16_t)(error); + tx_sample_R = (int16_t)(error); + return; +} + + +int main(void) +{ + int i = 0; + int button = 0; + + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_6DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + while(1) + { + button = checkButtonFlag(); + if (button == 1) + { + for(i=0; iSWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + plotSamplesIntr(tx_sample_L, 64); + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_intr.c new file mode 100644 index 0000000..484d9e2 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_intr.c @@ -0,0 +1,41 @@ +// stm32f7_prbs_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_prbs_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + tx_sample_L = prbs(8000); +// tx_sample_L = prand(); + tx_sample_R = tx_sample_L; + plotSamplesIntr(tx_sample_L, 128); + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_6DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_FIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_FIR_intr.c new file mode 100644 index 0000000..47b46d2 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_FIR_intr.c @@ -0,0 +1,77 @@ +// stm32f7_prbs_recon48_FIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "recon484fird.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_prbs_recon48_FIR_intr.c" + +#define OVERSAMPLING_RATIO 6 + +float32_t x, y, state[N]; +arm_fir_instance_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + x = (float32_t)(prbs(20000)); + } + else + { + x = 0.0; + } + arm_fir_f32(&S,&x,&y,1); + y_bit16 = (int16_t)(y); + + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = 0; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + arm_fir_init_f32(&S, N, h, state, 1); + stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_IIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_IIR_intr.c new file mode 100644 index 0000000..24774c9 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_prbs_recon48_IIR_intr.c @@ -0,0 +1,89 @@ +// stm32f7_prbs_recon48_IIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "recon14julyiir.h" + +#define SOURCE_FILE_NAME "stm32f7_prbs_recon48_IIR_intr.c" + +#define OVERSAMPLING_RATIO 6 + +float32_t coeffs[5*NUM_SECTIONS] = {0}; +float32_t state[4*NUM_SECTIONS] = {0}; + +arm_biquad_casd_df1_inst_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + float32_t xn, yn; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + xn = (float32_t)(prbs(20000)); + } + else + { + xn = 0.0; + } + arm_biquad_cascade_df1_f32(&S, &xn, &yn, 1); + y_bit16 = (int16_t)(yn); + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = rx_sample_L; + tx_sample_R = tx_sample_L; + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + int i,k; + + k = 0; + for (i=0; i 2*PI) theta -= 2*PI; + BSP_LED_On(LED1); +// tx_sample_L = (int16_t)(amplitude*sin(theta)); +// tx_sample_L = (int16_t)(amplitude*sinf(theta)); + tx_sample_L = (int16_t)(amplitude*arm_sin_f32(theta)); + tx_sample_R = tx_sample_L; + BSP_LED_Off(LED1); + plotSamplesIntr(tx_sample_L, 32); + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_DAC12_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_DAC12_intr.c new file mode 100644 index 0000000..fc2402f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_DAC12_intr.c @@ -0,0 +1,58 @@ +// stm32f7_sine_lut_DAC12_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_sine_lut_DAC12_intr.c" +#define LOOPLENGTH 8 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; +int16_t sine_ptr = 0; // pointer into lookup table + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + tx_sample_L = sine_table[sine_ptr]; + sine_ptr = (sine_ptr+1) % LOOPLENGTH; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((tx_sample_L+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + plotSamples(sine_table, LOOPLENGTH, 32); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_buf_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_buf_intr.c new file mode 100644 index 0000000..8da553a --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_buf_intr.c @@ -0,0 +1,52 @@ +// stm32f7_sine_lut_buf_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_sine_lut_buf_intr.c" +#define LOOPLENGTH 8 +#define BUFFER_LENGTH 100 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; +int16_t sine_ptr = 0; // pointer into lookup table +float32_t buffer[BUFFER_LENGTH]; +int16_t buf_ptr = 0; // pointer into buffer + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + tx_sample_L = sine_table[sine_ptr]; + tx_sample_R = tx_sample_L; + buffer[buf_ptr] = tx_sample_L; + sine_ptr = (sine_ptr+1)%LOOPLENGTH; + buf_ptr = (buf_ptr+1)%BUFFER_LENGTH; + + BSP_LED_Toggle(LED1); + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_6DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + plotSamples(sine_table, LOOPLENGTH, 32); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_intr.c new file mode 100644 index 0000000..6c91263 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_intr.c @@ -0,0 +1,46 @@ +// stm32f7_sine_lut_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_sine_lut_intr.c" +#define LOOPLENGTH 8 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; +int16_t sine_ptr = 0; // pointer into lookup table + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + BSP_LED_On(LED1); + tx_sample_L = sine_table[sine_ptr]; + sine_ptr = (sine_ptr+1)%LOOPLENGTH; + tx_sample_R = tx_sample_L; + BSP_LED_Off(LED1); + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + plotSamples(sine_table, LOOPLENGTH, 32); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_FIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_FIR_intr.c new file mode 100644 index 0000000..2d214eb --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_FIR_intr.c @@ -0,0 +1,81 @@ +// stm32f7_sine_lut_recon48_FIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "recon484fird.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_sine_lut_recon48_FIR_intr.c" + +#define LOOPLENGTH 8 +#define OVERSAMPLING_RATIO 6 + +float32_t x, y, state[N]; +arm_fir_instance_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; +int16_t sine_ptr = 0; // pointer into lookup table +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + x = (float32_t)(sine_table[sine_ptr]); + sine_ptr = (sine_ptr+1) % LOOPLENGTH; + } + else + { + x = 0.0; + } + arm_fir_f32(&S,&x,&y,1); + y_bit16 = (int16_t)(y); + + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = 0; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + arm_fir_init_f32(&S, N, h, state, 1); + stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_IIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_IIR_intr.c new file mode 100644 index 0000000..785ce6e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sine_lut_recon48_IIR_intr.c @@ -0,0 +1,93 @@ +// stm32f7_sine_lut_recon48_IIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "recon14julyiir.h" + +#define SOURCE_FILE_NAME "stm32f7_sine_lut_recon48_IIR_intr.c" + +#define LOOPLENGTH 8 +#define OVERSAMPLING_RATIO 6 + +float32_t coeffs[5*NUM_SECTIONS] = {0}; +float32_t state[4*NUM_SECTIONS] = {0}; + +arm_biquad_casd_df1_inst_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t sine_table[LOOPLENGTH] = {0, 7071, 10000, 7071, 0, -7071, -10000, -7071}; +int16_t sine_ptr = 0; // pointer into lookup table +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + float32_t xn, yn; // intermediate and output values MOD4 + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + xn = (float32_t)(sine_table[sine_ptr]); + sine_ptr = (sine_ptr+1) % LOOPLENGTH; + } + else + { + xn = 0.0; + } + arm_biquad_cascade_df1_f32(&S, &xn, &yn, 1); + y_bit16 = (int16_t)(yn); + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = rx_sample_L; + tx_sample_R = tx_sample_L; + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + int i,k; + + k = 0; + for (i=0; iSWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + plotSamples(square_table, LOOPLENGTH, 128); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_intr.c new file mode 100644 index 0000000..8ce51f7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_intr.c @@ -0,0 +1,61 @@ +// stm32f7_square_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_square_intr.c" +#define LOOPLENGTH 64 + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t square_table[LOOPLENGTH] = { + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000}; +int16_t square_ptr = 0; // pointer into lookup table + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + tx_sample_L = square_table[square_ptr]; + square_ptr = (square_ptr+1)%LOOPLENGTH; + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + GRAPH); + plotSamples(square_table, LOOPLENGTH, 128); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_FIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_FIR_intr.c new file mode 100644 index 0000000..4da5076 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_FIR_intr.c @@ -0,0 +1,98 @@ +// stm32f7_square_recon48_FIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "recon484fird.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_square_recon48_FIR_intr.c" + +#define LOOPLENGTH 64 +#define OVERSAMPLING_RATIO 6 + +float32_t x, y, state[N]; +arm_fir_instance_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t square_table[LOOPLENGTH] = { + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000}; +int16_t square_ptr = 0; // pointer into lookup table + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + x = (float32_t)(square_table[square_ptr])*4.0; + square_ptr = (square_ptr+1) % LOOPLENGTH; + } + else + { + x = 0.0; + } + arm_fir_f32(&S,&x,&y,1); + y_bit16 = (int16_t)(y); + + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = 0; + tx_sample_R = tx_sample_L; + + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + arm_fir_init_f32(&S, N, h, state, 1); + stm32f7_wm8994_init(AUDIO_FREQUENCY_48K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_IIR_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_IIR_intr.c new file mode 100644 index 0000000..e67e1cb --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_square_recon48_IIR_intr.c @@ -0,0 +1,110 @@ +// stm32f7_square_recon48_IIR_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" +#include "recon14julyiir.h" + +#define SOURCE_FILE_NAME "stm32f7_square_recon48_IIR_intr.c" + +#define LOOPLENGTH 64 +#define OVERSAMPLING_RATIO 6 + +float32_t coeffs[5*NUM_SECTIONS] = {0}; +float32_t state[4*NUM_SECTIONS] = {0}; + +arm_biquad_casd_df1_inst_f32 S; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +int16_t square_table[LOOPLENGTH] = { + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + 10000, 10000, 10000, 10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000, + -10000, -10000, -10000, -10000}; +int16_t square_ptr = 0; // pointer into lookup table + +static int count = 0; + +extern DAC_TypeDef *Instance; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + int16_t y_bit16; + __IO uint32_t tmp = 0; + float32_t xn, yn; + + count++; + if (count >= OVERSAMPLING_RATIO) + { + count = 0; + xn = (float32_t)(square_table[square_ptr])*4.0; + square_ptr = (square_ptr+1) % LOOPLENGTH; + } + else + { + xn = 0.0; + } + arm_biquad_cascade_df1_f32(&S, &xn, &yn, 1); + y_bit16 = (int16_t)(yn); + plotSamplesIntr(y_bit16, 128); + + tx_sample_L = rx_sample_L; + tx_sample_R = tx_sample_L; + tmp = (uint32_t)Instance; + tmp += 8; +// scaling of 16-bit 2's complement value intended to be written to +// 16-bit WM8994 codec should perhaps instead be ((y_bit16/16) + 2048) +// but for the sample values used in this example, ((y_bit16/5) + 2000) +// works okay. + *(__IO uint32_t *) tmp = (uint32_t)((y_bit16+10000)/5); + Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1; + + return; +} + +int main(void) +{ + int i,k; + + k = 0; + for (i=0; i STOP_INCR) float_incr = START_INCR; + float_index += float_incr; + if (float_index > N) float_index -= N; + i = (int16_t)(float_index); + tx_sample_L = (amplitude*sine8000[i]); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_DIGITAL_MICROPHONE_2, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_9DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sysid_CMSIS_intr.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sysid_CMSIS_intr.c new file mode 100644 index 0000000..1eb6adf --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7_sysid_CMSIS_intr.c @@ -0,0 +1,103 @@ +// stm32f7_sysid_CMSIS_intr.c +// uses normalised LMS + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define BLOCK_SIZE 1 +#define NUM_TAPS 256 + +#define SOURCE_FILE_NAME "stm32f7_sysid_CMSIS_intr.c" + +float32_t beta = 1E-2; // using normalised LMS ! +float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; +float32_t firCoeffs32[NUM_TAPS] = { 0.0f }; +arm_lms_norm_instance_f32 S; +float32_t yn, adapt_in, adapt_out, adapt_err,input; +uint32_t status; + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; + +float32_t cmplx_buf[2*NUM_TAPS]; +float32_t *cmplx_buf_ptr; +float32_t outbuffer[NUM_TAPS]; +volatile int intr_flag = 0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ +// when we arrive at this interrupt service routine (callback) +// the most recent input sample values are (already) in global variables +// rx_sample_L and rx_sample_R +// this routine should write new output sample values in +// global variables tx_sample_L and tx_sample_R + + input = (float32_t)(rx_sample_L); + adapt_in = (float32_t)(prbs(8000)); + tx_sample_L = (int16_t)(adapt_in); + tx_sample_R = (int16_t)(adapt_in); + arm_lms_norm_f32(&S, &adapt_in, &input, &adapt_out, &adapt_err, BLOCK_SIZE); + intr_flag = 1; + return; +} + + +int main(void) +{ + int i = 0; + int button = 0; + + arm_lms_norm_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], beta, BLOCK_SIZE); + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + GRAPH); + +// optional modifications to signal path characteristics using features of WM8994 codec + +// register 0x480 and 0x481 control the programmable characteristics +// of five band parametric EQ intended for speaker compensation +// the following registers control the equaliser function +// AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x480, 0x6319); +// AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x481, 0x9300); + +// register 0x410 controls a high pass filter following AIF1 ADC1 +// write values 0x1800, 0x3800, 0x5800, or 0x7800 to register 0x410 +// for different HPF cutoff frequencies +// AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x410, 0x3800); + +// register 0x420 controls de-emphasis in AIF1 signal path +// write values 0x0000, 0x0000, or 0x0000 to register 0x420 +// for three slightly different de-emphasis characteristics +// or write value 0x0000 to register 0x420 to disable de-emphasis +// AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x420, 0x0300); + + while(1) + { + button = checkButtonFlag(); + if(button == 1) + { + for(i=0; i0 ; i--) x[i] = x[i-1]; + + tx_sample_L = (int16_t)(yn); + tx_sample_R = (int16_t)(yn); + arm_lms_norm_f32(&S, &adapt_in, &input, &adapt_out, &adapt_err, BLOCK_SIZE); + intr_flag = 1; + return; +} + + +int main(void) +{ + int i = 0; + int button = 0; + arm_lms_norm_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], beta, BLOCK_SIZE); +// for (i=0 ; i> 16); + + lo += (hi & 0x7FFF) << 16; + lo += hi >> 15; + + if (lo > 0x7FFFFFFF) lo -= 0x7FFFFFFF; + + return(prand_seed = (uint32_t)lo); +} + +// function returns random number in range +/- 8192 +int16_t prand() +{ +return ((int16_t)(rand31_next()>>18)-4096); +} + +// flags similar to those used in STM32F4 program examples +volatile int32_t TX_buffer_empty = 0; // these may not need to be int32_t +volatile int32_t RX_buffer_full = 0; // they were extern volatile int16_t in F4 version +int16_t rx_buffer_proc, tx_buffer_proc; // will be assigned token values PING or PONG + +int16_t rx_sample_L; +int16_t rx_sample_R; +int16_t tx_sample_L; +int16_t tx_sample_R; + +// essentially this is the interrupt service routine called when input DMA transfer to +// buffer PING_IN has completed +void BSP_AUDIO_IN_TransferComplete_CallBack(void) +{ + rx_buffer_proc = PING; + RX_buffer_full = 1; + return; +} + +// essentially this is the interrupt service routine called when input DMA transfer to +// buffer PONG_IN has completed +void BSP_AUDIO_IN_TransferCompleteM1_CallBack(void) +{ + rx_buffer_proc = PONG; + RX_buffer_full = 1; + return; +} + +void BSP_AUDIO_IN_Error_CallBack(void) +{ + /* This function is called when an Interrupt due to transfer error on or peripheral + error occurs. */ + while (BSP_PB_GetState(BUTTON_KEY) != RESET) + { + return; + } + /* could also generate a system reset to recover from the error */ + /* .... */ +} + +// essentially this is the interrupt service routine called when output DMA transfer from +// buffer PING_OUT has completed +void BSP_AUDIO_OUT_TransferComplete_CallBack(void) +{ + tx_buffer_proc = PING; + TX_buffer_empty = 1; + return; +} + +// essentially this is the interrupt service routine called when output DMA transfer from +// buffer PONG_OUT has completed +void BSP_AUDIO_OUT_TransferCompleteM1_CallBack(void) +{ + tx_buffer_proc = PONG; + TX_buffer_empty = 1; + return; +} + +void BSP_AUDIO_OUT_Error_CallBack(void) +{ + /* Stop the program with an infinite loop */ + while (BSP_PB_GetState(BUTTON_KEY) != RESET) + { + return; + } +} + +static void SystemClock_Config(void) +{ + HAL_StatusTypeDef ret = HAL_OK; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_OscInitTypeDef RCC_OscInitStruct; + + /* Enable Power Control clock */ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* The voltage scaling allows optimizing the power consumption when the device is + clocked below the maximum system frequency, to update the voltage scaling value + regarding system frequency refer to product datasheet. */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /* Enable HSE Oscillator and activate PLL with HSE as source */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 25; + RCC_OscInitStruct.PLL.PLLN = 400; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 8; + ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); + ASSERT(ret != HAL_OK); + + /* activate the OverDrive */ + ret = HAL_PWREx_ActivateOverDrive(); + ASSERT(ret != HAL_OK); + + /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 + clocks dividers */ + RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); + ASSERT(ret != HAL_OK); +} + +/** + * @brief EXTI line detection callbacks. + * @param GPIO_Pin: Specifies the pins connected EXTI line + * @retval None + */ +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + static uint32_t debounce_time = 0; + +// BSP_TS_GetState(&Position); + + if (GPIO_Pin == KEY_BUTTON_PIN) + { + //Prevent debounce effect for user key + if ((HAL_GetTick() - debounce_time) > 50) + { + debounce_time = HAL_GetTick(); + } + } + else if (GPIO_Pin == AUDIO_IN_INT_GPIO_PIN) + { + //Audio IN interrupt + } +} + +/** + * @brief Configure the MPU attributes as Write Through for SRAM1/2. + * @note The Base Address is 0x20010000 since this memory interface is the AXI. + * The Region Size is 256KB, it is related to SRAM1 and SRAM2 memory size. + * @param None + * @retval None + */ +static void MPU_Config(void) +{ + MPU_Region_InitTypeDef MPU_InitStruct; + + /* Disable the MPU */ + HAL_MPU_Disable(); + + /* Configure the MPU attributes as WT for SRAM */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.BaseAddress = 0x20010000; + MPU_InitStruct.Size = MPU_REGION_SIZE_256KB; + MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.SubRegionDisable = 0x00; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; + + HAL_MPU_ConfigRegion(&MPU_InitStruct); + + /* Enable the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); +} + +/** + * @brief CPU L1-Cache enable. + * @param None + * @retval None + */ +static void CPU_CACHE_Enable(void) +{ + /* Enable I-Cache */ + SCB_EnableICache(); + + /* Enable D-Cache */ + SCB_EnableDCache(); +} + +#ifdef USE_FULL_ASSERT + +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t* file, uint32_t line) +{ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + + /* Infinite loop */ + while (1) + { + } +} +#endif /* USE_FULL_ASSERT */ + +DAC_TypeDef *Instance; +GPIO_InitTypeDef GPIO_InitStruct; + +void DAC12_Config(void){ + Instance = DAC; + +// Could we incorporate the following in init() fn? +/* Enable GPIO clock ****************************************/ + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_DAC_CLK_ENABLE(); + + /*##-2- Configure peripheral GPIO ##########################################*/ + /* DAC Channel1 GPIO pin configuration */ + GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + Instance->CR = 0x3D; +} + +// overall initialisation function called from main function +void stm32f7_wm8994_init(uint32_t fs, int16_t io_method, int16_t select_input, int16_t select_output, int16_t headphone_gain, int16_t line_in_gain, int16_t dmic_gain, char * name, int graph) +{ + /* Configure the MPU attributes as Write Through */ + MPU_Config(); // configure the MPU attributes as write-through + CPU_CACHE_Enable(); // enable the CPU cache + HAL_Init(); + SystemClock_Config(); // configure the system clock to 200 Mhz + BSP_LED_Init(LED1); // initialise LED on GPIO pin P (also accessible on arduino header) + BSP_GPIO_Init(); // initialise diagnostic GPIO pin P (accessible on arduino header) + BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO); // configure the blue user pushbutton in GPIO mode + BSP_SDRAM_Init(); + DAC12_Config(); + init_LCD(fs, name, io_method, graph); + + switch(io_method) + { + case IO_METHOD_DMA: + + BSP_AUDIO_IN_OUT_Init(select_input, select_output, fs); + wm8994_SetVolume(AUDIO_I2C_ADDRESS, headphone_gain, line_in_gain, dmic_gain); + memset((uint16_t*)PING_IN, 0, PING_PONG_BUFFER_SIZE*4); + memset((uint16_t*)PONG_IN, 0, PING_PONG_BUFFER_SIZE*4); + memset((uint16_t*)PING_OUT, 0, PING_PONG_BUFFER_SIZE*4); + memset((uint16_t*)PONG_OUT, 0, PING_PONG_BUFFER_SIZE*4); + BSP_AUDIO_IN_MultiBufferRecord((uint16_t*)PING_IN, (uint16_t*)PONG_IN, PING_PONG_BUFFER_SIZE*2); + BSP_AUDIO_OUT_MultiBufferPlay((uint16_t*)PING_OUT, (uint16_t*)PONG_OUT, PING_PONG_BUFFER_SIZE*2); + break; + + case IO_METHOD_INTR: + BSP_AUDIO_IN_OUT_Init_SAIinterrupt(select_input, select_output, fs); + wm8994_SetVolume(AUDIO_I2C_ADDRESS, headphone_gain, line_in_gain, dmic_gain); + BSP_AUDIO_OUT_SetAudioFrameSlot(CODEC_AUDIOFRAME_SLOT_02); // may be redundant for intr version DSR 29 May 2017 NO!! 19 June + BSP_AUDIO_SAI_INTERRUPT_INIT(&rx_sample_L, &rx_sample_R, &tx_sample_L, &tx_sample_R); + break; + + default: + break; + } +} + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7xx_it.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7xx_it.c new file mode 100644 index 0000000..7035650 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/stm32f7xx_it.c @@ -0,0 +1,283 @@ +/** + ****************************************************************************** + * @file BSP/Src/stm32f7xx_it.c + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief Main Interrupt Service Routines. + * This file provides template for all exceptions handler and + * peripherals interrupt service routine. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f7xx_it.h" + + +/** @addtogroup STM32F7xx_HAL_Examples + * @{ + */ + +/** @addtogroup BSP + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +extern DMA_HandleTypeDef hdma; +/*DMA status declared in "sdram_dma.c" file */ +extern uint32_t uwDMA_Transfer_Complete; +/* SAI handler declared in "stm32746g_discovery_audio.c" file */ +extern SAI_HandleTypeDef haudio_out_sai; +/* SAI handler declared in "stm32746g_discovery_audio.c" file */ +extern SAI_HandleTypeDef haudio_in_sai; +/* SDRAM handler declared in "stm32746g_discovery_sdram.c" file */ +extern SDRAM_HandleTypeDef sdramHandle; +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************/ +/* Cortex-M7 Processor Exceptions Handlers */ +/******************************************************************************/ + +/** + * @brief This function handles NMI exception. + * @param None + * @retval None + */ +void NMI_Handler(void) +{ +} + +/** + * @brief This function handles Hard Fault exception. + * @param None + * @retval None + */ +void HardFault_Handler(void) +{ + /* Go to infinite loop when Hard Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Memory Manage exception. + * @param None + * @retval None + */ +void MemManage_Handler(void) +{ + /* Go to infinite loop when Memory Manage exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Bus Fault exception. + * @param None + * @retval None + */ +void BusFault_Handler(void) +{ + /* Go to infinite loop when Bus Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Usage Fault exception. + * @param None + * @retval None + */ +void UsageFault_Handler(void) +{ + /* Go to infinite loop when Usage Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles SVCall exception. + * @param None + * @retval None + */ +void SVC_Handler(void) +{ +} + +/** + * @brief This function handles Debug Monitor exception. + * @param None + * @retval None + */ +void DebugMon_Handler(void) +{ +} + +/** + * @brief This function handles PendSVC exception. + * @param None + * @retval None + */ +void PendSV_Handler(void) +{ +} + +/** + * @brief This function handles SysTick Handler. + * @param None + * @retval None + */ +void SysTick_Handler(void) +{ + HAL_IncTick(); +} + +/******************************************************************************/ +/* STM32F7xx Peripherals Interrupt Handlers */ +/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ +/* available peripheral interrupt handler's name please refer to the startup */ +/* file (startup_stm32f7xx.s). */ +/******************************************************************************/ + + + +/** + * @brief This function handles External line 1 interrupt request. + * @param None + * @retval None + */ +void EXTI0_IRQHandler(void) +{ + HAL_GPIO_EXTI_IRQHandler(WAKEUP_BUTTON_PIN); +} + +/** + * @brief This function handles External line 2 interrupt request. + * @param None + * @retval None + */ +void EXTI2_IRQHandler(void) +{ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); +} + +/** + * @brief This function handles External line 15_10 interrupt request. + * @param None + * @retval None + */ +void EXTI15_10_IRQHandler(void) +{ + /* Interrupt handler shared between SD_DETECT pin, USER_KEY button and touch screen interrupt */ + if (__HAL_GPIO_EXTI_GET_IT(SD_DETECT_PIN) != RESET) + { + HAL_GPIO_EXTI_IRQHandler(SD_DETECT_PIN | TS_INT_PIN | AUDIO_IN_INT_GPIO_PIN); /* SD detect event or touch screen interrupt */ + } + else + { /* User button event or Touch screen interrupt */ + HAL_GPIO_EXTI_IRQHandler(KEY_BUTTON_PIN); + } +} + +/** + * @brief This function handles DMA2 Stream 7 interrupt request. + * @param None + * @retval None + */ +void AUDIO_IN_SAIx_DMAx_IRQHandler(void) +{ + HAL_DMA_IRQHandler(haudio_in_sai.hdmarx); +} + +/** + * @brief Handles SDRAM DMA transfer interrupt request. + * @retval None + */ +void BSP_SDRAM_DMA_IRQHandler(void) +{ + HAL_DMA_IRQHandler(sdramHandle.hdma); +} + +/** + * @brief DMA interrupt handler. + * @param None + * @retval None + */ +void DMA2_Stream1_IRQHandler(void) +{ + BSP_CAMERA_DMA_IRQHandler(); +} + +/** + * @brief This function handles DMA2 Stream 6 interrupt request. + * @param None + * @retval None + */ +void AUDIO_OUT_SAIx_DMAx_IRQHandler(void) +{ + HAL_DMA_IRQHandler(haudio_out_sai.hdmatx); +} + +/** + * @brief DCMI interrupt handler. + * @param None + * @retval None + */ +void DCMI_IRQHandler(void) +{ +} + + +// added 29 May 2017 DSR +void SAI2_IRQHandler(void) +{ + + HAL_SAI_IRQHandler(&haudio_in_sai, &haudio_out_sai); +} + + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/system_stm32f7xx.c b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/system_stm32f7xx.c new file mode 100644 index 0000000..3d88702 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/Src/system_stm32f7xx.c @@ -0,0 +1,433 @@ +/** + ****************************************************************************** + * @file system_stm32f7xx.c + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f7xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f7xx_system + * @{ + */ + +/** @addtogroup STM32F7xx_System_Private_Includes + * @{ + */ + +#include "stm32f7xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to use external SDRAM mounted + on DK as data memory */ +/* #define DATA_IN_ExtSDRAM */ + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Variables + * @{ + */ + + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = 16000000; + const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes + * @{ + */ +#if defined (DATA_IN_ExtSDRAM) + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSDRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemFrequency variable. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000; + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x24003010; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Disable all interrupts */ + RCC->CIR = 0x00000000; + +#if defined (DATA_IN_ExtSDRAM) + SystemInit_ExtMemCtl(); +#endif /* DATA_IN_ExtSDRAM */ + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM1_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f7xx.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f7xx.h file (default value + * 25 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock source */ + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + SYSCLK = PLL_VCO / PLL_P + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; + pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + + if (pllsource != 0) + { + /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + + pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; + SystemCoreClock = pllvco/pllp; + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + /* Compute HCLK frequency --------------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK frequency */ + SystemCoreClock >>= tmp; +} + +#if defined (DATA_IN_ExtSDRAM) +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f7xx.s before jump to main. + * This function configures the external memories (SDRAM) + * This SDRAM will be used as program data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + register uint32_t tmpreg = 0, timeout = 0xFFFF; + register __IO uint32_t index; + + /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG and GPIOH interface + clock */ + RCC->AHB1ENR |= 0x000000FC; + + /* Connect PCx pins to FMC Alternate function */ + GPIOC->AFR[0] = 0x0000C000; + GPIOC->AFR[1] = 0x00000000; + /* Configure PCx pins in Alternate function mode */ + GPIOC->MODER = 0x00000080; + /* Configure PCx pins speed to 50 MHz */ + GPIOC->OSPEEDR = 0x00000080; + /* Configure PCx pins Output type to push-pull */ + GPIOC->OTYPER = 0x00000000; + /* No pull-up, pull-down for PCx pins */ + GPIOC->PUPDR = 0x00000040; + + /* Connect PDx pins to FMC Alternate function */ + GPIOD->AFR[0] = 0x000000CC; + GPIOD->AFR[1] = 0xCC000CCC; + /* Configure PDx pins in Alternate function mode */ + GPIOD->MODER = 0xA02A000A; + /* Configure PDx pins speed to 50 MHz */ + GPIOD->OSPEEDR = 0xA02A000A; + /* Configure PDx pins Output type to push-pull */ + GPIOD->OTYPER = 0x00000000; + /* No pull-up, pull-down for PDx pins */ + GPIOD->PUPDR = 0x50150005; + + /* Connect PEx pins to FMC Alternate function */ + GPIOE->AFR[0] = 0xC00000CC; + GPIOE->AFR[1] = 0xCCCCCCCC; + /* Configure PEx pins in Alternate function mode */ + GPIOE->MODER = 0xAAAA800A; + /* Configure PEx pins speed to 50 MHz */ + GPIOE->OSPEEDR = 0xAAAA800A; + /* Configure PEx pins Output type to push-pull */ + GPIOE->OTYPER = 0x00000000; + /* No pull-up, pull-down for PEx pins */ + GPIOE->PUPDR = 0x55554005; + + /* Connect PFx pins to FMC Alternate function */ + GPIOF->AFR[0] = 0x00CCCCCC; + GPIOF->AFR[1] = 0xCCCCC000; + /* Configure PFx pins in Alternate function mode */ + GPIOF->MODER = 0xAA800AAA; + /* Configure PFx pins speed to 50 MHz */ + GPIOF->OSPEEDR = 0xAA800AAA; + /* Configure PFx pins Output type to push-pull */ + GPIOF->OTYPER = 0x00000000; + /* No pull-up, pull-down for PFx pins */ + GPIOF->PUPDR = 0x55400555; + + /* Connect PGx pins to FMC Alternate function */ + GPIOG->AFR[0] = 0x00CC00CC; + GPIOG->AFR[1] = 0xC000000C; + /* Configure PGx pins in Alternate function mode */ + GPIOG->MODER = 0x80020A0A; + /* Configure PGx pins speed to 50 MHz */ + GPIOG->OSPEEDR = 0x80020A0A; + /* Configure PGx pins Output type to push-pull */ + GPIOG->OTYPER = 0x00000000; + /* No pull-up, pull-down for PGx pins */ + GPIOG->PUPDR = 0x40010505; + + /* Connect PHx pins to FMC Alternate function */ + GPIOH->AFR[0] = 0x00C0C000; + GPIOH->AFR[1] = 0x00000000; + /* Configure PHx pins in Alternate function mode */ + GPIOH->MODER = 0x00000880; + /* Configure PHx pins speed to 50 MHz */ + GPIOH->OSPEEDR = 0x00000880; + /* Configure PHx pins Output type to push-pull */ + GPIOH->OTYPER = 0x00000000; + /* No pull-up, pull-down for PHx pins */ + GPIOH->PUPDR = 0x00000440; + + /* Enable the FMC interface clock */ + RCC->AHB3ENR |= 0x00000001; + + /* Configure and enable SDRAM bank1 */ + FMC_Bank5_6->SDCR[0] = 0x00001954; + FMC_Bank5_6->SDTR[0] = 0x01115351; + + /* SDRAM initialization sequence */ + /* Clock enable command */ + FMC_Bank5_6->SDCMR = 0x00000011; + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Delay */ + for (index = 0; index<1000; index++); + + /* PALL command */ + FMC_Bank5_6->SDCMR = 0x00000012; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Auto refresh command */ + FMC_Bank5_6->SDCMR = 0x000000F3; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* MRD register program */ + FMC_Bank5_6->SDCMR = 0x00044014; + timeout = 0xFFFF; + while((tmpreg != 0) && (timeout-- > 0)) + { + tmpreg = FMC_Bank5_6->SDSR & 0x00000020; + } + + /* Set refresh count */ + tmpreg = FMC_Bank5_6->SDRTR; + FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1)); + + /* Disable write protection */ + tmpreg = FMC_Bank5_6->SDCR[0]; + FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); +} +#endif /* DATA_IN_ExtSDRAM */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/readme.txt b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/readme.txt new file mode 100644 index 0000000..452bf67 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/DSP Education Kit/readme.txt @@ -0,0 +1,167 @@ +/** + @page BSP Example on how to use the BSP drivers + + @verbatim + ******************** (C) COPYRIGHT 2016 STMicroelectronics ******************* + * @file BSP/readme.txt + * @author MCD Application Team + * @version V1.1.0 + * @date 30-December-2016 + * @brief Description of the BSP example. + ****************************************************************************** + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + @endverbatim + +@par Example Description + +This example provides a description of how to use the different BSP drivers. + +At the beginning of the main program the HAL_Init() function is called to reset +all the peripherals, initialize the Flash interface and the systick. +Then the SystemClock_Config() function is used to configure the system clock +(SYSCLK) to run at 200 MHz and provide 50 MHz at the output PLL divided by PLL_Q. +This frequency permit to reach 25 Mhz clock needed for SD operation and in line +with microSD specification. + +This example shows how to use the different functionalities of LCD, SD card, +touchscreen, camera and external memories (SDRAM, QSPI flash) by switching +between all tests using key button. + +1st test : LCD test. This example shows how to use the different LCD features to display string +with different fonts, to display different shapes and to draw a bitmap. + +2nd test : touchscreen test. This example shows touchscreen capabilities. It's a capacitive +touchscreen which supports up to 5 finger touch. The example fills some drawn circle according +to touch position and touch pressure. It displays the coordinates of up to 5 detected touchs. + +3rd test : audio record test. This example shows how to record an audio file through the SAI peripheral +using the external codec WM8994 implemented on the STM32746G-Discovery board. The SAI input +clock, provided by a dedicated PLL (PLLI2S), is configured to have an audio sampling +frequency at 16 KHz. The test records an audio sample from MEMs microphones (U19 and U20) for 8 seconds +and playback it right after to the headphones connected to CN10 audio jack connector. + +4th test : audio loopback test. This example shows how to acquire sound from microphones and playback +it in parallel on headphones. + +5th test : audio playback test. This example shows how to play an audio file through the SAI peripheral +using the external codec WM8994 implemented on the STM32746G-Discovery board. The SAI input +clock, provided by a dedicated PLL (PLLI2S), is configured to have an audio sampling +frequency at 48 KHz. The audio data is stored in the internal flash memory (Stereo, +16-bit, 48 KHz). +@Note: Copy file 'audio_sample_tdm.bin' (available in Binary) directly in + the flash at @0x08080000 using ST-Link utility + +6th test : SD test. This example shows how to erase, write and read the SD card and also +how to detect the presence of the card. + +7th test : LCD log test. This example shows how to use the LCD log features. + +8th test : SDRAM test. This example provides of how to write, read and buffers compare +for external SDRAM memory. + +9th test : EEPROM test. This example shows how to read and write data in RF EEPROM. The I2C EEPROM +memory (M24LR64) is available on separate daughter board ANT7-M24LR-A, which is not +provided with the STM32746G-Discovery board. To use this driver you have to connect the +ANT7-M24LR-A to CN1 connector of STM32746G-Discovery board. + +10th test : QSPI test. This example provides of how to write, read and buffers compare +for external flash memory using QSPI communication. + +@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds) + based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from + a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower) + than the peripheral interrupt. Otherwise the caller ISR process will be blocked. + To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function. + +@note The application need to ensure that the SysTick time base is always set to 1 millisecond + to have correct HAL operation. + +@note The STM32F7xx devices can reach a maximum clock frequency of 216MHz but as this example uses SDRAM, + the system clock is limited to 200MHz. Indeed proper functioning of the SDRAM is only guaranteed + at a maximum system clock frequency of 200MHz. + +@par Keywords + +BSP, LCD, Touchscreen, PSRAM, DMA, QSPI, Erase, Read, Write, Audio play, Record, MEMS, Audio Codec, DFSDM, +I2S, Microphone, Headphones + +@Note If the user code size exceeds the DTCM-RAM size or starts from internal cacheable memories (SRAM1 and SRAM2), + it is recommended to configure the latters as Write Through. + This is ensured by configuring the memory attributes at MPU level in order to ensure cache coherence on SRAM1 and SRAM2. + Please, refer to Template project for a typical MPU configuration. + +@Note If external memory is shared between several processors, it is recommended to configure it as Write Back (bufferable), shareable and cacheable. + The memory base address and size must be properly updated. + The user needs to manage the cache coherence at application level. + +For more details about the MPU configuration and use, please refer to AN4838 Managing memory protection unit (MPU) in STM32 MCUs + +@par Directory contents + + - BSP/Src/main.c Main program + - BSP/Src/system_stm32f7xx.c STM32F7xx system clock configuration file + - BSP/Src/stm32f7xx_it.c Interrupt handlers + - BSP/Src/lcd.c LCD drawing features + - BSP/Src/log.c LCD Log firmware functions + - BSP/Src/sdram.c SDRAM features + - BSP/Src/sdram_dma.c SDRAM using DMA features + - BSP/Src/qspi.c QSPI features + - BSP/Src/eeprom.c EEPROM features + - BSP/Src/audio_play.c Audio playback features + - BSP/Src/audio_rec.c Audio record features + - BSP/Src/touchscreen.c Touchscreen feature + - BSP/Inc/main.h Main program header file + - BSP/Inc/stm32f7xx_hal_conf.h HAL configuration file + - BSP/Inc/stm32f7xx_it.h Interrupt handlers header file + - BSP/Inc/lcd_log_conf.h lcd_log configuration template file + - BSP/Inc/stlogo.h Image used for BSP example + + +@par Hardware and Software environment + + - This example runs on STM32F746xx devices. + + - This example has been tested with STMicroelectronics STM32746G-Discovery + evaluation boards and can be easily tailored to any other supported device + and development board. + +@par How to use it ? + + - Use STLink utility, available on www.st.com or any other in system programming + tool to load "BSP/Binary/audio_sample_tdm.bin" file to the STM32 internal flash + at the address 0x08080000. + +In order to make the program work, you must do the following : + - Open your preferred toolchain + - Rebuild all files and load your image into target memory + - Run the example + @note Make sure that the tool flash loader does not erase or overwrite the + loaded audio file at address 0x08080000 by limiting the application + end address to 0x0807FFFF. This is already done for the example project + - Connect a headphone and a speaker to the audio jack connectors (CN10). + + *

© COPYRIGHT STMicroelectronics

+ */ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/DSP_Getting_Started_Guide.docx b/STM32F746G Discovery board/contents/Module_1/Lab/DSP_Getting_Started_Guide.docx new file mode 100644 index 0000000..87478c7 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_1/Lab/DSP_Getting_Started_Guide.docx differ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_complex.m b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_complex.m new file mode 100644 index 0000000..7179e98 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_complex.m @@ -0,0 +1,66 @@ +% STM32F7_BAR_COMPLEX.M +% +% +% MATLAB function to read complex values saved from STM32F7 +% memory using Keil uvision 5 and plot as bar graphs +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function stm32f7_bar_complex() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + +% read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','complex data read from the microcontroller memory in Keil uVision 5') +subplot(2,1,1); +bar(0:(N/2-1),memdata(1:2:N),0.6); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); +xlim([0,N/2]); + +subplot(2,1,2); +bar(0:(N/2-1),memdata(2:2:N),0.2); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('imaginary','FontSize',12,'FontName','times'); +xlim([0,N/2]); \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_real.m b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_real.m new file mode 100644 index 0000000..232cef6 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_bar_real.m @@ -0,0 +1,59 @@ +% STM32F7_BAR_REAL.M +% +% MATLAB function to plot real +% floating point values read from a microcontroller +% memory using Keil uvision 5. +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_real() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','real data read from the microcontroller memory in Keil uVision 5') +%plot(0:(floatcount-1),memdata(1:1:floatcount)/2,'LineWidth',2.0); +bar(0:(floatcount-1),memdata(1:1:floatcount),0.2); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); +xlim([0,N]) \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_fir_coeffs.m b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_fir_coeffs.m new file mode 100644 index 0000000..0344a83 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_fir_coeffs.m @@ -0,0 +1,40 @@ +% STM32F7_FIR_COEFFS.M +% MATLAB function to write FIR filter coefficients +% in format suitable for use in STM32F7 Discovery board programs +% stm32f7_fir_intr.c and stm32f7_fir_prbs_intr.c +% written by Donald Reay +% + +function stm32f7_fir_coeffs(coeff) + +coefflen=length(coeff); +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using '); +fprintf(fid,'function stm32f7_fir_coeffs.m\n'); +fprintf(fid,'\n#define N %d\n',coefflen); +fprintf(fid,'\nfloat32_t h[N] = { \n'); +% j is used to count coefficients written to current line +% in output file +j=0; +% i is used to count through coefficients +for i=1:coefflen +% if six coeffs have been written to current line +% then start new line + if j>5 + j=0; + fprintf(fid,'\n'); + end +% if this is the last coefficient then simply write +% its value to the current line +% else write coefficient value, followed by comma + if i==coefflen + fprintf(fid,'%2.4E',coeff(i)); + else + fprintf(fid,'%2.4E,',coeff(i)); + j=j+1; + end +end +fprintf(fid,'\n};\n'); +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_iirsos_coeffs.m b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_iirsos_coeffs.m new file mode 100644 index 0000000..4e45343 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_iirsos_coeffs.m @@ -0,0 +1,50 @@ +% STM32F7_IIRSOS_COEFFS.M +% +% MATLAB function to write SOS IIR filter coefficients +% in format suitable for use in STM32F7 DSP Education Kit programs +% including stm32f7_iirsos_intr.c, stm32f7_iirsos_prbs_intr.c and +% stm32f7_iirsos_delta_intr.c +% assumes that coefficients have been exported from +% fdatool as two matrices +% first matrix has format +% [ b10 b11 b12 a10 a11 a12 +% b20 b21 b22 a20 a21 a22 +% ... +% ] +% where bij is the bj coefficient in the ith stage +% second matrix contains gains for each stage +% +function iirsos_coeffs(coeff,gain) +% +num_sections=length(gain)-1; +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using'); +fprintf(fid,'\n// function stm32f7_iirsos_coeffs.m\n',fname); +fprintf(fid,'\n#define NUM_SECTIONS %d\n',num_sections); +% first write the numerator coefficients b +% i is used to count through sections +fprintf(fid,'\nfloat b[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + end +end +% then write the denominator coefficients a +% i is used to count through sections +fprintf(fid,'\nfloat a[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + end +end +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_logfft.m b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_logfft.m new file mode 100644 index 0000000..a646904 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/General_Matlab_Files/stm32f7_logfft.m @@ -0,0 +1,84 @@ +% STM32F7_LOGFFT.M +% +% MATLAB function to read (sample) values saved from STM32F7 +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function stm32f7_logfft() + +fname = input('enter filename ','s'); +fs = input('enter sampling frequency in Hz '); +xscale = input('linear (0) or log (1) frequency scale? '); +reverse_coeffs = input('original (0) or reverse (1) order of time-domain samples?'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + mydata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +if reverse_coeffs == 1 + for i=1:N + mydatar(i) = mydata(N-i+1); + end + mydata = mydatar; +end +g = abs(fft(mydata)); +ff = 0:fs/N:(fs/2-fs/N); +figure(1) +set(gcf,'numberTitle','off') +set(gcf,'name','data read from STM32F7 memory in Keil uVision 5 - freq domain') +plot(ff,20*log10(g(1:(N/2))),'LineWidth',2.0); +grid on +xlabel('frequency (Hz)','FontSize',12,'FontName','times'); +ylabel('magnitude (dB)','FontSize',12,'FontName','times'); +if xscale == 1 + set(gca,'FontSize',12,'XScale','log','FontName','times'); +else + set(gca,'FontSize',12,'XScale','lin','FontName','times'); +end +tt = 0:1/fs:(N-1)/fs; +figure(2) +set(gcf,'numberTitle','off') +set(gcf,'name','data read from STM32F7 memory in Keil uVision 5 - time domain') +str = [num2str(N),' sample values read from file']; +disp(str); +% PTS = input('enter number of sample values to plot '); +PTS = N; +plot(tt(1:PTS),mydata(1:PTS),'LineWidth',2.0); +grid on +xlabel('time (s)','FontSize',12,'FontName','times'); +ylabel('sample value','FontSize',12,'FontName','times'); +set(gca,'FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..a83810f Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/fir_coeffs.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/fir_coeffs.m new file mode 100644 index 0000000..0afc9d7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/fir_coeffs.m @@ -0,0 +1,40 @@ +% FIR_COEFFS.M +% MATLAB function to write FIR filter coefficients +% in format suitable for use in DSP LiB programs +% fir_intr.c and fir_prbs_intr.c +% written by Donald Reay +% + +function fir_coeffs(coeff) + +coefflen=length(coeff); +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using '); +fprintf(fid,'function fir_coeffs.m\n'); +fprintf(fid,'\n#define N %d\n',coefflen); +fprintf(fid,'\nfloat32_t h[N] = { \n'); +% j is used to count coefficients written to current line +% in output file +j=0; +% i is used to count through coefficients +for i=1:coefflen +% if six coeffs have been written to current line +% then start new line + if j>5 + j=0; + fprintf(fid,'\n'); + end +% if this is the last coefficient then simply write +% its value to the current line +% else write coefficient value, followed by comma + if i==coefflen + fprintf(fid,'%2.4E',coeff(i)); + else + fprintf(fid,'%2.4E,',coeff(i)); + j=j+1; + end +end +fprintf(fid,'\n};\n'); +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/hexsingle2num.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/hexsingle2num.m new file mode 100644 index 0000000..ced5e87 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/hexsingle2num.m @@ -0,0 +1,98 @@ +function x = hexsingle2num(s) +%HEXSINGLE2NUM Convert single precision IEEE hexadecimal string to number. +% HEXSINGLE2NUM(S), where S is a 8 character string containing +% a hexadecimal number, returns a double type number +% equal to the IEEE single precision +% floating point number it represents. Fewer than 8 +% characters are padded on the right with zeros. +% +% If S is a character array, each row is interpreted as a single +% precision number (and returned as a double). +% +% NaNs, infinities and denorms are handled correctly. +% +% Example: +% hexsingle2num('40490fdb') returns Pi. +% hexsingle2num('bf8') returns -1. +% +% See also HEX2NUM. + +% Based on Matlab's hex2num. +% Note: IEEE Standard 754 for floating point numbers +% +% Floating point numbers are represented as: +% x = +/- (1+f)*2^e +% +% doubles: 64 bits +% Bit 63 (1 bit) = sign (0=positive, 1=negative) +% Bit 62 to 52 (11 bits)= exponent biased by 1023 +% Bit 51 to 0 (52 bits)= fraction f of the number 1.f +% singles: 32 bits +% Bit 31 (1 bit) = sign (0=positive, 1=negative) +% Bit 30 to 23 (8 bits) = exponent biased by 127 +% Bit 22 to 0 (23 bits)= fraction f of the number 1.f + +% 21 June 2005 Fixed bug with underflow. +% Bug found by Matthias Noell (matthias.noell@heidelberg.com) + +if iscellstr(s), s = char(s); end +if ~ischar(s) + error('Input to hexsingle2num must be a string.') +end +if isempty(s), x = []; return, end + +[row,col] = size(s); +blanks = find(s==' '); % Find the blanks at the end +if ~isempty(blanks), s(blanks) = '0'; end % Zero pad the shorter hex numbers. + +% Convert characters to numeric digits. +% More than 8 characters are ignored +% For double: d = zeros(row,16); +d = zeros(row,8); +d(:,1:col) = abs(lower(s)) - '0'; +d = d + ('0'+10-'a').*(d>9); +neg = d(:,1) > 7; +d(:,1) = d(:,1)-8*neg; + +if any(d > 15) | any(d < 0) + error('Input string to hexsingle2num should have just 0-9, a-f, or A-F.') +end + +% Floating point exponent. +% For double: e = 16*(16*(d(:,1)-4) + d(:,2)) + d(:,3) + 1; +% For double: e = 256*d(:,1) + 16*d(:,2) + d(:,3) - 1023; +expBit = (d(:,3) > 7); +e = 32*d(:,1) + 2*d(:,2) + expBit - 127; +d(:,3) = d(:,3)-8*expBit; % Remove most sig. bit of d(:,3) which belongs to exponent + +% Floating point fraction. +% For double: sixteens = [16;256;4096;65536;1048576;16777216;268435456]; +% For double: sixteens2 = 268435456*sixteens(1:6); +% For double: multiplier = 1./[sixteens;sixteens2]; +% For double: f = d(:,4:16)*multiplier; +sixteens = [16;256;4096;65536;1048576;16777216]; +multiplier = 2./[sixteens]; +f = d(:,3:8)*multiplier; + +x = zeros(row,1); +% Scale the fraction by 2 to the exponent. +% For double: overinf = find((e>1023) & (f==0)); +overinf = find((e>127) & (f==0)); +if ~isempty(overinf), x(overinf) = inf; end + +% For double: overNaN = find((e>1023) & (f~=0)); +overNaN = find((e>127) & (f~=0)); +if ~isempty(overNaN), x(overNaN) = NaN; end + +% For double: underflow = find(e<-1022); +underflow = find(e<-126); +if ~isempty(underflow), x(underflow) = pow2(f(underflow),-126); end + +% For double: allothers = find((e<=1023) & (e>=-1022)); +allothers = find((e<=127) & (e>=-126)); +if ~isempty(allothers), x(allothers) = pow2(1+f(allothers),e(allothers)); end + +negatives = find(neg); +if ~isempty(negatives), x(negatives) = -x(negatives); end + + diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/iirsos_coeffs.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/iirsos_coeffs.m new file mode 100644 index 0000000..622b66f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/iirsos_coeffs.m @@ -0,0 +1,50 @@ +% IIRSOS_COEFFS.M +% +% MATLAB function to write SOS IIR filter coefficients +% in format suitable for use in DSP LiB programs +% including iirsos_intr.c, iirsosprn_intr.c and +% iirsosdelta_intr.c +% assumes that coefficients have been exported from +% fdatool as two matrices +% first matrix has format +% [ b10 b11 b12 a10 a11 a12 +% b20 b21 b22 a20 a21 a22 +% ... +% ] +% where bij is the bj coefficient in the ith stage +% second matrix contains gains for each stage +% +function iirsos_coeffs(coeff,gain) +% +num_sections=length(gain)-1; +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using'); +fprintf(fid,'\n// function iirsos_coeffs.m\n',fname); +fprintf(fid,'\n#define NUM_SECTIONS %d\n',num_sections); +% first write the numerator coefficients b +% i is used to count through sections +fprintf(fid,'\nfloat b[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + end +end +% then write the denominator coefficients a +% i is used to count through sections +fprintf(fid,'\nfloat a[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + end +end +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/logfft.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/logfft.m new file mode 100644 index 0000000..5de9dce --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/logfft.m @@ -0,0 +1,74 @@ +% LOGFFT.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function logfft() + +fname = input('enter filename ','s'); +fs = input('enter sampling frequency in Hz '); +xscale = input('linear (0) or log (1) frequency scale? '); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + mydata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +g = abs(fft(mydata)); +ff = 0:fs/N:(fs/2-fs/N); +figure(1) +plot(ff,20*log10(g(1:(N/2))),'LineWidth',2.0); +grid on +xlabel('frequency (Hz)','FontSize',12,'FontName','times'); +ylabel('magnitude (dB)','FontSize',12,'FontName','times'); +if xscale == 1 + set(gca,'FontSize',12,'XScale','log','FontName','times'); +else + set(gca,'FontSize',12,'XScale','lin','FontName','times'); +end +tt = 0:1/fs:(N-1)/fs; +figure(2) +str = [num2str(N),' sample values read from file']; +disp(str); +% PTS = input('enter number of sample values to plot '); +PTS = N; +plot(tt(1:PTS),mydata(1:PTS),'LineWidth',2.0); +grid on +xlabel('time (s)','FontSize',12,'FontName','times'); +ylabel('sample value','FontSize',12,'FontName','times'); +set(gca,'FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_complex.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_complex.m new file mode 100644 index 0000000..09cd911 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_complex.m @@ -0,0 +1,63 @@ +% PLOT_COMPLEX.M +% +% +% MATLAB function to read (sample) values saved from STM32F4 +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_complex() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + +% read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','complex data read from the microcontroller memory in Keil uVision 5') +subplot(2,1,1); +plot(0:(N/2-1),memdata(1:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); +subplot(2,1,2); +plot(0:(N/2-1),memdata(2:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('imaginary','FontSize',12,'FontName','times'); \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_int16.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_int16.m new file mode 100644 index 0000000..6b29f59 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_int16.m @@ -0,0 +1,62 @@ +% PLOT_INT16.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot them +% data should be 16-bit integer saved in Intel hex format file +% + +function plot_int16() + +fname = input('enter filename ','s'); +plot_option = input('line (0) or bar (1) graph? '); +fid = fopen(fname,'rt'); +int16count = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +% process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 16-bit integer values on current line + % equal to number of bytes of data on current line divided by two + % as indicated by first two hex digits + num16bitvalues = hex2dec(fscanf(fid,'%c',2))/2; + % read and discard next 6 characters (hex digits) + % indicating address and record type + fscanf(fid,'%c',6); + if (num16bitvalues > 0) + for i=1:num16bitvalues + % read 4 character hex string and convert to decimal + hexstring = fscanf(fid,'%c',4); + reordered(1) = hexstring(3); + reordered(2) = hexstring(4); + reordered(3) = hexstring(1); + reordered(4) = hexstring(2); + memdata(int16count+1)= hex2dec(reordered); + % hex2dec assumes unsigned 16-bit integer + % alter result assuming data is signed 16-bit integer + if (memdata(int16count+1) > 32767) + memdata(int16count+1) = memdata(int16count+1)-65536; + end + % update total number of integers read from file + int16count = int16count+1; + end + else + finished = 1; + end +end +end +fclose(fid); +set(gcf,'numberTitle','off') +set(gcf,'name','int16 data read from the microcontroller memory in Keil uVision 5') +if (plot_option == 0) + plot(0:(int16count-1),memdata(1:1:int16count)/2,'LineWidth',2.0); +else + bar(0:(int16count-1),memdata(1:1:int16count)/2,0.2); +end +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('magnitude','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_real.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_real.m new file mode 100644 index 0000000..5af48ec --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/plot_real.m @@ -0,0 +1,57 @@ +% PLOT_REAL.M +% +% MATLAB function to plot real +% floating point values read from a microcontroller +% memory using Keil uvision 5. +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_real() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','real data read from the microcontroller memory in Keil uVision 5') +plot(0:(floatcount-1),memdata(1:1:floatcount)/2,'LineWidth',2.0); +%bar(0:(floatcount-1),memdata(1:1:floatcount)/2,0.2);grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/stm32f7_logfft.m b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/stm32f7_logfft.m new file mode 100644 index 0000000..a646904 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files/stm32f7_logfft.m @@ -0,0 +1,84 @@ +% STM32F7_LOGFFT.M +% +% MATLAB function to read (sample) values saved from STM32F7 +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function stm32f7_logfft() + +fname = input('enter filename ','s'); +fs = input('enter sampling frequency in Hz '); +xscale = input('linear (0) or log (1) frequency scale? '); +reverse_coeffs = input('original (0) or reverse (1) order of time-domain samples?'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + mydata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +if reverse_coeffs == 1 + for i=1:N + mydatar(i) = mydata(N-i+1); + end + mydata = mydatar; +end +g = abs(fft(mydata)); +ff = 0:fs/N:(fs/2-fs/N); +figure(1) +set(gcf,'numberTitle','off') +set(gcf,'name','data read from STM32F7 memory in Keil uVision 5 - freq domain') +plot(ff,20*log10(g(1:(N/2))),'LineWidth',2.0); +grid on +xlabel('frequency (Hz)','FontSize',12,'FontName','times'); +ylabel('magnitude (dB)','FontSize',12,'FontName','times'); +if xscale == 1 + set(gca,'FontSize',12,'XScale','log','FontName','times'); +else + set(gca,'FontSize',12,'XScale','lin','FontName','times'); +end +tt = 0:1/fs:(N-1)/fs; +figure(2) +set(gcf,'numberTitle','off') +set(gcf,'name','data read from STM32F7 memory in Keil uVision 5 - time domain') +str = [num2str(N),' sample values read from file']; +disp(str); +% PTS = input('enter number of sample values to plot '); +PTS = N; +plot(tt(1:PTS),mydata(1:PTS),'LineWidth',2.0); +grid on +xlabel('time (s)','FontSize',12,'FontName','times'); +ylabel('sample value','FontSize',12,'FontName','times'); +set(gca,'FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..601e88c Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid100.dat b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid100.dat new file mode 100644 index 0000000..f444b94 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid100.dat @@ -0,0 +1,28 @@ +:020000042000DA +:080848000000000000F8DC458F +:1008500000401C4600F8DC450000000000F8DCC544 +:1008600000401CC600F8DCC50000000000F8DC45B4 +:1008700000401C4600F8DC450000000000F8DCC524 +:1008800000401CC600F8DCC50000000000F8DC4594 +:1008900000401C4600F8DC450000000000F8DCC504 +:1008A00000401CC600F8DCC50000000000F8DC4574 +:1008B00000401C4600F8DC450000000000F8DCC5E4 +:1008C00000401CC600F8DCC50000000000F8DC4554 +:1008D00000401C4600F8DC450000000000F8DCC5C4 +:1008E00000401CC600F8DCC50000000000F8DC4534 +:1008F00000401C4600F8DC450000000000F8DCC5A4 +:1009000000401CC600F8DCC50000000000F8DC4513 +:1009100000401C4600F8DC450000000000F8DCC583 +:1009200000401CC600F8DCC50000000000F8DC45F3 +:1009300000401C4600F8DC450000000000F8DCC563 +:1009400000401CC600F8DCC50000000000F8DC45D3 +:1009500000401C4600F8DC450000000000F8DCC543 +:1009600000401CC600F8DCC50000000000F8DC45B3 +:1009700000401C4600F8DC450000000000F8DCC523 +:1009800000401CC600F8DCC50000000000F8DC4593 +:1009900000401C4600F8DC450000000000F8DCC503 +:1009A00000401CC600F8DCC50000000000F8DC4573 +:1009B00000401C4600F8DC450000000000F8DCC5E3 +:1009C00000401CC600F8DCC50000000000F8DC4553 +:0909D00000401C4600F8DC450063 +:00000001FF diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid256.dat b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid256.dat new file mode 100644 index 0000000..a5a7486 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/IntroductionLab/Solution/Data_files/sinusoid256.dat @@ -0,0 +1,67 @@ +:020000042000DA +:080848000000000000F8DC458F +:1008500000401C4600F8DC450000000000F8DCC544 +:1008600000401CC600F8DCC50000000000F8DC45B4 +:1008700000401C4600F8DC450000000000F8DCC524 +:1008800000401CC600F8DCC50000000000F8DC4594 +:1008900000401C4600F8DC450000000000F8DCC504 +:1008A00000401CC600F8DCC50000000000F8DC4574 +:1008B00000401C4600F8DC450000000000F8DCC5E4 +:1008C00000401CC600F8DCC50000000000F8DC4554 +:1008D00000401C4600F8DC450000000000F8DCC5C4 +:1008E00000401CC600F8DCC50000000000F8DC4534 +:1008F00000401C4600F8DC450000000000F8DCC5A4 +:1009000000401CC600F8DCC50000000000F8DC4513 +:1009100000401C4600F8DC450000000000F8DCC583 +:1009200000401CC600F8DCC50000000000F8DC45F3 +:1009300000401C4600F8DC450000000000F8DCC563 +:1009400000401CC600F8DCC50000000000F8DC45D3 +:1009500000401C4600F8DC450000000000F8DCC543 +:1009600000401CC600F8DCC50000000000F8DC45B3 +:1009700000401C4600F8DC450000000000F8DCC523 +:1009800000401CC600F8DCC50000000000F8DC4593 +:1009900000401C4600F8DC450000000000F8DCC503 +:1009A00000401CC600F8DCC50000000000F8DC4573 +:1009B00000401C4600F8DC450000000000F8DCC5E3 +:1009C00000401CC600F8DCC50000000000F8DC4553 +:1009D00000401C4600F8DC450000000000F8DCC5C3 +:1009E00000401CC600F8DCC50000000000F8DC4533 +:1009F00000401C4600F8DC450000000000F8DCC5A3 +:100A000000401CC600F8DCC50000000000F8DC4512 +:100A100000401C4600F8DC450000000000F8DCC582 +:100A200000401CC600F8DCC50000000000F8DC45F2 +:100A300000401C4600F8DC450000000000F8DCC562 +:100A400000401CC600F8DCC50000000000F8DC45D2 +:100A500000401C4600F8DC450000000000F8DCC542 +:100A600000401CC600F8DCC50000000000F8DC45B2 +:100A700000401C4600F8DC450000000000F8DCC522 +:100A800000401CC600F8DCC50000000000F8DC4592 +:100A900000401C4600F8DC450000000000F8DCC502 +:100AA00000401CC600F8DCC50000000000F8DC4572 +:100AB00000401C4600F8DC450000000000F8DCC5E2 +:100AC00000401CC600F8DCC50000000000F8DC4552 +:100AD00000401C4600F8DC450000000000F8DCC5C2 +:100AE00000401CC600F8DCC50000000000F8DC4532 +:100AF00000401C4600F8DC450000000000F8DCC5A2 +:100B000000401CC600F8DCC50000000000F8DC4511 +:100B100000401C4600F8DC450000000000F8DCC581 +:100B200000401CC600F8DCC50000000000F8DC45F1 +:100B300000401C4600F8DC450000000000F8DCC561 +:100B400000401CC600F8DCC50000000000F8DC45D1 +:100B500000401C4600F8DC450000000000F8DCC541 +:100B600000401CC600F8DCC50000000000F8DC45B1 +:100B700000401C4600F8DC450000000000F8DCC521 +:100B800000401CC600F8DCC50000000000F8DC4591 +:100B900000401C4600F8DC450000000000F8DCC501 +:100BA00000401CC600F8DCC50000000000F8DC4571 +:100BB00000401C4600F8DC450000000000F8DCC5E1 +:100BC00000401CC600F8DCC50000000000F8DC4551 +:100BD00000401C4600F8DC450000000000F8DCC5C1 +:100BE00000401CC600F8DCC50000000000F8DC4531 +:100BF00000401C4600F8DC450000000000F8DCC5A1 +:100C000000401CC600F8DCC50000000000F8DC4510 +:100C100000401C4600F8DC450000000000F8DCC580 +:100C200000401CC600F8DCC50000000000F8DC45F0 +:100C300000401C4600F8DC450000000000F8DCC560 +:090C400000401CC600F8DCC500F0 +:00000001FF diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.c b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.c new file mode 100644 index 0000000..ade72fd --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.c @@ -0,0 +1,963 @@ +/** + ****************************************************************************** + * @file stm32746g_discovery.c + * @author MCD Application Team + * Adapted for use as part of ARM University DSP Education Kit May 2017 + * @version V2.0.0 + * @date 30-December-2016 + * @brief This file provides a set of firmware functions to manage LEDs, + * push-buttons and COM ports available on STM32746G-Discovery + * board(MB1191) from STMicroelectronics. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32746g_discovery.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32746G_DISCOVERY + * @{ + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL STM32746G_DISCOVERY_LOW_LEVEL + * @{ + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_TypesDefinitions STM32746G_DISCOVERY_LOW_LEVEL Private Types Definitions + * @{ + */ +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Defines STM32746G_DISCOVERY_LOW_LEVEL Private Defines + * @{ + */ +/** + * @brief STM32746G DISCOVERY BSP Driver version number V2.0.0 + */ +#define __STM32746G_DISCO_BSP_VERSION_MAIN (0x02) /*!< [31:24] main version */ +#define __STM32746G_DISCO_BSP_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */ +#define __STM32746G_DISCO_BSP_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32746G_DISCO_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32746G_DISCO_BSP_VERSION ((__STM32746G_DISCO_BSP_VERSION_MAIN << 24)\ + |(__STM32746G_DISCO_BSP_VERSION_SUB1 << 16)\ + |(__STM32746G_DISCO_BSP_VERSION_SUB2 << 8 )\ + |(__STM32746G_DISCO_BSP_VERSION_RC)) +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Macros STM32746G_DISCOVERY_LOW_LEVEL Private Macros + * @{ + */ +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_Variables STM32746G_DISCOVERY_LOW_LEVEL Private Variables + * @{ + */ + +const uint32_t GPIO_PIN[LEDn] = {LED1_PIN}; + +GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {WAKEUP_BUTTON_GPIO_PORT, + TAMPER_BUTTON_GPIO_PORT, + KEY_BUTTON_GPIO_PORT}; + +const uint16_t BUTTON_PIN[BUTTONn] = {WAKEUP_BUTTON_PIN, + TAMPER_BUTTON_PIN, + KEY_BUTTON_PIN}; + +const uint16_t BUTTON_IRQn[BUTTONn] = {WAKEUP_BUTTON_EXTI_IRQn, + TAMPER_BUTTON_EXTI_IRQn, + KEY_BUTTON_EXTI_IRQn}; + +USART_TypeDef* COM_USART[COMn] = {DISCOVERY_COM1}; + +GPIO_TypeDef* COM_TX_PORT[COMn] = {DISCOVERY_COM1_TX_GPIO_PORT}; + +GPIO_TypeDef* COM_RX_PORT[COMn] = {DISCOVERY_COM1_RX_GPIO_PORT}; + +const uint16_t COM_TX_PIN[COMn] = {DISCOVERY_COM1_TX_PIN}; + +const uint16_t COM_RX_PIN[COMn] = {DISCOVERY_COM1_RX_PIN}; + +const uint16_t COM_TX_AF[COMn] = {DISCOVERY_COM1_TX_AF}; + +const uint16_t COM_RX_AF[COMn] = {DISCOVERY_COM1_RX_AF}; + +static I2C_HandleTypeDef hI2cAudioHandler = {0}; +static I2C_HandleTypeDef hI2cExtHandler = {0}; + +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Private_FunctionPrototypes STM32746G_DISCOVERY_LOW_LEVEL Private Function Prototypes + * @{ + */ +static void I2Cx_MspInit(I2C_HandleTypeDef *i2c_handler); +static void I2Cx_Init(I2C_HandleTypeDef *i2c_handler); + +static HAL_StatusTypeDef I2Cx_ReadMultiple(I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length); +static HAL_StatusTypeDef I2Cx_WriteMultiple(I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length); +static HAL_StatusTypeDef I2Cx_IsDeviceReady(I2C_HandleTypeDef *i2c_handler, uint16_t DevAddress, uint32_t Trials); +static void I2Cx_Error(I2C_HandleTypeDef *i2c_handler, uint8_t Addr); + +/* AUDIO IO functions */ +void AUDIO_IO_Init(void); +void AUDIO_IO_DeInit(void); +void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value); +uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg); +void AUDIO_IO_Delay(uint32_t Delay); + +/* TOUCHSCREEN IO functions */ +void TS_IO_Init(void); +void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value); +uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg); +void TS_IO_Delay(uint32_t Delay); + +/* CAMERA IO functions */ +void CAMERA_IO_Init(void); +void CAMERA_Delay(uint32_t Delay); +void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value); +uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg); + +/* I2C EEPROM IO function */ +void EEPROM_IO_Init(void); +HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize); +HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize); +HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials); +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Functions STM32746G_DISCOVERY_LOW_LEVELSTM32746G_DISCOVERY_LOW_LEVEL Exported Functions + * @{ + */ + + /** + * @brief This method returns the STM32746G DISCOVERY BSP Driver revision + * @retval version: 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t BSP_GetVersion(void) +{ + return __STM32746G_DISCO_BSP_VERSION; +} + +/** + * @brief Configures LED on GPIO. + * @param Led: LED to be configured. + * This parameter can be one of the following values: + * @arg LED1 + * @retval None + */ +void BSP_LED_Init(Led_TypeDef Led) +{ + GPIO_InitTypeDef gpio_init_structure; + GPIO_TypeDef* gpio_led; + + if (Led == LED1) + { + gpio_led = LED1_GPIO_PORT; + /* Enable the GPIO_LED clock */ + LED1_GPIO_CLK_ENABLE(); + + /* Configure the GPIO_LED pin */ + gpio_init_structure.Pin = GPIO_PIN[Led]; + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_PULLUP; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + + HAL_GPIO_Init(gpio_led, &gpio_init_structure); + + /* By default, turn off LED */ + HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET); + } +} + +/** + * @brief DeInit LEDs. + * @param Led: LED to be configured. + * This parameter can be one of the following values: + * @arg LED1 + * @note Led DeInit does not disable the GPIO clock + * @retval None + */ +void BSP_LED_DeInit(Led_TypeDef Led) +{ + GPIO_InitTypeDef gpio_init_structure; + GPIO_TypeDef* gpio_led; + + if (Led == LED1) + { + gpio_led = LED1_GPIO_PORT; + /* Turn off LED */ + HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET); + /* Configure the GPIO_LED pin */ + gpio_init_structure.Pin = GPIO_PIN[Led]; + HAL_GPIO_DeInit(gpio_led, gpio_init_structure.Pin); + } +} + +/** + * @brief Turns selected LED On. + * @param Led: LED to be set on + * This parameter can be one of the following values: + * @arg LED1 + * @retval None + */ +void BSP_LED_On(Led_TypeDef Led) +{ + GPIO_TypeDef* gpio_led; + + if (Led == LED1) /* Switch On LED connected to GPIO */ + { + gpio_led = LED1_GPIO_PORT; + HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_SET); + } +} + +/** + * @brief Turns selected LED Off. + * @param Led: LED to be set off + * This parameter can be one of the following values: + * @arg LED1 + * @retval None + */ +void BSP_LED_Off(Led_TypeDef Led) +{ + GPIO_TypeDef* gpio_led; + + if (Led == LED1) /* Switch Off LED connected to GPIO */ + { + gpio_led = LED1_GPIO_PORT; + HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET); + } +} + +/** + * @brief Toggles the selected LED. + * @param Led: LED to be toggled + * This parameter can be one of the following values: + * @arg LED1 + * @retval None + */ +void BSP_LED_Toggle(Led_TypeDef Led) +{ + GPIO_TypeDef* gpio_led; + + if (Led == LED1) /* Toggle LED connected to GPIO */ + { + gpio_led = LED1_GPIO_PORT; + HAL_GPIO_TogglePin(gpio_led, GPIO_PIN[Led]); + } +} + +// functions to control GPIO Pin PI2 on Arduino connector +// added 22 May 2017 DSR + +void BSP_GPIO_Init(void) +{ + GPIO_InitTypeDef gpio_init_structure; + GPIO_TypeDef* gpio_pi2; + + gpio_pi2 = GPIOI; + /* Enable the GPIOI clock */ + __HAL_RCC_GPIOI_CLK_ENABLE(); + + /* Configure the GPIO pin */ + gpio_init_structure.Pin = GPIO_PIN_2; + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + + HAL_GPIO_Init(gpio_pi2, &gpio_init_structure); + + /* By default, turn off LED */ + HAL_GPIO_WritePin(gpio_pi2, GPIO_PIN_2, GPIO_PIN_RESET); +} + +void BSP_GPIO_DeInit(void) +{ + GPIO_InitTypeDef gpio_init_structure; + GPIO_TypeDef* gpio_pi2; + + gpio_pi2 = GPIOI; + /* Turn off GPIO pin PI2 */ + HAL_GPIO_WritePin(gpio_pi2, GPIO_PIN_2, GPIO_PIN_RESET); + /* Configure the GPIO pin */ + gpio_init_structure.Pin = GPIO_PIN_2; + HAL_GPIO_DeInit(gpio_pi2, gpio_init_structure.Pin); +} + +void BSP_GPIO_On(void) +{ + GPIO_TypeDef* gpio_pi2; + + gpio_pi2 = GPIOI; + HAL_GPIO_WritePin(gpio_pi2, GPIO_PIN_2, GPIO_PIN_SET); +} + +void BSP_GPIO_Off(void) +{ + GPIO_TypeDef* gpio_pi2; + + gpio_pi2 = GPIOI; + HAL_GPIO_WritePin(gpio_pi2, GPIO_PIN_2, GPIO_PIN_RESET); +} + +void BSP_GPIO_Toggle(void) +{ + GPIO_TypeDef* gpio_pi2; + + gpio_pi2 = GPIOI; + HAL_GPIO_TogglePin(gpio_pi2, GPIO_PIN_2); +} + + + + + +/** + * @brief Configures button GPIO and EXTI Line. + * @param Button: Button to be configured + * This parameter can be one of the following values: + * @arg BUTTON_WAKEUP: Wakeup Push Button + * @arg BUTTON_TAMPER: Tamper Push Button + * @arg BUTTON_KEY: Key Push Button + * @param ButtonMode: Button mode + * This parameter can be one of the following values: + * @arg BUTTON_MODE_GPIO: Button will be used as simple IO + * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line + * with interrupt generation capability + * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons) + * are mapped on the same push button named "User" + * on the board serigraphy. + * @retval None + */ +void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Enable the BUTTON clock */ + BUTTONx_GPIO_CLK_ENABLE(Button); + + if(ButtonMode == BUTTON_MODE_GPIO) + { + /* Configure Button pin as input */ + gpio_init_structure.Pin = BUTTON_PIN[Button]; + gpio_init_structure.Mode = GPIO_MODE_INPUT; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); + } + + if(ButtonMode == BUTTON_MODE_EXTI) + { + /* Configure Button pin as input with External interrupt */ + gpio_init_structure.Pin = BUTTON_PIN[Button]; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + + if(Button != BUTTON_WAKEUP) + { + gpio_init_structure.Mode = GPIO_MODE_IT_FALLING; + } + else + { + gpio_init_structure.Mode = GPIO_MODE_IT_RISING; + } + + HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); + + /* Enable and set Button EXTI Interrupt to the lowest priority */ + HAL_NVIC_SetPriority((IRQn_Type)(BUTTON_IRQn[Button]), 0x0F, 0x00); + HAL_NVIC_EnableIRQ((IRQn_Type)(BUTTON_IRQn[Button])); + } +} + +/** + * @brief Push Button DeInit. + * @param Button: Button to be configured + * This parameter can be one of the following values: + * @arg BUTTON_WAKEUP: Wakeup Push Button + * @arg BUTTON_TAMPER: Tamper Push Button + * @arg BUTTON_KEY: Key Push Button + * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons) + * are mapped on the same push button named "User" + * on the board serigraphy. + * @note PB DeInit does not disable the GPIO clock + * @retval None + */ +void BSP_PB_DeInit(Button_TypeDef Button) +{ + GPIO_InitTypeDef gpio_init_structure; + + gpio_init_structure.Pin = BUTTON_PIN[Button]; + HAL_NVIC_DisableIRQ((IRQn_Type)(BUTTON_IRQn[Button])); + HAL_GPIO_DeInit(BUTTON_PORT[Button], gpio_init_structure.Pin); +} + + +/** + * @brief Returns the selected button state. + * @param Button: Button to be checked + * This parameter can be one of the following values: + * @arg BUTTON_WAKEUP: Wakeup Push Button + * @arg BUTTON_TAMPER: Tamper Push Button + * @arg BUTTON_KEY: Key Push Button + * @note On STM32746G-Discovery board, the three buttons (Wakeup, Tamper and key buttons) + * are mapped on the same push button named "User" + * on the board serigraphy. + * @retval The Button GPIO pin value + */ +uint32_t BSP_PB_GetState(Button_TypeDef Button) +{ + return HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]); +} + +/** + * @brief Configures COM port. + * @param COM: COM port to be configured. + * This parameter can be one of the following values: + * @arg COM1 + * @arg COM2 + * @param huart: Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART peripheral. + * @retval None + */ +void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Enable GPIO clock */ + DISCOVERY_COMx_TX_GPIO_CLK_ENABLE(COM); + DISCOVERY_COMx_RX_GPIO_CLK_ENABLE(COM); + + /* Enable USART clock */ + DISCOVERY_COMx_CLK_ENABLE(COM); + + /* Configure USART Tx as alternate function */ + gpio_init_structure.Pin = COM_TX_PIN[COM]; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + gpio_init_structure.Pull = GPIO_PULLUP; + gpio_init_structure.Alternate = COM_TX_AF[COM]; + HAL_GPIO_Init(COM_TX_PORT[COM], &gpio_init_structure); + + /* Configure USART Rx as alternate function */ + gpio_init_structure.Pin = COM_RX_PIN[COM]; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Alternate = COM_RX_AF[COM]; + HAL_GPIO_Init(COM_RX_PORT[COM], &gpio_init_structure); + + /* USART configuration */ + huart->Instance = COM_USART[COM]; + HAL_UART_Init(huart); +} + +/** + * @brief DeInit COM port. + * @param COM: COM port to be configured. + * This parameter can be one of the following values: + * @arg COM1 + * @arg COM2 + * @param huart: Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART peripheral. + * @retval None + */ +void BSP_COM_DeInit(COM_TypeDef COM, UART_HandleTypeDef *huart) +{ + /* USART configuration */ + huart->Instance = COM_USART[COM]; + HAL_UART_DeInit(huart); + + /* Enable USART clock */ + DISCOVERY_COMx_CLK_DISABLE(COM); + + /* DeInit GPIO pins can be done in the application + (by surcharging this __weak function) */ + + /* GPIO pins clock, DMA clock can be shut down in the application + by surcharging this __weak function */ +} + +/******************************************************************************* + BUS OPERATIONS +*******************************************************************************/ + +/******************************* I2C Routines *********************************/ +/** + * @brief Initializes I2C MSP. + * @param i2c_handler : I2C handler + * @retval None + */ +static void I2Cx_MspInit(I2C_HandleTypeDef *i2c_handler) +{ + GPIO_InitTypeDef gpio_init_structure; + + if (i2c_handler == (I2C_HandleTypeDef*)(&hI2cAudioHandler)) + { + /* AUDIO and LCD I2C MSP init */ + + /*** Configure the GPIOs ***/ + /* Enable GPIO clock */ + DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_CLK_ENABLE(); + + /* Configure I2C Tx as alternate function */ + gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SCL_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_OD; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + gpio_init_structure.Alternate = DISCOVERY_AUDIO_I2Cx_SCL_SDA_AF; + HAL_GPIO_Init(DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure); + + /* Configure I2C Rx as alternate function */ + gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SDA_PIN; + HAL_GPIO_Init(DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure); + + /*** Configure the I2C peripheral ***/ + /* Enable I2C clock */ + DISCOVERY_AUDIO_I2Cx_CLK_ENABLE(); + + /* Force the I2C peripheral clock reset */ + DISCOVERY_AUDIO_I2Cx_FORCE_RESET(); + + /* Release the I2C peripheral clock reset */ + DISCOVERY_AUDIO_I2Cx_RELEASE_RESET(); + + /* Enable and set I2Cx Interrupt to a lower priority */ + HAL_NVIC_SetPriority(DISCOVERY_AUDIO_I2Cx_EV_IRQn, 0x0F, 0); + HAL_NVIC_EnableIRQ(DISCOVERY_AUDIO_I2Cx_EV_IRQn); + + /* Enable and set I2Cx Interrupt to a lower priority */ + HAL_NVIC_SetPriority(DISCOVERY_AUDIO_I2Cx_ER_IRQn, 0x0F, 0); + HAL_NVIC_EnableIRQ(DISCOVERY_AUDIO_I2Cx_ER_IRQn); + } + else + { + /* External, camera and Arduino connector I2C MSP init */ + + /*** Configure the GPIOs ***/ + /* Enable GPIO clock */ + DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_CLK_ENABLE(); + + /* Configure I2C Tx as alternate function */ + gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SCL_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_OD; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + gpio_init_structure.Alternate = DISCOVERY_EXT_I2Cx_SCL_SDA_AF; + HAL_GPIO_Init(DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure); + + /* Configure I2C Rx as alternate function */ + gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SDA_PIN; + HAL_GPIO_Init(DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure); + + /*** Configure the I2C peripheral ***/ + /* Enable I2C clock */ + DISCOVERY_EXT_I2Cx_CLK_ENABLE(); + + /* Force the I2C peripheral clock reset */ + DISCOVERY_EXT_I2Cx_FORCE_RESET(); + + /* Release the I2C peripheral clock reset */ + DISCOVERY_EXT_I2Cx_RELEASE_RESET(); + + /* Enable and set I2Cx Interrupt to a lower priority */ + HAL_NVIC_SetPriority(DISCOVERY_EXT_I2Cx_EV_IRQn, 0x0F, 0); + HAL_NVIC_EnableIRQ(DISCOVERY_EXT_I2Cx_EV_IRQn); + + /* Enable and set I2Cx Interrupt to a lower priority */ + HAL_NVIC_SetPriority(DISCOVERY_EXT_I2Cx_ER_IRQn, 0x0F, 0); + HAL_NVIC_EnableIRQ(DISCOVERY_EXT_I2Cx_ER_IRQn); + } +} + +/** + * @brief Initializes I2C HAL. + * @param i2c_handler : I2C handler + * @retval None + */ +static void I2Cx_Init(I2C_HandleTypeDef *i2c_handler) +{ + if(HAL_I2C_GetState(i2c_handler) == HAL_I2C_STATE_RESET) + { + if (i2c_handler == (I2C_HandleTypeDef*)(&hI2cAudioHandler)) + { + /* Audio and LCD I2C configuration */ + i2c_handler->Instance = DISCOVERY_AUDIO_I2Cx; + } + else + { + /* External, camera and Arduino connector I2C configuration */ + i2c_handler->Instance = DISCOVERY_EXT_I2Cx; + } + i2c_handler->Init.Timing = DISCOVERY_I2Cx_TIMING; + i2c_handler->Init.OwnAddress1 = 0; + i2c_handler->Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + i2c_handler->Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + i2c_handler->Init.OwnAddress2 = 0; + i2c_handler->Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + i2c_handler->Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + + /* Init the I2C */ + I2Cx_MspInit(i2c_handler); + HAL_I2C_Init(i2c_handler); + } +} + +/** + * @brief Reads multiple data. + * @param i2c_handler : I2C handler + * @param Addr: I2C address + * @param Reg: Reg address + * @param MemAddress: Memory address + * @param Buffer: Pointer to data buffer + * @param Length: Length of the data + * @retval Number of read data + */ +static HAL_StatusTypeDef I2Cx_ReadMultiple(I2C_HandleTypeDef *i2c_handler, + uint8_t Addr, + uint16_t Reg, + uint16_t MemAddress, + uint8_t *Buffer, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + + status = HAL_I2C_Mem_Read(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000); + + /* Check the communication status */ + if(status != HAL_OK) + { + /* I2C error occurred */ + I2Cx_Error(i2c_handler, Addr); + } + return status; +} + +/** + * @brief Writes a value in a register of the device through BUS in using DMA mode. + * @param i2c_handler : I2C handler + * @param Addr: Device address on BUS Bus. + * @param Reg: The target register address to write + * @param MemAddress: Memory address + * @param Buffer: The target register value to be written + * @param Length: buffer size to be written + * @retval HAL status + */ +static HAL_StatusTypeDef I2Cx_WriteMultiple(I2C_HandleTypeDef *i2c_handler, + uint8_t Addr, + uint16_t Reg, + uint16_t MemAddress, + uint8_t *Buffer, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + + status = HAL_I2C_Mem_Write(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000); + + /* Check the communication status */ + if(status != HAL_OK) + { + /* Re-Initiaize the I2C Bus */ + I2Cx_Error(i2c_handler, Addr); + } + return status; +} + +/** + * @brief Checks if target device is ready for communication. + * @note This function is used with Memory devices + * @param i2c_handler : I2C handler + * @param DevAddress: Target device address + * @param Trials: Number of trials + * @retval HAL status + */ +static HAL_StatusTypeDef I2Cx_IsDeviceReady(I2C_HandleTypeDef *i2c_handler, uint16_t DevAddress, uint32_t Trials) +{ + return (HAL_I2C_IsDeviceReady(i2c_handler, DevAddress, Trials, 1000)); +} + +/** + * @brief Manages error callback by re-initializing I2C. + * @param i2c_handler : I2C handler + * @param Addr: I2C Address + * @retval None + */ +static void I2Cx_Error(I2C_HandleTypeDef *i2c_handler, uint8_t Addr) +{ + /* De-initialize the I2C communication bus */ + HAL_I2C_DeInit(i2c_handler); + + /* Re-Initialize the I2C communication bus */ + I2Cx_Init(i2c_handler); +} + +/******************************************************************************* + LINK OPERATIONS +*******************************************************************************/ + +/********************************* LINK AUDIO *********************************/ + +/** + * @brief Initializes Audio low level. + * @retval None + */ +void AUDIO_IO_Init(void) +{ + I2Cx_Init(&hI2cAudioHandler); +} + +/** + * @brief Deinitializes Audio low level. + * @retval None + */ +void AUDIO_IO_DeInit(void) +{ +} + +/** + * @brief Writes a single data. + * @param Addr: I2C address + * @param Reg: Reg address + * @param Value: Data to be written + * @retval None + */ +void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value) +{ + uint16_t tmp = Value; + + Value = ((uint16_t)(tmp >> 8) & 0x00FF); + + Value |= ((uint16_t)(tmp << 8)& 0xFF00); + + I2Cx_WriteMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 2); +} + +/** + * @brief Reads a single data. + * @param Addr: I2C address + * @param Reg: Reg address + * @retval Data to be read + */ +uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg) +{ + uint16_t read_value = 0, tmp = 0; + + I2Cx_ReadMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_16BIT, (uint8_t*)&read_value, 2); + + tmp = ((uint16_t)(read_value >> 8) & 0x00FF); + + tmp |= ((uint16_t)(read_value << 8)& 0xFF00); + + read_value = tmp; + + return read_value; +} + +/** + * @brief AUDIO Codec delay + * @param Delay: Delay in ms + * @retval None + */ +void AUDIO_IO_Delay(uint32_t Delay) +{ + HAL_Delay(Delay); +} + +/********************************* LINK CAMERA ********************************/ + +/** + * @brief Initializes Camera low level. + * @retval None + */ +void CAMERA_IO_Init(void) +{ + I2Cx_Init(&hI2cExtHandler); +} + +/** + * @brief Camera writes single data. + * @param Addr: I2C address + * @param Reg: Register address + * @param Value: Data to be written + * @retval None + */ +void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value) +{ + I2Cx_WriteMultiple(&hI2cExtHandler, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT,(uint8_t*)&Value, 1); +} + +/** + * @brief Camera reads single data. + * @param Addr: I2C address + * @param Reg: Register address + * @retval Read data + */ +uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg) +{ + uint8_t read_value = 0; + + I2Cx_ReadMultiple(&hI2cExtHandler, Addr, Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&read_value, 1); + + return read_value; +} + +/** + * @brief Camera delay + * @param Delay: Delay in ms + * @retval None + */ +void CAMERA_Delay(uint32_t Delay) +{ + HAL_Delay(Delay); +} + +/******************************** LINK I2C EEPROM *****************************/ + +/** + * @brief Initializes peripherals used by the I2C EEPROM driver. + * @retval None + */ +void EEPROM_IO_Init(void) +{ + I2Cx_Init(&hI2cExtHandler); +} + +/** + * @brief Write data to I2C EEPROM driver in using DMA channel. + * @param DevAddress: Target device address + * @param MemAddress: Internal memory address + * @param pBuffer: Pointer to data buffer + * @param BufferSize: Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize) +{ + return (I2Cx_WriteMultiple(&hI2cExtHandler, DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize)); +} + +/** + * @brief Read data from I2C EEPROM driver in using DMA channel. + * @param DevAddress: Target device address + * @param MemAddress: Internal memory address + * @param pBuffer: Pointer to data buffer + * @param BufferSize: Amount of data to be read + * @retval HAL status + */ +HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize) +{ + return (I2Cx_ReadMultiple(&hI2cExtHandler, DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize)); +} + +/** + * @brief Checks if target device is ready for communication. + * @note This function is used with Memory devices + * @param DevAddress: Target device address + * @param Trials: Number of trials + * @retval HAL status + */ +HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials) +{ + return (I2Cx_IsDeviceReady(&hI2cExtHandler, DevAddress, Trials)); +} + +/********************************* LINK TOUCHSCREEN *********************************/ + +/** + * @brief Initializes Touchscreen low level. + * @retval None + */ +void TS_IO_Init(void) +{ + I2Cx_Init(&hI2cAudioHandler); +} + +/** + * @brief Writes a single data. + * @param Addr: I2C address + * @param Reg: Reg address + * @param Value: Data to be written + * @retval None + */ +void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value) +{ + I2Cx_WriteMultiple(&hI2cAudioHandler, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT,(uint8_t*)&Value, 1); +} + +/** + * @brief Reads a single data. + * @param Addr: I2C address + * @param Reg: Reg address + * @retval Data to be read + */ +uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg) +{ + uint8_t read_value = 0; + + I2Cx_ReadMultiple(&hI2cAudioHandler, Addr, Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&read_value, 1); + + return read_value; +} + +/** + * @brief TS delay + * @param Delay: Delay in ms + * @retval None + */ +void TS_IO_Delay(uint32_t Delay) +{ + HAL_Delay(Delay); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.h b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.h new file mode 100644 index 0000000..9d71a2e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery.h @@ -0,0 +1,350 @@ +/** + ****************************************************************************** + * @file stm32746g_discovery.h + * @author MCD Application Team + * Adapted for use as part of ARM University DSP Education Kit May 2017 + * @version V2.0.0 + * @date 30-December-2016 + * @brief This file contains definitions for STM32746G_DISCOVERY's LEDs, + * push-buttons and COM ports hardware resources. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32746G_DISCOVERY_H +#define __STM32746G_DISCOVERY_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32746G_DISCOVERY + * @{ + */ + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL + * @{ + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Types STM32746G_DISCOVERY_LOW_LEVEL Exported Types + * @{ + */ +typedef enum +{ +LED1 = 0, +LED_GREEN = LED1, +}Led_TypeDef; + +typedef enum +{ + BUTTON_WAKEUP = 0, + BUTTON_TAMPER = 1, + BUTTON_KEY = 2 +}Button_TypeDef; + +typedef enum +{ + BUTTON_MODE_GPIO = 0, + BUTTON_MODE_EXTI = 1 +}ButtonMode_TypeDef; + +typedef enum +{ + COM1 = 0, + COM2 = 1 +}COM_TypeDef; +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Constants STM32746G_DISCOVERY_LOW_LEVEL Exported Constants + * @{ + */ + +/** + * @brief Define for STM32746G_DISCOVERY board + */ +#if !defined (USE_STM32746G_DISCO) + #define USE_STM32746G_DISCO +#endif + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL_LED + * @{ + */ + +#define LEDn ((uint8_t)1) + +#define LED1_GPIO_PORT GPIOI +#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() +#define LED1_PIN GPIO_PIN_1 + +/** + * @} + */ + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL_BUTTON + * @{ + */ +#define BUTTONn ((uint8_t)3) + +/** + * @brief Wakeup push-button + */ +#define WAKEUP_BUTTON_PIN GPIO_PIN_11 +#define WAKEUP_BUTTON_GPIO_PORT GPIOI +#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() +#define WAKEUP_BUTTON_EXTI_IRQn EXTI15_10_IRQn + +/** + * @brief Tamper push-button + */ +#define TAMPER_BUTTON_PIN GPIO_PIN_11 +#define TAMPER_BUTTON_GPIO_PORT GPIOI +#define TAMPER_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() +#define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn + +/** + * @brief Key push-button + */ +#define KEY_BUTTON_PIN GPIO_PIN_11 +#define KEY_BUTTON_GPIO_PORT GPIOI +#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() +#define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn + +#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_ENABLE(); else\ + if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_ENABLE(); else\ + KEY_BUTTON_GPIO_CLK_ENABLE(); } while(0) + +#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? WAKEUP_BUTTON_GPIO_CLK_DISABLE() :\ + ((__INDEX__) == 1) ? TAMPER_BUTTON_GPIO_CLK_DISABLE() : KEY_BUTTON_GPIO_CLK_DISABLE()) + +/** + * @} + */ + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL_SIGNAL + * @{ + */ +#define SIGNALn ((uint8_t)1) + +/** + * @brief SD-detect signal + */ +#define SD_DETECT_PIN GPIO_PIN_13 +#define SD_DETECT_GPIO_PORT GPIOC +#define SD_DETECT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define SD_DETECT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() +#define SD_DETECT_EXTI_IRQn EXTI15_10_IRQn + +/** + * @brief Touch screen interrupt signal + */ +#define TS_INT_PIN GPIO_PIN_13 +#define TS_INT_GPIO_PORT GPIOI +#define TS_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define TS_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() +#define TS_INT_EXTI_IRQn EXTI15_10_IRQn + +/** + * @} + */ + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL_COM + * @{ + */ +#define COMn ((uint8_t)1) + +/** + * @brief Definition for COM port1, connected to USART1 + */ +#define DISCOVERY_COM1 USART1 +#define DISCOVERY_COM1_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE() +#define DISCOVERY_COM1_CLK_DISABLE() __HAL_RCC_USART1_CLK_DISABLE() + +#define DISCOVERY_COM1_TX_PIN GPIO_PIN_9 +#define DISCOVERY_COM1_TX_GPIO_PORT GPIOA +#define DISCOVERY_COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define DISCOVERY_COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() +#define DISCOVERY_COM1_TX_AF GPIO_AF7_USART1 + +#define DISCOVERY_COM1_RX_PIN GPIO_PIN_7 +#define DISCOVERY_COM1_RX_GPIO_PORT GPIOB +#define DISCOVERY_COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define DISCOVERY_COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() +#define DISCOVERY_COM1_RX_AF GPIO_AF7_USART1 + +#define DISCOVERY_COM1_IRQn USART1_IRQn + +#define DISCOVERY_COMx_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) DISCOVERY_COM1_CLK_ENABLE(); } while(0) +#define DISCOVERY_COMx_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? DISCOVERY_COM1_CLK_DISABLE() : 0) + +#define DISCOVERY_COMx_TX_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) DISCOVERY_COM1_TX_GPIO_CLK_ENABLE(); } while(0) +#define DISCOVERY_COMx_TX_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? DISCOVERY_COM1_TX_GPIO_CLK_DISABLE() : 0) + +#define DISCOVERY_COMx_RX_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) DISCOVERY_COM1_RX_GPIO_CLK_ENABLE(); } while(0) +#define DISCOVERY_COMx_RX_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? DISCOVERY_COM1_RX_GPIO_CLK_DISABLE() : 0) + +/* Exported constant IO ------------------------------------------------------*/ + +#define LCD_I2C_ADDRESS ((uint16_t)0x70) +#define CAMERA_I2C_ADDRESS ((uint16_t)0x60) +#define AUDIO_I2C_ADDRESS ((uint16_t)0x34) +#define EEPROM_I2C_ADDRESS_A01 ((uint16_t)0xA0) +#define EEPROM_I2C_ADDRESS_A02 ((uint16_t)0xA6) +#define TS_I2C_ADDRESS ((uint16_t)0x70) + +/* I2C clock speed configuration (in Hz) + WARNING: + Make sure that this define is not already declared in other files (ie. + stm32746g_discovery.h file). It can be used in parallel by other modules. */ +#ifndef I2C_SPEED + #define I2C_SPEED ((uint32_t)100000) +#endif /* I2C_SPEED */ + +/* User can use this section to tailor I2Cx/I2Cx instance used and associated + resources */ +/* Definition for AUDIO and LCD I2Cx resources */ +#define DISCOVERY_AUDIO_I2Cx I2C3 +#define DISCOVERY_AUDIO_I2Cx_CLK_ENABLE() __HAL_RCC_I2C3_CLK_ENABLE() +#define DISCOVERY_AUDIO_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() +#define DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE() + +#define DISCOVERY_AUDIO_I2Cx_FORCE_RESET() __HAL_RCC_I2C3_FORCE_RESET() +#define DISCOVERY_AUDIO_I2Cx_RELEASE_RESET() __HAL_RCC_I2C3_RELEASE_RESET() + +/* Definition for I2Cx Pins */ +#define DISCOVERY_AUDIO_I2Cx_SCL_PIN GPIO_PIN_7 +#define DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT GPIOH +#define DISCOVERY_AUDIO_I2Cx_SCL_SDA_AF GPIO_AF4_I2C3 +#define DISCOVERY_AUDIO_I2Cx_SDA_PIN GPIO_PIN_8 + +/* I2C interrupt requests */ +#define DISCOVERY_AUDIO_I2Cx_EV_IRQn I2C3_EV_IRQn +#define DISCOVERY_AUDIO_I2Cx_ER_IRQn I2C3_ER_IRQn + +/* Definition for external, camera and Arduino connector I2Cx resources */ +#define DISCOVERY_EXT_I2Cx I2C1 +#define DISCOVERY_EXT_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE() +#define DISCOVERY_EXT_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE() +#define DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() + +#define DISCOVERY_EXT_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET() +#define DISCOVERY_EXT_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET() + +/* Definition for I2Cx Pins */ +#define DISCOVERY_EXT_I2Cx_SCL_PIN GPIO_PIN_8 +#define DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT GPIOB +#define DISCOVERY_EXT_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1 +#define DISCOVERY_EXT_I2Cx_SDA_PIN GPIO_PIN_9 + +/* I2C interrupt requests */ +#define DISCOVERY_EXT_I2Cx_EV_IRQn I2C1_EV_IRQn +#define DISCOVERY_EXT_I2Cx_ER_IRQn I2C1_ER_IRQn + +/* I2C TIMING Register define when I2C clock source is SYSCLK */ +/* I2C TIMING is calculated from APB1 source clock = 50 MHz */ +/* Due to the big MOFSET capacity for adapting the camera level the rising time is very large (>1us) */ +/* 0x40912732 takes in account the big rising and aims a clock of 100khz */ +#ifndef DISCOVERY_I2Cx_TIMING +#define DISCOVERY_I2Cx_TIMING ((uint32_t)0x40912732) +#endif /* DISCOVERY_I2Cx_TIMING */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Macros STM32746G_DISCOVERY_LOW_LEVEL Exported Macros + * @{ + */ +/** + * @} + */ + +/** @addtogroup STM32746G_DISCOVERY_LOW_LEVEL_Exported_Functions + * @{ + */ +uint32_t BSP_GetVersion(void); +void BSP_LED_Init(Led_TypeDef Led); +void BSP_LED_DeInit(Led_TypeDef Led); +void BSP_LED_On(Led_TypeDef Led); +void BSP_LED_Off(Led_TypeDef Led); +void BSP_LED_Toggle(Led_TypeDef Led); + +void BSP_GPIO_Init(void); +void BSP_GPIO_DeInit(void); +void BSP_GPIO_On(void); +void BSP_GPIO_Off(void); +void BSP_GPIO_Toggle(void); + + +void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); +void BSP_PB_DeInit(Button_TypeDef Button); +uint32_t BSP_PB_GetState(Button_TypeDef Button); +void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *husart); +void BSP_COM_DeInit(COM_TypeDef COM, UART_HandleTypeDef *huart); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32746G_DISCOVERY_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.c b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.c new file mode 100644 index 0000000..838bf1b --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.c @@ -0,0 +1,878 @@ +/** + ****************************************************************************** + * @file stm32f746g_discovery_audio.c + * @author MCD Application Team + * Adapted for use as part of ARM University DSP Education Kit May 2017 + * @version V2.0.0 + * @date 30-December-2016 + * @brief This file provides the Audio driver for the STM32746G-Discovery board. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +#include "stm32746g_discovery_audio.h" +#include + +SAI_HandleTypeDef haudio_out_sai={0}; +SAI_HandleTypeDef haudio_in_sai={0}; + +// uint16_t __IO AudioInVolume = DEFAULT_AUDIO_IN_VOLUME; + +static void SAIx_In_Init(uint32_t SaiOutMode, uint32_t SlotActive, uint32_t AudioFreq); +static void SAIx_In_Init_SAIinterrupt(uint32_t SaiOutMode, uint32_t SlotActive, uint32_t AudioFreq); +static void SAIx_In_DeInit(void); +static void SAIx_Out_DeInit(void); + +/** + * Modified 12 May 2017 DSR for multibuffer operation + * @brief Starts playing audio stream from a data buffer for a determined size. + * @param pBuffer: Pointer to the buffer + * @param Size: Number of audio data in BYTES unit. + * In memory, first element is for left channel, second element is for right channel + * @retval AUDIO_OK if correct communication, else wrong communication + */ +uint8_t BSP_AUDIO_OUT_MultiBufferPlay(uint16_t* pBufferM0, uint16_t* pBufferM1, uint32_t Size) +{ + { + HAL_SAI_Transmit_DMA_MultiBuffer(&haudio_out_sai, (uint8_t*) pBufferM0, (uint8_t*) pBufferM1, Size); + + return AUDIO_OK; + } +} + +void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot) +{ + /* Disable SAI peripheral to allow access to SAI internal registers */ + __HAL_SAI_DISABLE(&haudio_out_sai); + + /* Update the SAI audio frame slot configuration */ + haudio_out_sai.SlotInit.SlotActive = AudioFrameSlot; + HAL_SAI_Init(&haudio_out_sai); + + /* Enable SAI peripheral to generate MCLK */ + __HAL_SAI_ENABLE(&haudio_out_sai); +} + +void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai) +{ + /* Manage the remaining file size and new address offset: This function + should be coded by user (its prototype is already declared in stm32746g_discovery_audio.h) */ + BSP_AUDIO_OUT_TransferComplete_CallBack(); +} + +void HAL_SAI_TxM1CpltCallback(SAI_HandleTypeDef *hsai) +{ + /* Manage the remaining file size and new address offset: This function + should be coded by user (its prototype is already declared in stm32746g_discovery_audio.h) */ + BSP_AUDIO_OUT_TransferCompleteM1_CallBack(); +} + +void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai) +{ + HAL_SAI_StateTypeDef audio_out_state; + HAL_SAI_StateTypeDef audio_in_state; + + audio_out_state = HAL_SAI_GetState(&haudio_out_sai); + audio_in_state = HAL_SAI_GetState(&haudio_in_sai); + + /* Determines if it is an audio out or audio in error */ + if ((audio_out_state == HAL_SAI_STATE_BUSY) || (audio_out_state == HAL_SAI_STATE_BUSY_TX)) + { + BSP_AUDIO_OUT_Error_CallBack(); + } + + if ((audio_in_state == HAL_SAI_STATE_BUSY) || (audio_in_state == HAL_SAI_STATE_BUSY_RX)) + { + BSP_AUDIO_IN_Error_CallBack(); + } +} + +__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void) +{ +} + +__weak void BSP_AUDIO_OUT_TransferCompleteM1_CallBack(void) +{ +} + +__weak void BSP_AUDIO_OUT_Error_CallBack(void) +{ +} + +__weak void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params) +{ + static DMA_HandleTypeDef hdma_sai_tx; + GPIO_InitTypeDef gpio_init_structure; + + /* Enable SAI clock */ + AUDIO_OUT_SAIx_CLK_ENABLE(); + + /* Enable GPIO clock */ + AUDIO_OUT_SAIx_MCLK_ENABLE(); + AUDIO_OUT_SAIx_SCK_SD_ENABLE(); + AUDIO_OUT_SAIx_FS_ENABLE(); + /* CODEC_SAI pins configuration: FS, SCK, MCK and SD pins ------------------*/ + gpio_init_structure.Pin = AUDIO_OUT_SAIx_FS_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_FS_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SCK_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_SCK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SD_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_MCLK_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_MCLK_GPIO_PORT, &gpio_init_structure); + + /* Enable the DMA clock */ + AUDIO_OUT_SAIx_DMAx_CLK_ENABLE(); + + if(hsai->Instance == AUDIO_OUT_SAIx) + { + /* Configure the hdma_saiTx handle parameters */ + hdma_sai_tx.Init.Channel = AUDIO_OUT_SAIx_DMAx_CHANNEL; + hdma_sai_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_sai_tx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_sai_tx.Init.MemInc = DMA_MINC_ENABLE; + hdma_sai_tx.Init.PeriphDataAlignment = AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE; + hdma_sai_tx.Init.MemDataAlignment = AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE; + hdma_sai_tx.Init.Mode = DMA_CIRCULAR; + hdma_sai_tx.Init.Priority = DMA_PRIORITY_HIGH; + hdma_sai_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; + hdma_sai_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; + hdma_sai_tx.Init.MemBurst = DMA_MBURST_SINGLE; + hdma_sai_tx.Init.PeriphBurst = DMA_PBURST_SINGLE; + + hdma_sai_tx.Instance = AUDIO_OUT_SAIx_DMAx_STREAM; + + /* Associate the DMA handle */ + __HAL_LINKDMA(hsai, hdmatx, hdma_sai_tx); + + /* Deinitialize the Stream for new transfer */ + HAL_DMA_DeInit(&hdma_sai_tx); + + /* Configure the DMA Stream */ + HAL_DMA_Init(&hdma_sai_tx); + } + + /* SAI DMA IRQ Channel configuration */ + HAL_NVIC_SetPriority(AUDIO_OUT_SAIx_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0); + HAL_NVIC_EnableIRQ(AUDIO_OUT_SAIx_DMAx_IRQ); +} + +__weak void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* SAI DMA IRQ Channel deactivation */ + HAL_NVIC_DisableIRQ(AUDIO_OUT_SAIx_DMAx_IRQ); + + if(hsai->Instance == AUDIO_OUT_SAIx) + { + /* Deinitialize the DMA stream */ + HAL_DMA_DeInit(hsai->hdmatx); + } + + /* Disable SAI peripheral */ + __HAL_SAI_DISABLE(hsai); + + /* Deactives CODEC_SAI pins FS, SCK, MCK and SD by putting them in input mode */ + gpio_init_structure.Pin = AUDIO_OUT_SAIx_FS_PIN; + HAL_GPIO_DeInit(AUDIO_OUT_SAIx_FS_GPIO_PORT, gpio_init_structure.Pin); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SCK_PIN; + HAL_GPIO_DeInit(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, gpio_init_structure.Pin); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SD_PIN; + HAL_GPIO_DeInit(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, gpio_init_structure.Pin); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_MCLK_PIN; + HAL_GPIO_DeInit(AUDIO_OUT_SAIx_MCLK_GPIO_PORT, gpio_init_structure.Pin); + + /* Disable SAI clock */ + AUDIO_OUT_SAIx_CLK_DISABLE(); + + /* GPIO pins clock and DMA clock can be shut down in the application + by surcharging this __weak function */ +} + +__weak void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params) +{ + RCC_PeriphCLKInitTypeDef rcc_ex_clk_init_struct; + + HAL_RCCEx_GetPeriphCLKConfig(&rcc_ex_clk_init_struct); + + /* Set the PLL configuration according to the audio frequency */ + if((AudioFreq == AUDIO_FREQUENCY_11K) || (AudioFreq == AUDIO_FREQUENCY_22K) || (AudioFreq == AUDIO_FREQUENCY_44K)) + { + /* Configure PLLI2S prescalers */ + /* PLLI2S_VCO: VCO_429M + I2S_CLK(first level) = PLLI2S_VCO/PLLI2SQ = 429/2 = 214.5 Mhz + I2S_CLK_x = I2S_CLK(first level)/PLLI2SDIVQ = 214.5/19 = 11.289 Mhz */ + rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI2; + rcc_ex_clk_init_struct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLI2S; + rcc_ex_clk_init_struct.PLLI2S.PLLI2SN = 429; + rcc_ex_clk_init_struct.PLLI2S.PLLI2SQ = 2; + rcc_ex_clk_init_struct.PLLI2SDivQ = 19; + + HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct); + + } + else /* AUDIO_FREQUENCY_8K, AUDIO_FREQUENCY_16K, AUDIO_FREQUENCY_48K), AUDIO_FREQUENCY_96K */ + { + /* I2S clock config + PLLI2S_VCO: VCO_344M + I2S_CLK(first level) = PLLI2S_VCO/PLLI2SQ = 344/7 = 49.142 Mhz + I2S_CLK_x = I2S_CLK(first level)/PLLI2SDIVQ = 49.142/1 = 49.142 Mhz */ + rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI2; + rcc_ex_clk_init_struct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLI2S; + rcc_ex_clk_init_struct.PLLI2S.PLLI2SN = 344; + rcc_ex_clk_init_struct.PLLI2S.PLLI2SQ = 7; + rcc_ex_clk_init_struct.PLLI2SDivQ = 1; + + HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct); + } +} + + +uint8_t BSP_AUDIO_IN_OUT_Init(uint16_t InputDevice, uint16_t OutputDevice, uint32_t AudioFreq) +{ + uint8_t ret = AUDIO_ERROR; + uint32_t slot_active; + + if ((InputDevice != INPUT_DEVICE_INPUT_LINE_1) && (InputDevice != INPUT_DEVICE_DIGITAL_MICROPHONE_2)) + { + ret = AUDIO_ERROR; + } + else + { + /* Disable SAI */ + SAIx_In_DeInit(); + SAIx_Out_DeInit(); + + /* PLL clock is set depending on the AudioFreq (44.1khz vs 48khz groups) */ + BSP_AUDIO_OUT_ClockConfig(&haudio_in_sai, AudioFreq, NULL); /* Clock config is shared between AUDIO IN and OUT */ + + /* SAI data transfer preparation: + Prepare the Media to be used for the audio transfer from SAI peripheral to memory */ + haudio_in_sai.Instance = AUDIO_IN_SAIx; + if(HAL_SAI_GetState(&haudio_in_sai) == HAL_SAI_STATE_RESET) // where was this set up? + { + /* Init the SAI MSP: this __weak function can be redefined by the application*/ + BSP_AUDIO_IN_MspInit(&haudio_in_sai, NULL); + } + + /* SAI data transfer preparation: + Prepare the Media to be used for the audio transfer from memory to SAI peripheral */ + haudio_out_sai.Instance = AUDIO_OUT_SAIx; + if(HAL_SAI_GetState(&haudio_out_sai) == HAL_SAI_STATE_RESET) + { + /* Init the SAI MSP: this __weak function can be redefined by the application*/ + BSP_AUDIO_OUT_MspInit(&haudio_out_sai, NULL); + } + + /* Configure SAI in master mode : + * - SAI2_block_A in master TX mode + * - SAI2_block_B in slave RX mode synchronous from SAI2_block_A + */ + if (InputDevice == INPUT_DEVICE_DIGITAL_MICROPHONE_2) + { + slot_active = CODEC_AUDIOFRAME_SLOT_13; + } + else + { + slot_active = CODEC_AUDIOFRAME_SLOT_02; + } + + SAIx_In_Init(SAI_MODEMASTER_TX, slot_active, AudioFreq); + + wm8994_Reset(AUDIO_I2C_ADDRESS); + wm8994_Init(AUDIO_I2C_ADDRESS, InputDevice | OutputDevice, AudioFreq); +// wm8994_SetVolume(AUDIO_I2C_ADDRESS, headphone_gain, line_in_gain, dmic_gain); + } + return ret; +} + + +uint8_t BSP_AUDIO_IN_MultiBufferRecord(uint16_t* pbufM0, uint16_t* pbufM1, uint32_t size) +{ + uint32_t ret = AUDIO_ERROR; + + /* Start the process receive DMA */ +// size should be (PING_PONGBUFFER_SIZE*2), that is the number of 16-bit sample values +// (left and right) in one DMA transfer block + HAL_SAI_Receive_DMA_MultiBuffer(&haudio_in_sai, (uint8_t*)pbufM0, (uint8_t*)pbufM1, size); + + /* Return AUDIO_OK when all operations are correctly done */ + ret = AUDIO_OK; + + return ret; +} + + + +void BSP_AUDIO_IN_DeInit(void) +{ + SAIx_In_DeInit(); + /* DeInit the SAI MSP : this __weak function can be rewritten by the application */ + BSP_AUDIO_IN_MspDeInit(&haudio_in_sai, NULL); +} + +void HAL_SAI_RxCpltCallback() // called in DMA mode from SAI_DMARxCplt() in stm32f7xx_hal_sai.c +{ +// function defined in main.c (??? or in stm32f7_wm8994_init.c DSR) +// effectively implements ping-pong double buffering mechanism + BSP_AUDIO_IN_TransferComplete_CallBack(); +} + +static void SAIx_Out_DeInit(void) +{ + /* Initialize the haudio_out_sai Instance parameter */ + haudio_out_sai.Instance = AUDIO_OUT_SAIx; + + /* Disable SAI peripheral */ + __HAL_SAI_DISABLE(&haudio_out_sai); + + HAL_SAI_DeInit(&haudio_out_sai); +} + +__weak void BSP_AUDIO_SAI_Interrupt_CallBack(void) +{ +// UNUSED(void); +} + +void HAL_SAI_RxCpltCallback_Interrupt() // called in interrupt mode from SAI_Receive_IT16Bit() in hal_sai.c DSR +{ + BSP_AUDIO_SAI_Interrupt_CallBack(); // DSP algorithm is there - sample values in global variables +} + + +uint8_t BSP_AUDIO_SAI_INTERRUPT_INIT(int16_t* rxLptr, int16_t* rxRptr, int16_t* txLptr, int16_t* txRptr) +{ +// set up input and output sample pointers in SAI_HandleTypeDef structures + haudio_in_sai.sample_left_ptr = rxLptr; + haudio_in_sai.sample_right_ptr = rxRptr; + haudio_out_sai.sample_left_ptr = txLptr; + haudio_out_sai.sample_right_ptr = txRptr; + + HAL_SAI_Receive_IT_SAIinterrupt(&haudio_in_sai, &haudio_out_sai); + + return AUDIO_OK; +} + +__weak void BSP_AUDIO_OUT_MspInit_SAIinterrupt(SAI_HandleTypeDef *hsai, void *Params) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Enable SAI clock */ + AUDIO_OUT_SAIx_CLK_ENABLE(); + + /* Enable GPIO clock */ + AUDIO_OUT_SAIx_MCLK_ENABLE(); + AUDIO_OUT_SAIx_SCK_SD_ENABLE(); + AUDIO_OUT_SAIx_FS_ENABLE(); + /* CODEC_SAI pins configuration: FS, SCK, MCK and SD pins ------------------*/ + gpio_init_structure.Pin = AUDIO_OUT_SAIx_FS_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_FS_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SCK_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_SCK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_SD_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure); + + gpio_init_structure.Pin = AUDIO_OUT_SAIx_MCLK_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_HIGH; + gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF; + HAL_GPIO_Init(AUDIO_OUT_SAIx_MCLK_GPIO_PORT, &gpio_init_structure); + + // there is no interrupt associated with output TX SAI2 block A and so no + // HAL_NVIC_SetPriority() or HAL_NVIC_EnableIRQ() calls here +} + + +__weak void BSP_AUDIO_IN_MspInit_SAIinterrupt(SAI_HandleTypeDef *hsai, void *Params) +{ + GPIO_InitTypeDef gpio_init_structure; + + /* Enable SAI clock */ + AUDIO_IN_SAIx_CLK_ENABLE(); + + /* Enable SD GPIO clock */ + AUDIO_IN_SAIx_SD_ENABLE(); + /* CODEC_SAI pin configuration: SD pin */ + gpio_init_structure.Pin = AUDIO_IN_SAIx_SD_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + gpio_init_structure.Alternate = AUDIO_IN_SAIx_SD_AF; + HAL_GPIO_Init(AUDIO_IN_SAIx_SD_GPIO_PORT, &gpio_init_structure); + + /* Enable Audio INT GPIO clock */ + AUDIO_IN_INT_GPIO_ENABLE(); + /* Audio INT pin configuration: input */ + gpio_init_structure.Pin = AUDIO_IN_INT_GPIO_PIN; + gpio_init_structure.Mode = GPIO_MODE_INPUT; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(AUDIO_IN_INT_GPIO_PORT, &gpio_init_structure); + + + // SAI2 block B RX interrupt configuration - but actually this is for blocks A and B + // we can control interrupt enables for individual blocks in SAI_xIM register + + HAL_NVIC_SetPriority(SAI2_IRQn, AUDIO_IN_IRQ_PREPRIO, 0); // SAI2_IRQn #defined as 91 in stm32f746xx.h + HAL_NVIC_EnableIRQ(SAI2_IRQn); // stick with existing interrupt priority for DMA +} + + +uint8_t BSP_AUDIO_IN_OUT_Init_SAIinterrupt(uint16_t InputDevice, uint16_t OutputDevice, uint32_t AudioFreq) +{ + uint32_t slot_active; + + if ((InputDevice != INPUT_DEVICE_INPUT_LINE_1) && (InputDevice != INPUT_DEVICE_DIGITAL_MICROPHONE_2)) + { + return AUDIO_ERROR; + } + else + { + // disable SAI + SAIx_In_DeInit(); + SAIx_Out_DeInit(); + + // set PLL clock depending on the AudioFreq (44.1khz vs 48khz groups) + BSP_AUDIO_OUT_ClockConfig(&haudio_in_sai, AudioFreq, NULL); // clock config is shared between AUDIO IN and OUT */ + + // configure SAI2 block B (input slave in sync with block A) + haudio_in_sai.Instance = AUDIO_IN_SAIx; // #defined in stm32746g_discovery_audio.h as SAI2 block B + if(HAL_SAI_GetState(&haudio_in_sai) == HAL_SAI_STATE_RESET) + { + BSP_AUDIO_IN_MspInit_SAIinterrupt(&haudio_in_sai, NULL); + } + + // configure SAI2 block A (output master) + haudio_out_sai.Instance = AUDIO_OUT_SAIx; // #defined in stm32746g_discovery_audio.h as SAI2 block A + if(HAL_SAI_GetState(&haudio_out_sai) == HAL_SAI_STATE_RESET) + { + BSP_AUDIO_OUT_MspInit_SAIinterrupt(&haudio_out_sai, NULL); + } + + /* Configure SAI in master mode : + * - SAI2_block_A in master TX mode + * - SAI2_block_B in slave RX mode synchronous from SAI2_block_A + */ + if (InputDevice == INPUT_DEVICE_DIGITAL_MICROPHONE_2) + { + slot_active = CODEC_AUDIOFRAME_SLOT_13; + } + else + { + slot_active = CODEC_AUDIOFRAME_SLOT_02; + } + + SAIx_In_Init_SAIinterrupt(SAI_MODEMASTER_TX, slot_active, AudioFreq); + + wm8994_Reset(AUDIO_I2C_ADDRESS); + + /* Initialize the codec internal registers, i.e. call function wm8994_init() defined in wm8994.c */ + wm8994_Init(AUDIO_I2C_ADDRESS, InputDevice | OutputDevice, AudioFreq); + } + return AUDIO_OK; +} + + + +void HAL_SAI_RxM1CpltCallback(SAI_HandleTypeDef *hsai) +{ + /* Call the record update function to get the next buffer to fill and its size (size is ignored) */ + BSP_AUDIO_IN_TransferCompleteM1_CallBack(); +} + + +__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void) +{ + /* This function should be implemented by the user application. + It is called into this driver when the current buffer is filled + to prepare the next buffer pointer and its size. */ +} + +__weak void BSP_AUDIO_IN_TransferCompleteM1_CallBack(void) +{ + /* This function should be implemented by the user application. + It is called into this driver when the current buffer is filled + to prepare the next buffer pointer and its size. */ +} + +__weak void BSP_AUDIO_IN_Error_CallBack(void) +{ + /* This function is called when an Interrupt due to transfer error on or peripheral + error occurs. */ +} + +__weak void BSP_AUDIO_IN_MspInit(SAI_HandleTypeDef *hsai, void *Params) +{ + static DMA_HandleTypeDef hdma_sai_rx; + GPIO_InitTypeDef gpio_init_structure; + + /* Enable SAI clock */ + AUDIO_IN_SAIx_CLK_ENABLE(); + + /* Enable SD GPIO clock */ + AUDIO_IN_SAIx_SD_ENABLE(); + /* CODEC_SAI pin configuration: SD pin */ + gpio_init_structure.Pin = AUDIO_IN_SAIx_SD_PIN; + gpio_init_structure.Mode = GPIO_MODE_AF_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + gpio_init_structure.Alternate = AUDIO_IN_SAIx_SD_AF; + HAL_GPIO_Init(AUDIO_IN_SAIx_SD_GPIO_PORT, &gpio_init_structure); + + /* Enable Audio INT GPIO clock */ + AUDIO_IN_INT_GPIO_ENABLE(); + /* Audio INT pin configuration: input */ + gpio_init_structure.Pin = AUDIO_IN_INT_GPIO_PIN; + gpio_init_structure.Mode = GPIO_MODE_INPUT; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(AUDIO_IN_INT_GPIO_PORT, &gpio_init_structure); + + /* Enable the DMA clock */ + AUDIO_IN_SAIx_DMAx_CLK_ENABLE(); + + if(hsai->Instance == AUDIO_IN_SAIx) + { + /* Configure the hdma_sai_rx handle parameters */ + hdma_sai_rx.Init.Channel = AUDIO_IN_SAIx_DMAx_CHANNEL; + hdma_sai_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_sai_rx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_sai_rx.Init.MemInc = DMA_MINC_ENABLE; + hdma_sai_rx.Init.PeriphDataAlignment = AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE; + hdma_sai_rx.Init.MemDataAlignment = AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE; + hdma_sai_rx.Init.Mode = DMA_CIRCULAR; + hdma_sai_rx.Init.Priority = DMA_PRIORITY_HIGH; + hdma_sai_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + hdma_sai_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; + hdma_sai_rx.Init.MemBurst = DMA_MBURST_SINGLE; + hdma_sai_rx.Init.PeriphBurst = DMA_MBURST_SINGLE; + + hdma_sai_rx.Instance = AUDIO_IN_SAIx_DMAx_STREAM; + + /* Associate the DMA handle */ + __HAL_LINKDMA(hsai, hdmarx, hdma_sai_rx); + + /* Deinitialize the Stream for new transfer */ + HAL_DMA_DeInit(&hdma_sai_rx); + + /* Configure the DMA Stream */ + HAL_DMA_Init(&hdma_sai_rx); + } + + /* SAI DMA IRQ Channel configuration */ + HAL_NVIC_SetPriority(AUDIO_IN_SAIx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0); + HAL_NVIC_EnableIRQ(AUDIO_IN_SAIx_DMAx_IRQ); + + /* Audio INT IRQ Channel configuration */ +// HAL_NVIC_SetPriority(AUDIO_IN_INT_IRQ, AUDIO_IN_IRQ_PREPRIO, 0); +// HAL_NVIC_EnableIRQ(AUDIO_IN_INT_IRQ); +} + + +__weak void BSP_AUDIO_IN_MspDeInit(SAI_HandleTypeDef *hsai, void *Params) +{ + GPIO_InitTypeDef gpio_init_structure; + + static DMA_HandleTypeDef hdma_sai_rx; + + /* SAI IN DMA IRQ Channel deactivation */ + HAL_NVIC_DisableIRQ(AUDIO_IN_SAIx_DMAx_IRQ); + + if(hsai->Instance == AUDIO_IN_SAIx) + { + /* Deinitialize the Stream for new transfer */ + HAL_DMA_DeInit(&hdma_sai_rx); + } + + /* Disable SAI block */ + __HAL_SAI_DISABLE(hsai); + + /* Disable pin: SD pin */ + gpio_init_structure.Pin = AUDIO_IN_SAIx_SD_PIN; + HAL_GPIO_DeInit(AUDIO_IN_SAIx_SD_GPIO_PORT, gpio_init_structure.Pin); + + /* Disable SAI clock */ + AUDIO_IN_SAIx_CLK_DISABLE(); + + /* GPIO pins clock and DMA clock can be shut down in the application + by surcharging this __weak function */ +} + + +static void SAIx_In_Init(uint32_t SaiOutMode, uint32_t SlotActive, uint32_t AudioFreq) +{ + /* Initialize SAI2 block A in MASTER TX */ + /* Initialize the haudio_out_sai Instance parameter */ + haudio_out_sai.Instance = AUDIO_OUT_SAIx; + + /* Disable SAI peripheral to allow access to SAI internal registers */ + __HAL_SAI_DISABLE(&haudio_out_sai); + + /* Configure SAI_Block_x + LSBFirst: Disabled + DataSize: 16 */ + haudio_out_sai.Init.AudioFrequency = AudioFreq; + haudio_out_sai.Init.AudioMode = SaiOutMode; + haudio_out_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLED; + haudio_out_sai.Init.Protocol = SAI_FREE_PROTOCOL; + haudio_out_sai.Init.DataSize = SAI_DATASIZE_16; + haudio_out_sai.Init.FirstBit = SAI_FIRSTBIT_MSB; + haudio_out_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; + haudio_out_sai.Init.Synchro = SAI_ASYNCHRONOUS; + haudio_out_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLED; + haudio_out_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_1QF; + + /* Configure SAI_Block_x Frame + Frame Length: 64 + Frame active Length: 32 + FS Definition: Start frame + Channel Side identification + FS Polarity: FS active Low + FS Offset: FS asserted one bit before the first bit of slot 0 */ + haudio_out_sai.FrameInit.FrameLength = 64; + haudio_out_sai.FrameInit.ActiveFrameLength = 32; + haudio_out_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION; + haudio_out_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW; + haudio_out_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; + + /* Configure SAI Block_x Slot + Slot First Bit Offset: 0 + Slot Size : 16 + Slot Number: 4 */ + haudio_out_sai.SlotInit.FirstBitOffset = 0; + haudio_out_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE; + haudio_out_sai.SlotInit.SlotNumber = 4; + haudio_out_sai.SlotInit.SlotActive = CODEC_AUDIOFRAME_SLOT_02; + + HAL_SAI_Init(&haudio_out_sai); + + /* Initialize SAI2 block B in SLAVE RX synchronous from SAI2 block A */ + /* Initialize the haudio_in_sai Instance parameter */ + haudio_in_sai.Instance = AUDIO_IN_SAIx; + + /* Disable SAI peripheral to allow access to SAI internal registers */ + __HAL_SAI_DISABLE(&haudio_in_sai); + + /* Configure SAI_Block_x + LSBFirst: Disabled + DataSize: 16 */ + haudio_in_sai.Init.AudioFrequency = AudioFreq; + haudio_in_sai.Init.AudioMode = SAI_MODESLAVE_RX; + haudio_in_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLED; + haudio_in_sai.Init.Protocol = SAI_FREE_PROTOCOL; + haudio_in_sai.Init.DataSize = SAI_DATASIZE_16; + haudio_in_sai.Init.FirstBit = SAI_FIRSTBIT_MSB; + haudio_in_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; + haudio_in_sai.Init.Synchro = SAI_SYNCHRONOUS; + haudio_in_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_DISABLED; + haudio_in_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_1QF; + + /* Configure SAI_Block_x Frame + Frame Length: 64 + Frame active Length: 32 + FS Definition: Start frame + Channel Side identification + FS Polarity: FS active Low + FS Offset: FS asserted one bit before the first bit of slot 0 */ + haudio_in_sai.FrameInit.FrameLength = 64; + haudio_in_sai.FrameInit.ActiveFrameLength = 32; + haudio_in_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION; + haudio_in_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW; + haudio_in_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; + + /* Configure SAI Block_x Slot + Slot First Bit Offset: 0 + Slot Size : 16 + Slot Number: 4 */ + haudio_in_sai.SlotInit.FirstBitOffset = 0; + haudio_in_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE; + haudio_in_sai.SlotInit.SlotNumber = 4; + haudio_in_sai.SlotInit.SlotActive = SlotActive; + + HAL_SAI_Init(&haudio_in_sai); + + /* Enable SAI peripheral to generate MCLK */ + __HAL_SAI_ENABLE(&haudio_out_sai); + + /* Enable SAI peripheral */ + __HAL_SAI_ENABLE(&haudio_in_sai); +} + + + +static void SAIx_In_Init_SAIinterrupt(uint32_t SaiOutMode, uint32_t SlotActive, uint32_t AudioFreq) +{ + /* Initialize SAI2 block A in MASTER TX */ + /* Initialize the haudio_out_sai Instance parameter */ + haudio_out_sai.Instance = AUDIO_OUT_SAIx; // as this not already (previously) done in IN_OUT_Init ? + + /* Disable SAI peripheral to allow access to SAI internal registers */ + __HAL_SAI_DISABLE(&haudio_out_sai); + + /* Configure SAI_Block_A + LSBFirst: Disabled + DataSize: 16 */ + haudio_out_sai.Init.AudioFrequency = AudioFreq; + haudio_out_sai.Init.AudioMode = SaiOutMode; // not sure why SAI_MODEMASTER_TX is _passed_ to this function + haudio_out_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLED; + haudio_out_sai.Init.Protocol = SAI_FREE_PROTOCOL; + haudio_out_sai.Init.DataSize = SAI_DATASIZE_16; + haudio_out_sai.Init.FirstBit = SAI_FIRSTBIT_MSB; + haudio_out_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; + haudio_out_sai.Init.Synchro = SAI_ASYNCHRONOUS; + haudio_out_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLED; + haudio_out_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_EMPTY; // can we try empty later on? was 1QF + + /* Configure SAI_Block_A Frame + Frame Length: 64 + Frame active Length: 32 + FS Definition: Start frame + Channel Side identification + FS Polarity: FS active Low + FS Offset: FS asserted one bit before the first bit of slot 0 */ + haudio_out_sai.FrameInit.FrameLength = 64; + haudio_out_sai.FrameInit.ActiveFrameLength = 32; + haudio_out_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION; + haudio_out_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW; + haudio_out_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; + + /* Configure SAI Block_A Slot + Slot First Bit Offset: 0 + Slot Size : 16 + Slot Number: 4 + Slot Active: All slot actives */ + haudio_out_sai.SlotInit.FirstBitOffset = 0; + haudio_out_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE; + haudio_out_sai.SlotInit.SlotNumber = 4; + haudio_out_sai.SlotInit.SlotActive = CODEC_AUDIOFRAME_SLOT_02; // global variable SlotActive should be slots 0 and 2 + + HAL_SAI_Init(&haudio_out_sai); + + /* Initialize SAI2 block B in SLAVE RX synchronous from SAI2 block A */ + /* Initialize the haudio_in_sai Instance parameter */ + haudio_in_sai.Instance = AUDIO_IN_SAIx; // again, hasn't this been done previously? + + /* Disable SAI peripheral to allow access to SAI internal registers */ + __HAL_SAI_DISABLE(&haudio_in_sai); + + /* Configure SAI_Block_B + LSBFirst: Disabled + DataSize: 16 */ + haudio_in_sai.Init.AudioFrequency = AudioFreq; + haudio_in_sai.Init.AudioMode = SAI_MODESLAVE_RX; + haudio_in_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLED; + haudio_in_sai.Init.Protocol = SAI_FREE_PROTOCOL; + haudio_in_sai.Init.DataSize = SAI_DATASIZE_16; + haudio_in_sai.Init.FirstBit = SAI_FIRSTBIT_MSB; + haudio_in_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; + haudio_in_sai.Init.Synchro = SAI_SYNCHRONOUS; + haudio_in_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_DISABLED; + haudio_in_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_EMPTY; + + /* Configure SAI_Block_B Frame + Frame Length: 64 + Frame active Length: 32 + FS Definition: Start frame + Channel Side identification + FS Polarity: FS active Low + FS Offset: FS asserted one bit before the first bit of slot 0 */ + haudio_in_sai.FrameInit.FrameLength = 64; + haudio_in_sai.FrameInit.ActiveFrameLength = 32; + haudio_in_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION; + haudio_in_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW; + haudio_in_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; + + /* Configure SAI Block_B Slot + Slot First Bit Offset: 0 + Slot Size : 16 + Slot Number: 4 + Slot Active: All slot active */ + haudio_in_sai.SlotInit.FirstBitOffset = 0; + haudio_in_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE; + haudio_in_sai.SlotInit.SlotNumber = 4; + haudio_in_sai.SlotInit.SlotActive = SlotActive; + + HAL_SAI_Init(&haudio_in_sai); + /* Enable SAI peripheral */ + __HAL_SAI_ENABLE(&haudio_in_sai); + + /* Enable SAI peripheral to generate MCLK */ + __HAL_SAI_ENABLE(&haudio_out_sai); + +} + + + +static void SAIx_In_DeInit(void) +{ + /* Initialize the haudio_in_sai Instance parameter */ + haudio_in_sai.Instance = AUDIO_IN_SAIx; + + /* Disable SAI peripheral */ + __HAL_SAI_DISABLE(&haudio_in_sai); + + HAL_SAI_DeInit(&haudio_in_sai); +} + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.h b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.h new file mode 100644 index 0000000..8c8fbed --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32746g_discovery_audio.h @@ -0,0 +1,307 @@ +/** + ****************************************************************************** + * @file stm32746g_discovery_audio.h + * @author MCD Application Team + * Adapted for use as part of ARM University DSP Education Kit May 2017 + * @version V2.0.0 + * @date 30-December-2016 + * @brief This file contains the common defines and functions prototypes for + * the stm32746g_discovery_audio.c driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32746G_DISCOVERY_AUDIO_H +#define __STM32746G_DISCOVERY_AUDIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +/* Include audio component Driver */ +#include "../Components/wm8994/wm8994.h" +#include "stm32746g_discovery.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32746G_DISCOVERY + * @{ + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO STM32746G_DISCOVERY_AUDIO + * @{ + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO_Exported_Types STM32746G_DISCOVERY_AUDIO Exported Types + * @{ + */ +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO_Exported_Constants STM32746G_DISCOVERY_AUDIO Exported Constants + * @{ + */ + +/*------------------------------------------------------------------------------ + USER SAI defines parameters + -----------------------------------------------------------------------------*/ +/* CODEC_AudioFrame_SLOT_TDMMode + In W8994 codec the Audio frame contains 4 slots : TDM Mode + TDM format : + +------------------|------------------|--------------------|-------------------+ + | CODEC_SLOT0 Left | CODEC_SLOT1 Left | CODEC_SLOT0 Right | CODEC_SLOT1 Right | + +------------------------------------------------------------------------------+ + */ +/* To have 2 separate audio stream in Both headphone and speaker the 4 slot must be activated */ +#define CODEC_AUDIOFRAME_SLOT_0123 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_2 | SAI_SLOTACTIVE_3 +/* To have an audio stream in headphone only SAI Slot 0 and Slot 2 must be activated */ +#define CODEC_AUDIOFRAME_SLOT_02 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2 +/* To have an audio stream in speaker only SAI Slot 1 and Slot 3 must be activated */ +#define CODEC_AUDIOFRAME_SLOT_13 SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3 + +/* SAI OUT peripheral configuration defines */ +#define AUDIO_OUT_SAIx SAI2_Block_A +#define AUDIO_OUT_SAIx_CLK_ENABLE() __HAL_RCC_SAI2_CLK_ENABLE() +#define AUDIO_OUT_SAIx_CLK_DISABLE() __HAL_RCC_SAI2_CLK_DISABLE() +#define AUDIO_OUT_SAIx_SCK_AF GPIO_AF10_SAI2 +#define AUDIO_OUT_SAIx_FS_SD_MCLK_AF GPIO_AF10_SAI2 + +#define AUDIO_OUT_SAIx_MCLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define AUDIO_OUT_SAIx_MCLK_GPIO_PORT GPIOI +#define AUDIO_OUT_SAIx_MCLK_PIN GPIO_PIN_4 +#define AUDIO_OUT_SAIx_SCK_SD_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT GPIOI +#define AUDIO_OUT_SAIx_SCK_PIN GPIO_PIN_5 +#define AUDIO_OUT_SAIx_SD_PIN GPIO_PIN_6 +#define AUDIO_OUT_SAIx_FS_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() +#define AUDIO_OUT_SAIx_FS_GPIO_PORT GPIOI +#define AUDIO_OUT_SAIx_FS_PIN GPIO_PIN_7 + +/* SAI DMA Stream definitions */ +#define AUDIO_OUT_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() +#define AUDIO_OUT_SAIx_DMAx_STREAM DMA2_Stream4 +#define AUDIO_OUT_SAIx_DMAx_CHANNEL DMA_CHANNEL_3 +#define AUDIO_OUT_SAIx_DMAx_IRQ DMA2_Stream4_IRQn +#define AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD +#define AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD +#define DMA_MAX_SZE ((uint16_t)0xFFFF) + +#define AUDIO_OUT_SAIx_DMAx_IRQHandler DMA2_Stream4_IRQHandler + +/* Select the interrupt preemption priority for the DMA interrupt */ +#define AUDIO_OUT_IRQ_PREPRIO ((uint32_t)0x0E) /* Select the preemption priority level(0 is the highest) */ + +/*------------------------------------------------------------------------------ + AUDIO IN CONFIGURATION +------------------------------------------------------------------------------*/ +/* SAI IN peripheral configuration defines */ +#define AUDIO_IN_SAIx SAI2_Block_B +#define AUDIO_IN_SAIx_CLK_ENABLE() __HAL_RCC_SAI2_CLK_ENABLE() +#define AUDIO_IN_SAIx_CLK_DISABLE() __HAL_RCC_SAI2_CLK_DISABLE() +#define AUDIO_IN_SAIx_SD_AF GPIO_AF10_SAI2 + +#define AUDIO_IN_SAIx_SD_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE() +#define AUDIO_IN_SAIx_SD_GPIO_PORT GPIOG +#define AUDIO_IN_SAIx_SD_PIN GPIO_PIN_10 + +#define AUDIO_IN_INT_GPIO_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE() +#define AUDIO_IN_INT_GPIO_PORT GPIOH +#define AUDIO_IN_INT_GPIO_PIN GPIO_PIN_15 +#define AUDIO_IN_INT_IRQ EXTI15_10_IRQn + +/* SAI DMA Stream definitions */ +#define AUDIO_IN_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE() +#define AUDIO_IN_SAIx_DMAx_STREAM DMA2_Stream7 +#define AUDIO_IN_SAIx_DMAx_CHANNEL DMA_CHANNEL_0 +#define AUDIO_IN_SAIx_DMAx_IRQ DMA2_Stream7_IRQn +#define AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD +#define AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD + +#define AUDIO_IN_SAIx_DMAx_IRQHandler DMA2_Stream7_IRQHandler +#define AUDIO_IN_INT_IRQHandler EXTI15_10_IRQHandler + +/* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */ +#define AUDIO_IN_IRQ_PREPRIO ((uint32_t)0x0F) /* Select the preemption priority level(0 is the highest) */ + +/*------------------------------------------------------------------------------ + CONFIGURATION: Audio Driver Configuration parameters +------------------------------------------------------------------------------*/ + +#define AUDIODATA_SIZE ((uint16_t)2) /* 16-bits audio data size */ + +/* Audio status definition */ +#define AUDIO_OK ((uint8_t)0) +#define AUDIO_ERROR ((uint8_t)1) +#define AUDIO_TIMEOUT ((uint8_t)2) + +/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */ +#define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K +#define DEFAULT_AUDIO_IN_BIT_RESOLUTION ((uint8_t)16) +#define DEFAULT_AUDIO_IN_CHANNEL_NBR ((uint8_t)2) /* Mono = 1, Stereo = 2 */ +// default gain (affects o/p to HP) changed 2 May 2017 by DSR (was 64) +#define DEFAULT_AUDIO_IN_VOLUME ((uint16_t)100) + +/*------------------------------------------------------------------------------ + OPTIONAL Configuration defines parameters +------------------------------------------------------------------------------*/ + +/* Delay for the Codec to be correctly reset */ +#define CODEC_RESET_DELAY ((uint8_t)5) + + +/*------------------------------------------------------------------------------ + OUTPUT DEVICES definition +------------------------------------------------------------------------------*/ +/* Alias on existing output devices to adapt for 2 headphones output */ +#define OUTPUT_DEVICE_HEADPHONE1 OUTPUT_DEVICE_HEADPHONE +#define OUTPUT_DEVICE_HEADPHONE2 OUTPUT_DEVICE_SPEAKER /* Headphone2 is connected to Speaker output of the wm8994 */ + +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO_Exported_Variables STM32746G_DISCOVERY_AUDIO Exported Variables + * @{ + */ +extern __IO uint16_t AudioInVolume; + /** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO_Exported_Macros STM32746G_DISCOVERY_AUDIO Exported Macros + * @{ + */ +#define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE) +/** + * @} + */ + +/** @addtogroup STM32746G_DISCOVERY_AUDIO_OUT_Exported_Functions + * @{ + */ +uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq); +uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size); +uint8_t BSP_AUDIO_OUT_MultiBufferPlay(uint16_t* pBufferM0, uint16_t* pBufferM1, uint32_t Size); +void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size); +uint8_t BSP_AUDIO_OUT_Pause(void); +uint8_t BSP_AUDIO_OUT_Resume(void); +uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option); +uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume); +void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq); +void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot); +uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd); +uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output); +void BSP_AUDIO_OUT_DeInit(void); + +/* User Callbacks: user has to implement these functions in his code if they are needed. */ +/* This function is called when the requested data has been completely transferred.*/ +void BSP_AUDIO_OUT_TransferComplete_CallBack(void); +// added 17 May 2017 DSR for multibuffer +void BSP_AUDIO_OUT_TransferCompleteM1_CallBack(void); + + +/* This function is called when half of the requested buffer has been transferred. */ +void BSP_AUDIO_OUT_HalfTransfer_CallBack(void); + +/* This function is called when an Interrupt due to transfer error on or peripheral + error occurs. */ +void BSP_AUDIO_OUT_Error_CallBack(void); + +/* These function can be modified in case the current settings (e.g. DMA stream) + need to be changed for specific application needs */ +void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params); +void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params); +void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params); + +/** + * @} + */ + +/** @defgroup STM32746G_DISCOVERY_AUDIO_IN_Exported_Functions STM32746G_DISCOVERY_AUDIO_IN Exported Functions + * @{ + */ +uint8_t BSP_AUDIO_SAI_INTERRUPT_INIT(int16_t* rxLptr, int16_t* rxRptr, int16_t* txLptr, int16_t* txRptr); +uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr); +uint8_t BSP_AUDIO_IN_InitEx(uint16_t InputDevice, uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr); +uint8_t BSP_AUDIO_IN_OUT_Init(uint16_t InputDevice, uint16_t OutputDevice, uint32_t AudioFreq); +uint8_t BSP_AUDIO_IN_OUT_Init_SAIinterrupt(uint16_t InputDevice, uint16_t OutputDevice, uint32_t AudioFreq); +uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size); +uint8_t BSP_AUDIO_IN_MultiBufferRecord(uint16_t* pbufM0, uint16_t* pbufM1, uint32_t size); +uint8_t BSP_AUDIO_IN_Stop(uint32_t Option); +uint8_t BSP_AUDIO_IN_Pause(void); +uint8_t BSP_AUDIO_IN_Resume(void); +uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume); +void BSP_AUDIO_IN_DeInit(void); +/* User Callbacks: user has to implement these functions in his code if they are needed. */ +/* This function should be implemented by the user application. + It is called into this driver when the current buffer is filled to prepare the next + buffer pointer and its size. */ +void BSP_AUDIO_IN_TransferComplete_CallBack(void); +// added 17 May 2017 DSR for multibuffer +void BSP_AUDIO_IN_TransferCompleteM1_CallBack(void); + +void BSP_AUDIO_IN_HalfTransfer_CallBack(void); + +/* This function is called when an Interrupt due to transfer error on or peripheral + error occurs. */ +void BSP_AUDIO_IN_Error_CallBack(void); + +/* These function can be modified in case the current settings (e.g. DMA stream) + need to be changed for specific application needs */ +void BSP_AUDIO_IN_MspInit(SAI_HandleTypeDef *hsai, void *Params); +void BSP_AUDIO_IN_MspDeInit(SAI_HandleTypeDef *hsai, void *Params); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32746G_DISCOVERY_AUDIO_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.c b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.c new file mode 100644 index 0000000..07be5d8 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.c @@ -0,0 +1,910 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_sai.c + * @author MCD Application Team + * @version Modified 12 May 2017 DSR for multibuffer ping pong and again + * 4 July 2017 to allow use with both DMA- and interrupt-based i/o + * Cut-down version doesn't have all of the options of original version + * @date 30-December-2016 + * @brief SAI HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Serial Audio Interface (SAI) peripheral: + * + Initialization/de-initialization functions + * + I/O operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + + +#ifdef HAL_SAI_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ + +typedef enum { + SAI_MODE_DMA, + SAI_MODE_IT +}SAI_ModeTypedef; + +/* Private define ------------------------------------------------------------*/ + +/** @defgroup SAI_Private_Constants SAI Private Constants + * @{ + */ +// not sure whether this FIFO size is actually implemented - DSR 13 July +#define SAI_DEFAULT_TIMEOUT 4 /* 4ms */ + +static uint32_t SAI_InterruptFlag(SAI_HandleTypeDef *hsai, uint32_t mode); + +static HAL_StatusTypeDef SAI_Disable(SAI_HandleTypeDef *hsai); +static void SAI_Receive_IT16Bit(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out); + +static void SAI_DMATxCplt(DMA_HandleTypeDef *hdma); +static void SAI_DMATxM1Cplt(DMA_HandleTypeDef *hdma); +static void SAI_DMARxCplt(DMA_HandleTypeDef *hdma); +static void SAI_DMARxM1Cplt(DMA_HandleTypeDef *hdma); +static void SAI_DMAError(DMA_HandleTypeDef *hdma); + +/** + * @brief Initialize the SAI according to the specified parameters. + * in the SAI_InitTypeDef structure and initialize the associated handle. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai) +{ + uint32_t tmpregisterGCR = 0; + uint32_t ckstr_bits = 0; + uint32_t syncen_bits = 0; + + /* Check the SAI handle allocation */ + if(hsai == NULL) + { + return HAL_ERROR; + } + + /* check the instance */ + assert_param(IS_SAI_ALL_INSTANCE(hsai->Instance)); + + /* Check the SAI Block parameters */ + assert_param(IS_SAI_AUDIO_FREQUENCY(hsai->Init.AudioFrequency)); + assert_param(IS_SAI_BLOCK_PROTOCOL(hsai->Init.Protocol)); + assert_param(IS_SAI_BLOCK_MODE(hsai->Init.AudioMode)); + assert_param(IS_SAI_BLOCK_DATASIZE(hsai->Init.DataSize)); + assert_param(IS_SAI_BLOCK_FIRST_BIT(hsai->Init.FirstBit)); + assert_param(IS_SAI_BLOCK_CLOCK_STROBING(hsai->Init.ClockStrobing)); + assert_param(IS_SAI_BLOCK_SYNCHRO(hsai->Init.Synchro)); + assert_param(IS_SAI_BLOCK_OUTPUT_DRIVE(hsai->Init.OutputDrive)); + assert_param(IS_SAI_BLOCK_NODIVIDER(hsai->Init.NoDivider)); + assert_param(IS_SAI_BLOCK_FIFO_THRESHOLD(hsai->Init.FIFOThreshold)); + assert_param(IS_SAI_MONO_STEREO_MODE(hsai->Init.MonoStereoMode)); + assert_param(IS_SAI_BLOCK_COMPANDING_MODE(hsai->Init.CompandingMode)); + assert_param(IS_SAI_BLOCK_TRISTATE_MANAGEMENT(hsai->Init.TriState)); + assert_param(IS_SAI_BLOCK_SYNCEXT(hsai->Init.SynchroExt)); + + /* Check the SAI Block Frame parameters */ + assert_param(IS_SAI_BLOCK_FRAME_LENGTH(hsai->FrameInit.FrameLength)); + assert_param(IS_SAI_BLOCK_ACTIVE_FRAME(hsai->FrameInit.ActiveFrameLength)); + assert_param(IS_SAI_BLOCK_FS_DEFINITION(hsai->FrameInit.FSDefinition)); + assert_param(IS_SAI_BLOCK_FS_POLARITY(hsai->FrameInit.FSPolarity)); + assert_param(IS_SAI_BLOCK_FS_OFFSET(hsai->FrameInit.FSOffset)); + + /* Check the SAI Block Slot parameters */ + assert_param(IS_SAI_BLOCK_FIRSTBIT_OFFSET(hsai->SlotInit.FirstBitOffset)); + assert_param(IS_SAI_BLOCK_SLOT_SIZE(hsai->SlotInit.SlotSize)); + assert_param(IS_SAI_BLOCK_SLOT_NUMBER(hsai->SlotInit.SlotNumber)); + assert_param(IS_SAI_SLOT_ACTIVE(hsai->SlotInit.SlotActive)); + + if(hsai->State == HAL_SAI_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hsai->Lock = HAL_UNLOCKED; + + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ +// function defined in this source file and does nothing - DSR 13 July + HAL_SAI_MspInit(hsai); + } + + hsai->State = HAL_SAI_STATE_BUSY; + + /* Disable the selected SAI peripheral */ + SAI_Disable(hsai); + + /* SAI Block Synchro Configuration -----------------------------------------*/ + /* This setting must be done with both audio block (A & B) disabled */ + switch(hsai->Init.SynchroExt) + { + case SAI_SYNCEXT_DISABLE : + tmpregisterGCR = 0; + break; + case SAI_SYNCEXT_OUTBLOCKA_ENABLE : + tmpregisterGCR = SAI_GCR_SYNCOUT_0; + break; + case SAI_SYNCEXT_OUTBLOCKB_ENABLE : + tmpregisterGCR = SAI_GCR_SYNCOUT_1; + break; + default: + break; + } + + switch(hsai->Init.Synchro) + { + case SAI_ASYNCHRONOUS : + { + syncen_bits = 0; + } + break; + case SAI_SYNCHRONOUS : + { + syncen_bits = SAI_xCR1_SYNCEN_0; + } + break; + case SAI_SYNCHRONOUS_EXT_SAI1 : + { + syncen_bits = SAI_xCR1_SYNCEN_1; + } + break; + case SAI_SYNCHRONOUS_EXT_SAI2 : + { + syncen_bits = SAI_xCR1_SYNCEN_1; + tmpregisterGCR |= SAI_GCR_SYNCIN_0; + } + break; + default: + break; + } + + if((hsai->Instance == SAI1_Block_A) || (hsai->Instance == SAI1_Block_B)) + { + SAI1->GCR = tmpregisterGCR; + } + else + { + SAI2->GCR = tmpregisterGCR; + } + + if(hsai->Init.AudioFrequency != SAI_AUDIO_FREQUENCY_MCKDIV) + { + uint32_t freq = 0; + uint32_t tmpval; + + if((hsai->Instance == SAI1_Block_A ) || (hsai->Instance == SAI1_Block_B )) + { + freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SAI1); + } + if((hsai->Instance == SAI2_Block_A ) || (hsai->Instance == SAI2_Block_B )) + { + freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SAI2); + } + + /* Configure Master Clock using the following formula : + MCLK_x = SAI_CK_x / (MCKDIV[3:0] * 2) with MCLK_x = 256 * FS + FS = SAI_CK_x / (MCKDIV[3:0] * 2) * 256 + MCKDIV[3:0] = SAI_CK_x / FS * 512 */ + /* (freq x 10) to keep Significant digits */ + tmpval = (freq * 10) / (hsai->Init.AudioFrequency * 2 * 256); + hsai->Init.Mckdiv = tmpval / 10; + + /* Round result to the nearest integer */ + if((tmpval % 10) > 8) + { + hsai->Init.Mckdiv+= 1; + } + } + + /* Compute CKSTR bits of SAI CR1 according ClockStrobing and AudioMode */ + if((hsai->Init.AudioMode == SAI_MODEMASTER_TX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) + { /* Transmit */ + ckstr_bits = (hsai->Init.ClockStrobing == SAI_CLOCKSTROBING_RISINGEDGE) ? 0 : SAI_xCR1_CKSTR; + } + else + { /* Receive */ + ckstr_bits = (hsai->Init.ClockStrobing == SAI_CLOCKSTROBING_RISINGEDGE) ? SAI_xCR1_CKSTR : 0; + } + + /* SAI Block Configuration -------------------------------------------------*/ + /* SAI CR1 Configuration */ + hsai->Instance->CR1&=~(SAI_xCR1_MODE | SAI_xCR1_PRTCFG | SAI_xCR1_DS | \ + SAI_xCR1_LSBFIRST | SAI_xCR1_CKSTR | SAI_xCR1_SYNCEN |\ + SAI_xCR1_MONO | SAI_xCR1_OUTDRIV | SAI_xCR1_DMAEN | \ + SAI_xCR1_NODIV | SAI_xCR1_MCKDIV); + + hsai->Instance->CR1|=(hsai->Init.AudioMode | hsai->Init.Protocol | \ + hsai->Init.DataSize | hsai->Init.FirstBit | \ + ckstr_bits | syncen_bits | \ + hsai->Init.MonoStereoMode | hsai->Init.OutputDrive | \ + hsai->Init.NoDivider | (hsai->Init.Mckdiv << 20)); + + /* SAI CR2 Configuration */ + hsai->Instance->CR2&= ~(SAI_xCR2_FTH | SAI_xCR2_FFLUSH | SAI_xCR2_COMP | SAI_xCR2_CPL); + hsai->Instance->CR2|= (hsai->Init.FIFOThreshold | hsai->Init.CompandingMode | hsai->Init.TriState); + + /* SAI Frame Configuration -----------------------------------------*/ + hsai->Instance->FRCR&=(~(SAI_xFRCR_FRL | SAI_xFRCR_FSALL | SAI_xFRCR_FSDEF | \ + SAI_xFRCR_FSPOL | SAI_xFRCR_FSOFF)); + hsai->Instance->FRCR|=((hsai->FrameInit.FrameLength - 1) | + hsai->FrameInit.FSOffset | + hsai->FrameInit.FSDefinition | + hsai->FrameInit.FSPolarity | + ((hsai->FrameInit.ActiveFrameLength - 1) << 8)); + + /* SAI Block_x SLOT Configuration ------------------------------------------*/ + /* This register has no meaning in AC 97 and SPDIF audio protocol */ + hsai->Instance->SLOTR&= (~(SAI_xSLOTR_FBOFF | SAI_xSLOTR_SLOTSZ | \ + SAI_xSLOTR_NBSLOT | SAI_xSLOTR_SLOTEN )); + + hsai->Instance->SLOTR|= hsai->SlotInit.FirstBitOffset | hsai->SlotInit.SlotSize + | (hsai->SlotInit.SlotActive << 16) | ((hsai->SlotInit.SlotNumber - 1) << 8); + + /* Initialize the error code */ + hsai->ErrorCode = HAL_SAI_ERROR_NONE; + + /* Initialize the SAI state */ + hsai->State= HAL_SAI_STATE_READY; + + /* Release Lock */ + __HAL_UNLOCK(hsai); + + return HAL_OK; +} + +/** + * @brief DeInitialize the SAI peripheral. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SAI_DeInit(SAI_HandleTypeDef *hsai) +{ + /* Check the SAI handle allocation */ + if(hsai == NULL) + { + return HAL_ERROR; + } + + hsai->State = HAL_SAI_STATE_BUSY; + + /* Disabled All interrupt and clear all the flag */ + hsai->Instance->IMR = 0; + hsai->Instance->CLRFR = 0xFFFFFFFFU; + + /* Disable the SAI */ + SAI_Disable(hsai); + + /* Flush the fifo */ + SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); + + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_SAI_MspDeInit(hsai); + + /* Initialize the error code */ + hsai->ErrorCode = HAL_SAI_ERROR_NONE; + + /* Initialize the SAI state */ + hsai->State = HAL_SAI_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(hsai); + + return HAL_OK; +} + +/** + * @brief Initialize the SAI MSP. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +__weak void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsai); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SAI_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitialize the SAI MSP. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +__weak void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsai); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SAI_MspDeInit could be implemented in the user file + */ +} + + +/** + * Modified 29 May 2017 DSR for interrupt-based operation + * @brief initialises SAI with interrupt service routine for RX block B and enables + * @param none + * @retval AUDIO_OK if correct communication, else wrong communication + */ +HAL_StatusTypeDef HAL_SAI_Receive_IT_SAIinterrupt(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out) + +{ + hsai_out->ErrorCode = HAL_SAI_ERROR_NONE; + hsai_out->State = HAL_SAI_STATE_BUSY_TX; + hsai_in->ErrorCode = HAL_SAI_ERROR_NONE; + hsai_in->State = HAL_SAI_STATE_BUSY_RX; + + hsai_in->NewInterruptServiceRoutine = SAI_Receive_IT16Bit; + hsai_out->NewInterruptServiceRoutine = SAI_Receive_IT16Bit; + /* Enable FRQ and OVRUDR interrupts */ + __HAL_SAI_ENABLE_IT(hsai_out, SAI_InterruptFlag(hsai_out, SAI_MODE_IT)); // temp DSR + /* Enable SAI peripheral blocks */ + __HAL_SAI_ENABLE(hsai_in); // does this set SAIEN bit in CR??? DSR + __HAL_SAI_ENABLE(hsai_out); // does this set SAIEN bit in CR??? DSR + return HAL_OK; +} + + +/** + * @brief Handle SAI interrupt request. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function modified by DSR - June 2017 +void HAL_SAI_IRQHandler(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out) +{ +// check out hsai_out (TX SAI2 Block A) + if(hsai_out->State != HAL_SAI_STATE_RESET) + { + uint32_t itflags = hsai_out->Instance->SR; + uint32_t itsources = hsai_out->Instance->IMR; + uint32_t cr1config = hsai_out->Instance->CR1; + uint32_t tmperror; + + /* SAI Fifo request interrupt occured ------------------------------------*/ + if(((itflags & SAI_xSR_FREQ) == SAI_xSR_FREQ) && ((itsources & SAI_IT_FREQ) == SAI_IT_FREQ)) + { + hsai_out->NewInterruptServiceRoutine(hsai_in, hsai_out); + } + /* SAI Overrun error interrupt occurred ----------------------------------*/ + else if(((itflags & SAI_FLAG_OVRUDR) == SAI_FLAG_OVRUDR) && ((itsources & SAI_IT_OVRUDR) == SAI_IT_OVRUDR)) + { + /* Clear the SAI Overrun flag */ + __HAL_SAI_CLEAR_FLAG(hsai_out, SAI_FLAG_OVRUDR); + /* Get the SAI error code */ + tmperror = ((hsai_out->State == HAL_SAI_STATE_BUSY_RX) ? HAL_SAI_ERROR_OVR : HAL_SAI_ERROR_UDR); + /* Change the SAI error code */ + hsai_out->ErrorCode |= tmperror; + /* the transfer is not stopped, we will forward the information to the user and we let the user decide what needs to be done */ + HAL_SAI_ErrorCallback(hsai_out); + } + else + { + /* Nothing to do */ + } + } +} + + +/* + New function for multibuffer DSR 12 May 2017 +*/ +HAL_StatusTypeDef HAL_SAI_Transmit_DMA_MultiBuffer(SAI_HandleTypeDef *hsai, uint8_t *pDataM0, uint8_t *pDataM1, uint16_t Size) +{ + if((pDataM0 == NULL) || (Size == 0)) + { + return HAL_ERROR; + } + + if(hsai->State == HAL_SAI_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hsai); + + hsai->pBuffPtr = pDataM0; // only M0 address entered into hsai SAI_HandleTypeDef structure field !!! + hsai->XferSize = Size; + hsai->XferCount = Size; + hsai->ErrorCode = HAL_SAI_ERROR_NONE; + hsai->State = HAL_SAI_STATE_BUSY_TX; + + /* Set the SAI Tx DMA Half transfer complete callback - possibly make this NULL DSR ??? */ +// hsai->hdmatx->XferHalfCpltCallback = SAI_DMATxHalfCplt; + hsai->hdmatx->XferHalfCpltCallback = NULL; // i.e. do not use half complete event/interrupt/callback + + /* Set the SAI Tx M1 DMA Half transfer complete callback - possibly make this NULL DSR ??? */ +// hsai->hdmatx->XferM1HalfCpltCallback = SAI_DMATxHalfCplt; + hsai->hdmatx->XferM1HalfCpltCallback = NULL; // i.e. do not use half complete event/interrupt/callback + + + /* Set the SAI TxDMA transfer M0 complete callback */ + hsai->hdmatx->XferCpltCallback = SAI_DMATxCplt; + + /* Set the SAI TxDMA transfer M1 complete callback - added DSR */ + hsai->hdmatx->XferM1CpltCallback = SAI_DMATxM1Cplt; + + /* Set the DMA error callback */ + hsai->hdmatx->XferErrorCallback = SAI_DMAError; + + /* Set the DMA Tx abort callback */ + hsai->hdmatx->XferAbortCallback = NULL; + + /* Enable the Tx DMA Stream for multibuffer operation DSR */ + /* possible error passing 32-bit pointer pDataM1 ??? */ + if(HAL_DMAEx_MultiBufferStart_IT(hsai->hdmatx, (uint32_t)hsai->pBuffPtr, (uint32_t)&hsai->Instance->DR, (uint32_t)pDataM1, hsai->XferSize) != HAL_OK) + { + __HAL_UNLOCK(hsai); + return HAL_ERROR; + } + + /* Check if the SAI is already enabled */ + if((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == RESET) + { + /* Enable SAI peripheral */ + __HAL_SAI_ENABLE(hsai); // sets the CR1 SAIEN bit + } + + /* Enable the interrupts for error handling */ + __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + /* Enable SAI Tx DMA Request */ + hsai->Instance->CR1 |= SAI_xCR1_DMAEN; + + /* Process Unlocked */ + __HAL_UNLOCK(hsai); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * modified by DSR for multibuffer 12 May 2017 + * @brief Receive an amount of data in non-blocking mode with DMA. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @param pData: Pointer to data buffer + * @param Size: Amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SAI_Receive_DMA_MultiBuffer(SAI_HandleTypeDef *hsai, uint8_t *pDataM0, uint8_t *pDataM1, uint16_t Size) +{ + + if((pDataM0 == NULL) || (Size == 0)) + { + return HAL_ERROR; + } + + if(hsai->State == HAL_SAI_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hsai); + + hsai->pBuffPtr = pDataM0; + hsai->XferSize = Size; + hsai->XferCount = Size; + hsai->ErrorCode = HAL_SAI_ERROR_NONE; + hsai->State = HAL_SAI_STATE_BUSY_RX; + + /* Set the SAI Rx DMA Half transfer complete callback */ + /* set half transfer callbacks to NULL ??? DSR */ +// hsai->hdmarx->XferHalfCpltCallback = SAI_DMARxHalfCplt; + hsai->hdmarx->XferHalfCpltCallback = NULL; // i.e. do not use half complete event/interrupt/callback + + /* Set the SAI Rx M1 DMA Half transfer complete callback */ + /* set half transfer callbacks to NULL ??? DSR */ +// hsai->hdmarx->XferM1HalfCpltCallback = SAI_DMARxHalfCplt; + hsai->hdmarx->XferM1HalfCpltCallback = NULL; // i.e. do not use half complete event/interrupt/callback + + + /* Set the SAI Rx DMA transfer complete callback */ + hsai->hdmarx->XferCpltCallback = SAI_DMARxCplt; + + /* Set the SAI Rx DMA transfer M1 complete callback - new DSR */ + hsai->hdmarx->XferM1CpltCallback = SAI_DMARxM1Cplt; + + /* Set the DMA error callback */ + hsai->hdmarx->XferErrorCallback = SAI_DMAError; + + /* Set the DMA Rx abort callback */ + hsai->hdmarx->XferAbortCallback = NULL; + + /* Enable the Rx DMA Stream for multibuffer operation DSR 17 May 2017 */ + /* possible problem with 32-bit pointer to pDataM1 ??? */ + // apparently not + // XferSize goes to NDTR register, it is the number of items in DMA transfer block + // an item is a 16-bit 'half-word' as defined by MSIZE and PSIZE + if(HAL_DMAEx_MultiBufferStart_IT(hsai->hdmarx, (uint32_t)&hsai->Instance->DR, (uint32_t)hsai->pBuffPtr, (uint32_t)pDataM1, hsai->XferSize) != HAL_OK) + { + __HAL_UNLOCK(hsai); + return HAL_ERROR; + } + + /* Check if the SAI is already enabled */ + if((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == RESET) + { + /* Enable SAI peripheral */ + __HAL_SAI_ENABLE(hsai); // sets the CR1 SAIEN bit + } + + /* Enable the interrupts for error handling */ + __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + /* Enable SAI Rx DMA Request */ + hsai->Instance->CR1 |= SAI_xCR1_DMAEN; + + /* Process Unlocked */ + __HAL_UNLOCK(hsai); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Handle SAI interrupt request. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ + +/** + * @brief Tx Transfer completed callback. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function defined in stm32f746g_discovery_audio.c +__weak void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai) +{ + UNUSED(hsai); +} + +/** + * added DSR for multibuffer DMA + * @brief Tx Transfer completed callback. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function defined in stm32f746g_discovery_audio.c +__weak void HAL_SAI_TxM1CpltCallback(SAI_HandleTypeDef *hsai) +{ + UNUSED(hsai); +} + +/** + * @brief Rx Transfer completed callback. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function defined in stm32f746g_discovery_audio.c +__weak void HAL_SAI_RxCpltCallback_Interrupt() +{ +} + +/** + * added DSR for multibuffer + * @brief Rx Transfer completed callback. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function defined in stm32f746g_discovery_audio.c +__weak void HAL_SAI_RxM1CpltCallback(SAI_HandleTypeDef *hsai) +{ + UNUSED(hsai); +} + +/** + * @brief SAI error callback. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +__weak void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai) +{ + UNUSED(hsai); +} + + + + +/** + * @brief Return the SAI handle state. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval HAL state + */ +HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai) +{ + return hsai->State; +} + +/** +* @brief Return the SAI error code. +* @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for the specified SAI Block. +* @retval SAI Error Code +*/ +uint32_t HAL_SAI_GetError(SAI_HandleTypeDef *hsai) +{ + return hsai->ErrorCode; +} + + +/** + * @brief Return the interrupt flag to set according the SAI setup. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @param mode: SAI_MODE_DMA or SAI_MODE_IT + * @retval the list of the IT flag to enable + */ +static uint32_t SAI_InterruptFlag(SAI_HandleTypeDef *hsai, uint32_t mode) +{ + uint32_t tmpIT = SAI_IT_OVRUDR; + + if(mode == SAI_MODE_IT) + { + tmpIT|= SAI_IT_FREQ; + } + + if((hsai->Init.Protocol == SAI_AC97_PROTOCOL) && + ((hsai->Init.AudioMode == SAI_MODESLAVE_RX) || (hsai->Init.AudioMode == SAI_MODEMASTER_RX))) + { + tmpIT|= SAI_IT_CNRDY; + } + + if((hsai->Init.AudioMode == SAI_MODESLAVE_RX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) + { + tmpIT|= SAI_IT_AFSDET | SAI_IT_LFSDET; + } + else + { + /* hsai has been configured in master mode */ + tmpIT|= SAI_IT_WCKCFG; + } + return tmpIT; +} + + + +/** + * @brief Disable the SAI and wait for the disabling. + * @param hsai : pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +static HAL_StatusTypeDef SAI_Disable(SAI_HandleTypeDef *hsai) +{ + register uint32_t count = SAI_DEFAULT_TIMEOUT * (SystemCoreClock /7/1000); + HAL_StatusTypeDef status = HAL_OK; + + /* Disable the SAI instance */ + __HAL_SAI_DISABLE(hsai); + + do + { + /* Check for the Timeout */ + if (count-- == 0) + { + /* Update error code */ + hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT; + status = HAL_TIMEOUT; + break; + } + } while((hsai->Instance->CR1 & SAI_xCR1_SAIEN) != RESET); + + return status; +} + + +/** + * @brief Rx Handler for Receive in Interrupt mode for 16-Bit transfer. + * @param hsai: pointer to a SAI_HandleTypeDef structure that contains + * the configuration information for SAI module. + * @retval None + */ +// function modified from that of same name DSR June 2017 +// used in interrupt-based i/o and not for DMA +static void SAI_Receive_IT16Bit(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out) +{ + /* Receive data and place in global variables pointed to from structure */ +// read two 16-bit values from the DR in the RX block of the SAI + *hsai_in->sample_right_ptr = hsai_in->Instance->DR; + *hsai_in->sample_left_ptr = hsai_in->Instance->DR; + /* Disable FREQ and OVRUDR interrupts */ + __HAL_SAI_DISABLE_IT(hsai_out, SAI_InterruptFlag(hsai_out, SAI_MODE_IT)); // changed to TX 31 May + /* Clear the SAI Overrun flag */ + __HAL_SAI_CLEAR_FLAG(hsai_out, SAI_FLAG_OVRUDR); // changed to TX 31 May +// this routine, defined ultimately in stm32f746g_discovery_audio.c, is effectively the ISR +// the Rx in the function name is possibly superfluous or even misleading since interrupts +// are generated by TX block in SAI but both TX and RX are handled in the ISR + HAL_SAI_RxCpltCallback_Interrupt(); + + /* transmit data held in global variables pointed to from structure */ +// write two 16-bit values to the DR in the TX block of the SAI + hsai_out->Instance->DR = *hsai_out->sample_right_ptr; + hsai_out->Instance->DR = *hsai_out->sample_left_ptr; + + hsai_in->State = HAL_SAI_STATE_READY; // does this have any meaning to us? DSR + __HAL_SAI_ENABLE_IT(hsai_out, SAI_InterruptFlag(hsai_out, SAI_MODE_IT)); +} + + +/** + * @brief DMA SAI transmit process complete callback. + * @param hdma: pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SAI_DMATxCplt(DMA_HandleTypeDef *hdma) +{ + SAI_HandleTypeDef* hsai = (SAI_HandleTypeDef*)((DMA_HandleTypeDef* )hdma)->Parent; + + if((hdma->Instance->CR & DMA_SxCR_CIRC) == 0) + { + hsai->XferCount = 0; + + /* Disable SAI Tx DMA Request */ + hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); + + /* Stop the interrupts error handling */ + __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + hsai->State= HAL_SAI_STATE_READY; + } + HAL_SAI_TxCpltCallback(hsai); +} + +/** + * added 17 May 2017 DSR for multibuffer + * @brief DMA SAI transmit process complete callback. + * @param hdma: pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SAI_DMATxM1Cplt(DMA_HandleTypeDef *hdma) +{ + SAI_HandleTypeDef* hsai = (SAI_HandleTypeDef*)((DMA_HandleTypeDef* )hdma)->Parent; + + if((hdma->Instance->CR & DMA_SxCR_CIRC) == 0) + { + hsai->XferCount = 0; + + /* Disable SAI Tx DMA Request */ + hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); + + /* Stop the interrupts error handling */ + __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + hsai->State= HAL_SAI_STATE_READY; + } + HAL_SAI_TxM1CpltCallback(hsai); +} + + +/** + * @brief DMA SAI receive process complete callback. + * @param hdma: pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SAI_DMARxCplt(DMA_HandleTypeDef *hdma) +{ + SAI_HandleTypeDef* hsai = ( SAI_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + if((hdma->Instance->CR & DMA_SxCR_CIRC) == 0) + { + /* Disable Rx DMA Request */ + hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); + hsai->XferCount = 0; + + /* Stop the interrupts error handling */ + __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + hsai->State = HAL_SAI_STATE_READY; + } + HAL_SAI_RxCpltCallback(); +} + + +/** + * added 17 May 2017 DSR for multibuffer + * @brief DMA SAI receive process complete callback. + * @param hdma: pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SAI_DMARxM1Cplt(DMA_HandleTypeDef *hdma) +{ + SAI_HandleTypeDef* hsai = ( SAI_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + if((hdma->Instance->CR & DMA_SxCR_CIRC) == 0) + { + /* Disable Rx DMA Request */ + hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); + hsai->XferCount = 0; + + /* Stop the interrupts error handling */ + __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); + + hsai->State = HAL_SAI_STATE_READY; + } + HAL_SAI_RxM1CpltCallback(hsai); +} + +/** + * @brief DMA SAI communication error callback. + * @param hdma: pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void SAI_DMAError(DMA_HandleTypeDef *hdma) +{ + SAI_HandleTypeDef* hsai = ( SAI_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + + /* Set SAI error code */ + hsai->ErrorCode |= HAL_SAI_ERROR_DMA; + + if((hsai->hdmatx->ErrorCode == HAL_DMA_ERROR_TE) || (hsai->hdmarx->ErrorCode == HAL_DMA_ERROR_TE)) + { + /* Disable the SAI DMA request */ + hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; + + /* Disable SAI peripheral */ + SAI_Disable(hsai); + + /* Set the SAI state ready to be able to start again the process */ + hsai->State = HAL_SAI_STATE_READY; + + /* Initialize XferCount */ + hsai->XferCount = 0U; + } + /* SAI error Callback */ + HAL_SAI_ErrorCallback(hsai); +} + + +#endif /* HAL_SAI_MODULE_ENABLED */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.h b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.h new file mode 100644 index 0000000..a74bbc5 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/stm32f7xx_hal_sai.h @@ -0,0 +1,866 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_sai.h + * @author MCD Application Team + * @version Modified 12 May 2017 DSR for multibuffer ping pong and again + * 4 July 2017 to allow use with both DMA- and interrupt-based i/o + * Cut-down version doesn't have all of the options of original version + * @version V1.2.0 + * @date 30-December-2016 + * @brief Header file of SAI HAL module. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_SAI_H +#define __STM32F7xx_HAL_SAI_H + +#ifdef __cplusplus + extern "C" { +#endif + + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup SAI + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup SAI_Exported_Types SAI Exported Types + * @{ + */ + +/** + * @brief HAL State structures definition + */ +typedef enum +{ + HAL_SAI_STATE_RESET = 0x00U, /*!< SAI not yet initialized or disabled */ + HAL_SAI_STATE_READY = 0x01U, /*!< SAI initialized and ready for use */ + HAL_SAI_STATE_BUSY = 0x02U, /*!< SAI internal process is ongoing */ + HAL_SAI_STATE_BUSY_TX = 0x12U, /*!< Data transmission process is ongoing */ + HAL_SAI_STATE_BUSY_RX = 0x22U, /*!< Data reception process is ongoing */ +}HAL_SAI_StateTypeDef; + +/** + * @brief SAI Callback prototype + */ +typedef void (*SAIcallback)(void); + +/** @defgroup SAI_Init_Structure_definition SAI Init Structure definition + * @brief SAI Init Structure definition + * @{ + */ +typedef struct +{ + uint32_t AudioMode; /*!< Specifies the SAI Block audio Mode. + This parameter can be a value of @ref SAI_Block_Mode */ + + uint32_t Synchro; /*!< Specifies SAI Block synchronization + This parameter can be a value of @ref SAI_Block_Synchronization */ + + uint32_t SynchroExt; /*!< Specifies SAI external output synchronization, this setup is common + for BlockA and BlockB + This parameter can be a value of @ref SAI_Block_SyncExt + @note: If both audio blocks of same SAI are used, this parameter has + to be set to the same value for each audio block */ + + uint32_t OutputDrive; /*!< Specifies when SAI Block outputs are driven. + This parameter can be a value of @ref SAI_Block_Output_Drive + @note this value has to be set before enabling the audio block + but after the audio block configuration. */ + + uint32_t NoDivider; /*!< Specifies whether master clock will be divided or not. + This parameter can be a value of @ref SAI_Block_NoDivider + @note: If bit NODIV in the SAI_xCR1 register is cleared, the frame length + should be aligned to a number equal to a power of 2, from 8 to 256. + If bit NODIV in the SAI_xCR1 register is set, the frame length can + take any of the values without constraint since the input clock of + the audio block should be equal to the bit clock. + There is no MCLK_x clock which can be output. */ + + uint32_t FIFOThreshold; /*!< Specifies SAI Block FIFO threshold. + This parameter can be a value of @ref SAI_Block_Fifo_Threshold */ + + uint32_t AudioFrequency; /*!< Specifies the audio frequency sampling. + This parameter can be a value of @ref SAI_Audio_Frequency */ + + uint32_t Mckdiv; /*!< Specifies the master clock divider, the parameter will be used if for + AudioFrequency the user choice + This parameter must be a number between Min_Data = 0 and Max_Data = 15 */ + + uint32_t MonoStereoMode; /*!< Specifies if the mono or stereo mode is selected. + This parameter can be a value of @ref SAI_Mono_Stereo_Mode */ + + uint32_t CompandingMode; /*!< Specifies the companding mode type. + This parameter can be a value of @ref SAI_Block_Companding_Mode */ + + uint32_t TriState; /*!< Specifies the companding mode type. + This parameter can be a value of @ref SAI_TRIState_Management */ + + /* This part of the structure is automatically filled if your are using the high level initialisation + function HAL_SAI_InitProtocol */ + + uint32_t Protocol; /*!< Specifies the SAI Block protocol. + This parameter can be a value of @ref SAI_Block_Protocol */ + + uint32_t DataSize; /*!< Specifies the SAI Block data size. + This parameter can be a value of @ref SAI_Block_Data_Size */ + + uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SAI_Block_MSB_LSB_transmission */ + + uint32_t ClockStrobing; /*!< Specifies the SAI Block clock strobing edge sensitivity. + This parameter can be a value of @ref SAI_Block_Clock_Strobing */ +}SAI_InitTypeDef; +/** + * @} + */ + +/** @defgroup SAI_Frame_Structure_definition SAI Frame Structure definition + * @brief SAI Frame Init structure definition + * @{ + */ +typedef struct +{ + + uint32_t FrameLength; /*!< Specifies the Frame length, the number of SCK clocks for each audio frame. + This parameter must be a number between Min_Data = 8 and Max_Data = 256. + @note: If master clock MCLK_x pin is declared as an output, the frame length + should be aligned to a number equal to power of 2 in order to keep + in an audio frame, an integer number of MCLK pulses by bit Clock. */ + + uint32_t ActiveFrameLength; /*!< Specifies the Frame synchronization active level length. + This Parameter specifies the length in number of bit clock (SCK + 1) + of the active level of FS signal in audio frame. + This parameter must be a number between Min_Data = 1 and Max_Data = 128 */ + + uint32_t FSDefinition; /*!< Specifies the Frame synchronization definition. + This parameter can be a value of @ref SAI_Block_FS_Definition */ + + uint32_t FSPolarity; /*!< Specifies the Frame synchronization Polarity. + This parameter can be a value of @ref SAI_Block_FS_Polarity */ + + uint32_t FSOffset; /*!< Specifies the Frame synchronization Offset. + This parameter can be a value of @ref SAI_Block_FS_Offset */ + +}SAI_FrameInitTypeDef; +/** + * @} + */ + +/** @defgroup SAI_Slot_Structure_definition SAI Slot Structure definition + * @brief SAI Block Slot Init Structure definition + * @{ + */ +typedef struct +{ + uint32_t FirstBitOffset; /*!< Specifies the position of first data transfer bit in the slot. + This parameter must be a number between Min_Data = 0 and Max_Data = 24 */ + + uint32_t SlotSize; /*!< Specifies the Slot Size. + This parameter can be a value of @ref SAI_Block_Slot_Size */ + + uint32_t SlotNumber; /*!< Specifies the number of slot in the audio frame. + This parameter must be a number between Min_Data = 1 and Max_Data = 16 */ + + uint32_t SlotActive; /*!< Specifies the slots in audio frame that will be activated. + This parameter can be a value of @ref SAI_Block_Slot_Active */ +}SAI_SlotInitTypeDef; +/** + * @} + */ + +/** @defgroup SAI_Handle_Structure_definition SAI Handle Structure definition + * @brief SAI handle Structure definition + * @{ + */ +typedef struct __SAI_HandleTypeDef +{ + SAI_Block_TypeDef *Instance; /*!< SAI Blockx registers base address */ + + SAI_InitTypeDef Init; /*!< SAI communication parameters */ + + SAI_FrameInitTypeDef FrameInit; /*!< SAI Frame configuration parameters */ + + SAI_SlotInitTypeDef SlotInit; /*!< SAI Slot configuration parameters */ + + uint8_t *pBuffPtr; /*!< Pointer to SAI transfer Buffer */ + + uint16_t XferSize; /*!< SAI transfer size */ + + uint16_t XferCount; /*!< SAI transfer counter */ + +// modifications made 29 May 2017 DSR + + int16_t *sample_left_ptr; + int16_t *sample_right_ptr; +// end of mod + DMA_HandleTypeDef *hdmatx; /*!< SAI Tx DMA handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< SAI Rx DMA handle parameters */ + + SAIcallback mutecallback; /*!< SAI mute callback */ + + void (*InterruptServiceRoutine)(struct __SAI_HandleTypeDef *hsai); /* function pointer for IRQ handler */ + +// another DSR addition + void (*NewInterruptServiceRoutine)(struct __SAI_HandleTypeDef *hsai_in, struct __SAI_HandleTypeDef *hsai_out); /* function pointer for IRQ handler */ + + HAL_LockTypeDef Lock; /*!< SAI locking object */ + + __IO HAL_SAI_StateTypeDef State; /*!< SAI communication state */ + + __IO uint32_t ErrorCode; /*!< SAI Error code */ +}SAI_HandleTypeDef; +/** + * @} + */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup SAI_Exported_Constants SAI Exported Constants + * @{ + */ + +/** @defgroup SAI_Error_Code SAI Error Code + * @{ + */ +#define HAL_SAI_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */ +#define HAL_SAI_ERROR_OVR ((uint32_t)0x00000001U) /*!< Overrun Error */ +#define HAL_SAI_ERROR_UDR ((uint32_t)0x00000002U) /*!< Underrun error */ +#define HAL_SAI_ERROR_AFSDET ((uint32_t)0x00000004U) /*!< Anticipated Frame synchronisation detection */ +#define HAL_SAI_ERROR_LFSDET ((uint32_t)0x00000008U) /*!< Late Frame synchronisation detection */ +#define HAL_SAI_ERROR_CNREADY ((uint32_t)0x00000010U) /*!< codec not ready */ +#define HAL_SAI_ERROR_WCKCFG ((uint32_t)0x00000020U) /*!< Wrong clock configuration */ +#define HAL_SAI_ERROR_TIMEOUT ((uint32_t)0x00000040U) /*!< Timeout error */ +#define HAL_SAI_ERROR_DMA ((uint32_t)0x00000080U) /*!< DMA error */ +/** + * @} + */ + +/** @defgroup SAI_Block_SyncExt SAI External synchronisation + * @{ + */ +#define SAI_SYNCEXT_DISABLE 0 +#define SAI_SYNCEXT_OUTBLOCKA_ENABLE 1 +#define SAI_SYNCEXT_OUTBLOCKB_ENABLE 2 +/** + * @} + */ + +/** @defgroup SAI_Protocol SAI Supported protocol + * @{ + */ +#define SAI_I2S_STANDARD 0 +#define SAI_I2S_MSBJUSTIFIED 1 +#define SAI_I2S_LSBJUSTIFIED 2 +#define SAI_PCM_LONG 3 +#define SAI_PCM_SHORT 4 +/** + * @} + */ + +/** @defgroup SAI_Protocol_DataSize SAI protocol data size + * @{ + */ +#define SAI_PROTOCOL_DATASIZE_16BIT 0 +#define SAI_PROTOCOL_DATASIZE_16BITEXTENDED 1 +#define SAI_PROTOCOL_DATASIZE_24BIT 2 +#define SAI_PROTOCOL_DATASIZE_32BIT 3 +/** + * @} + */ + +/** @defgroup SAI_Audio_Frequency SAI Audio Frequency + * @{ + */ +#define SAI_AUDIO_FREQUENCY_192K ((uint32_t)192000U) +#define SAI_AUDIO_FREQUENCY_96K ((uint32_t)96000U) +#define SAI_AUDIO_FREQUENCY_48K ((uint32_t)48000U) +#define SAI_AUDIO_FREQUENCY_44K ((uint32_t)44100U) +#define SAI_AUDIO_FREQUENCY_32K ((uint32_t)32000U) +#define SAI_AUDIO_FREQUENCY_22K ((uint32_t)22050U) +#define SAI_AUDIO_FREQUENCY_16K ((uint32_t)16000U) +#define SAI_AUDIO_FREQUENCY_11K ((uint32_t)11025U) +#define SAI_AUDIO_FREQUENCY_8K ((uint32_t)8000U) +#define SAI_AUDIO_FREQUENCY_MCKDIV ((uint32_t)0U) +/** + * @} + */ + +/** @defgroup SAI_Block_Mode SAI Block Mode + * @{ + */ +#define SAI_MODEMASTER_TX ((uint32_t)0x00000000U) +#define SAI_MODEMASTER_RX ((uint32_t)SAI_xCR1_MODE_0) +#define SAI_MODESLAVE_TX ((uint32_t)SAI_xCR1_MODE_1) +#define SAI_MODESLAVE_RX ((uint32_t)(SAI_xCR1_MODE_1 | SAI_xCR1_MODE_0)) + +/** + * @} + */ + +/** @defgroup SAI_Block_Protocol SAI Block Protocol + * @{ + */ +#define SAI_FREE_PROTOCOL ((uint32_t)0x00000000U) +#define SAI_SPDIF_PROTOCOL ((uint32_t)SAI_xCR1_PRTCFG_0) +#define SAI_AC97_PROTOCOL ((uint32_t)SAI_xCR1_PRTCFG_1) +/** + * @} + */ + +/** @defgroup SAI_Block_Data_Size SAI Block Data Size + * @{ + */ +#define SAI_DATASIZE_8 ((uint32_t)SAI_xCR1_DS_1) +#define SAI_DATASIZE_10 ((uint32_t)(SAI_xCR1_DS_1 | SAI_xCR1_DS_0)) +#define SAI_DATASIZE_16 ((uint32_t)SAI_xCR1_DS_2) +#define SAI_DATASIZE_20 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_0)) +#define SAI_DATASIZE_24 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1)) +#define SAI_DATASIZE_32 ((uint32_t)(SAI_xCR1_DS_2 | SAI_xCR1_DS_1 | SAI_xCR1_DS_0)) +/** + * @} + */ + +/** @defgroup SAI_Block_MSB_LSB_transmission SAI Block MSB LSB transmission + * @{ + */ +#define SAI_FIRSTBIT_MSB ((uint32_t)0x00000000U) +#define SAI_FIRSTBIT_LSB ((uint32_t)SAI_xCR1_LSBFIRST) +/** + * @} + */ + +/** @defgroup SAI_Block_Clock_Strobing SAI Block Clock Strobing + * @{ + */ +#define SAI_CLOCKSTROBING_FALLINGEDGE 0 +#define SAI_CLOCKSTROBING_RISINGEDGE 1 +/** + * @} + */ + +/** @defgroup SAI_Block_Synchronization SAI Block Synchronization + * @{ + */ +#define SAI_ASYNCHRONOUS 0 /*!< Asynchronous */ +#define SAI_SYNCHRONOUS 1 /*!< Synchronous with other block of same SAI */ +#define SAI_SYNCHRONOUS_EXT_SAI1 2 /*!< Synchronous with other SAI, SAI1 */ +#define SAI_SYNCHRONOUS_EXT_SAI2 3 /*!< Synchronous with other SAI, SAI2 */ +/** + * @} + */ + +/** @defgroup SAI_Block_Output_Drive SAI Block Output Drive + * @{ + */ +#define SAI_OUTPUTDRIVE_DISABLE ((uint32_t)0x00000000U) +#define SAI_OUTPUTDRIVE_ENABLE ((uint32_t)SAI_xCR1_OUTDRIV) +/** + * @} + */ + +/** @defgroup SAI_Block_NoDivider SAI Block NoDivider + * @{ + */ +#define SAI_MASTERDIVIDER_ENABLE ((uint32_t)0x00000000U) +#define SAI_MASTERDIVIDER_DISABLE ((uint32_t)SAI_xCR1_NODIV) +/** + * @} + */ + + +/** @defgroup SAI_Block_FS_Definition SAI Block FS Definition + * @{ + */ +#define SAI_FS_STARTFRAME ((uint32_t)0x00000000U) +#define SAI_FS_CHANNEL_IDENTIFICATION ((uint32_t)SAI_xFRCR_FSDEF) +/** + * @} + */ + +/** @defgroup SAI_Block_FS_Polarity SAI Block FS Polarity + * @{ + */ +#define SAI_FS_ACTIVE_LOW ((uint32_t)0x00000000U) +#define SAI_FS_ACTIVE_HIGH ((uint32_t)SAI_xFRCR_FSPOL) +/** + * @} + */ + +/** @defgroup SAI_Block_FS_Offset SAI Block FS Offset + * @{ + */ +#define SAI_FS_FIRSTBIT ((uint32_t)0x00000000U) +#define SAI_FS_BEFOREFIRSTBIT ((uint32_t)SAI_xFRCR_FSOFF) +/** + * @} + */ + + + /** @defgroup SAI_Block_Slot_Size SAI Block Slot Size + * @{ + */ +#define SAI_SLOTSIZE_DATASIZE ((uint32_t)0x00000000U) +#define SAI_SLOTSIZE_16B ((uint32_t)SAI_xSLOTR_SLOTSZ_0) +#define SAI_SLOTSIZE_32B ((uint32_t)SAI_xSLOTR_SLOTSZ_1) +/** + * @} + */ + +/** @defgroup SAI_Block_Slot_Active SAI Block Slot Active + * @{ + */ +#define SAI_SLOT_NOTACTIVE ((uint32_t)0x00000000U) +#define SAI_SLOTACTIVE_0 ((uint32_t)0x00000001U) +#define SAI_SLOTACTIVE_1 ((uint32_t)0x00000002U) +#define SAI_SLOTACTIVE_2 ((uint32_t)0x00000004U) +#define SAI_SLOTACTIVE_3 ((uint32_t)0x00000008U) +#define SAI_SLOTACTIVE_4 ((uint32_t)0x00000010U) +#define SAI_SLOTACTIVE_5 ((uint32_t)0x00000020U) +#define SAI_SLOTACTIVE_6 ((uint32_t)0x00000040U) +#define SAI_SLOTACTIVE_7 ((uint32_t)0x00000080U) +#define SAI_SLOTACTIVE_8 ((uint32_t)0x00000100U) +#define SAI_SLOTACTIVE_9 ((uint32_t)0x00000200U) +#define SAI_SLOTACTIVE_10 ((uint32_t)0x00000400U) +#define SAI_SLOTACTIVE_11 ((uint32_t)0x00000800U) +#define SAI_SLOTACTIVE_12 ((uint32_t)0x00001000U) +#define SAI_SLOTACTIVE_13 ((uint32_t)0x00002000U) +#define SAI_SLOTACTIVE_14 ((uint32_t)0x00004000U) +#define SAI_SLOTACTIVE_15 ((uint32_t)0x00008000U) +#define SAI_SLOTACTIVE_ALL ((uint32_t)0x0000FFFFU) +/** + * @} + */ + +/** @defgroup SAI_Mono_Stereo_Mode SAI Mono Stereo Mode + * @{ + */ +#define SAI_STEREOMODE ((uint32_t)0x00000000U) +#define SAI_MONOMODE ((uint32_t)SAI_xCR1_MONO) +/** + * @} + */ + +/** @defgroup SAI_TRIState_Management SAI TRIState Management + * @{ + */ +#define SAI_OUTPUT_NOTRELEASED ((uint32_t)0x00000000U) +#define SAI_OUTPUT_RELEASED ((uint32_t)SAI_xCR2_TRIS) +/** + * @} + */ + +/** @defgroup SAI_Block_Fifo_Threshold SAI Block Fifo Threshold + * @{ + */ +#define SAI_FIFOTHRESHOLD_EMPTY ((uint32_t)0x00000000U) +#define SAI_FIFOTHRESHOLD_1QF ((uint32_t)(SAI_xCR2_FTH_0)) +#define SAI_FIFOTHRESHOLD_HF ((uint32_t)(SAI_xCR2_FTH_1)) +#define SAI_FIFOTHRESHOLD_3QF ((uint32_t)(SAI_xCR2_FTH_1 | SAI_xCR2_FTH_0)) +#define SAI_FIFOTHRESHOLD_FULL ((uint32_t)(SAI_xCR2_FTH_2)) +/** + * @} + */ + +/** @defgroup SAI_Block_Companding_Mode SAI Block Companding Mode + * @{ + */ +#define SAI_NOCOMPANDING ((uint32_t)0x00000000U) +#define SAI_ULAW_1CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1)) +#define SAI_ALAW_1CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0)) +#define SAI_ULAW_2CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_CPL)) +#define SAI_ALAW_2CPL_COMPANDING ((uint32_t)(SAI_xCR2_COMP_1 | SAI_xCR2_COMP_0 | SAI_xCR2_CPL)) +/** + * @} + */ + +/** @defgroup SAI_Block_Mute_Value SAI Block Mute Value + * @{ + */ +#define SAI_ZERO_VALUE ((uint32_t)0x00000000U) +#define SAI_LAST_SENT_VALUE ((uint32_t)SAI_xCR2_MUTEVAL) +/** + * @} + */ + +/** @defgroup SAI_Block_Interrupts_Definition SAI Block Interrupts Definition + * @{ + */ +#define SAI_IT_OVRUDR ((uint32_t)SAI_xIMR_OVRUDRIE) +#define SAI_IT_MUTEDET ((uint32_t)SAI_xIMR_MUTEDETIE) +#define SAI_IT_WCKCFG ((uint32_t)SAI_xIMR_WCKCFGIE) +#define SAI_IT_FREQ ((uint32_t)SAI_xIMR_FREQIE) +#define SAI_IT_CNRDY ((uint32_t)SAI_xIMR_CNRDYIE) +#define SAI_IT_AFSDET ((uint32_t)SAI_xIMR_AFSDETIE) +#define SAI_IT_LFSDET ((uint32_t)SAI_xIMR_LFSDETIE) +/** + * @} + */ + +/** @defgroup SAI_Block_Flags_Definition SAI Block Flags Definition + * @{ + */ +#define SAI_FLAG_OVRUDR ((uint32_t)SAI_xSR_OVRUDR) +#define SAI_FLAG_MUTEDET ((uint32_t)SAI_xSR_MUTEDET) +#define SAI_FLAG_WCKCFG ((uint32_t)SAI_xSR_WCKCFG) +#define SAI_FLAG_FREQ ((uint32_t)SAI_xSR_FREQ) +#define SAI_FLAG_CNRDY ((uint32_t)SAI_xSR_CNRDY) +#define SAI_FLAG_AFSDET ((uint32_t)SAI_xSR_AFSDET) +#define SAI_FLAG_LFSDET ((uint32_t)SAI_xSR_LFSDET) +/** + * @} + */ + +/** @defgroup SAI_Block_Fifo_Status_Level SAI Block Fifo Status Level + * @{ + */ +#define SAI_FIFOSTATUS_EMPTY ((uint32_t)0x00000000U) +#define SAI_FIFOSTATUS_LESS1QUARTERFULL ((uint32_t)0x00010000U) +#define SAI_FIFOSTATUS_1QUARTERFULL ((uint32_t)0x00020000U) +#define SAI_FIFOSTATUS_HALFFULL ((uint32_t)0x00030000U) +#define SAI_FIFOSTATUS_3QUARTERFULL ((uint32_t)0x00040000U) +#define SAI_FIFOSTATUS_FULL ((uint32_t)0x00050000U) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @defgroup SAI_Exported_Macros SAI Exported Macros + * @brief macros to handle interrupts and specific configurations + * @{ + */ + +/** @brief Reset SAI handle state. + * @param __HANDLE__: specifies the SAI Handle. + * @retval None + */ +#define __HAL_SAI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SAI_STATE_RESET) + +/** @brief Enable or disable the specified SAI interrupts. + * @param __HANDLE__: specifies the SAI Handle. + * @param __INTERRUPT__: specifies the interrupt source to enable or disable. + * This parameter can be one of the following values: + * @arg SAI_IT_OVRUDR: Overrun underrun interrupt enable + * @arg SAI_IT_MUTEDET: Mute detection interrupt enable + * @arg SAI_IT_WCKCFG: Wrong Clock Configuration interrupt enable + * @arg SAI_IT_FREQ: FIFO request interrupt enable + * @arg SAI_IT_CNRDY: Codec not ready interrupt enable + * @arg SAI_IT_AFSDET: Anticipated frame synchronization detection interrupt enable + * @arg SAI_IT_LFSDET: Late frame synchronization detection interrupt enable + * @retval None + */ +#define __HAL_SAI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__)) +#define __HAL_SAI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR &= (~(__INTERRUPT__))) + +/** @brief Check whether the specified SAI interrupt source is enabled or not. + * @param __HANDLE__: specifies the SAI Handle. + * @param __INTERRUPT__: specifies the SAI interrupt source to check. + * This parameter can be one of the following values: + * @arg SAI_IT_OVRUDR: Overrun underrun interrupt enable + * @arg SAI_IT_MUTEDET: Mute detection interrupt enable + * @arg SAI_IT_WCKCFG: Wrong Clock Configuration interrupt enable + * @arg SAI_IT_FREQ: FIFO request interrupt enable + * @arg SAI_IT_CNRDY: Codec not ready interrupt enable + * @arg SAI_IT_AFSDET: Anticipated frame synchronization detection interrupt enable + * @arg SAI_IT_LFSDET: Late frame synchronization detection interrupt enable + * @retval The new state of __INTERRUPT__ (TRUE or FALSE). + */ +#define __HAL_SAI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Check whether the specified SAI flag is set or not. + * @param __HANDLE__: specifies the SAI Handle. + * @param __FLAG__: specifies the flag to check. + * This parameter can be one of the following values: + * @arg SAI_FLAG_OVRUDR: Overrun underrun flag. + * @arg SAI_FLAG_MUTEDET: Mute detection flag. + * @arg SAI_FLAG_WCKCFG: Wrong Clock Configuration flag. + * @arg SAI_FLAG_FREQ: FIFO request flag. + * @arg SAI_FLAG_CNRDY: Codec not ready flag. + * @arg SAI_FLAG_AFSDET: Anticipated frame synchronization detection flag. + * @arg SAI_FLAG_LFSDET: Late frame synchronization detection flag. + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_SAI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__)) + +/** @brief Clear the specified SAI pending flag. + * @param __HANDLE__: specifies the SAI Handle. + * @param __FLAG__: specifies the flag to check. + * This parameter can be any combination of the following values: + * @arg SAI_FLAG_OVRUDR: Clear Overrun underrun + * @arg SAI_FLAG_MUTEDET: Clear Mute detection + * @arg SAI_FLAG_WCKCFG: Clear Wrong Clock Configuration + * @arg SAI_FLAG_FREQ: Clear FIFO request + * @arg SAI_FLAG_CNRDY: Clear Codec not ready + * @arg SAI_FLAG_AFSDET: Clear Anticipated frame synchronization detection + * @arg SAI_FLAG_LFSDET: Clear Late frame synchronization detection + * + * @retval None + */ +#define __HAL_SAI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->CLRFR = (__FLAG__)) + +#define __HAL_SAI_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= SAI_xCR1_SAIEN) +#define __HAL_SAI_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~SAI_xCR1_SAIEN) + + /** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup SAI_Exported_Functions + * @{ + */ + +/* Initialization/de-initialization functions ********************************/ + +/** @addtogroup SAI_Exported_Functions_Group1 + * @{ + */ +HAL_StatusTypeDef HAL_SAI_InitProtocol(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize, uint32_t nbslot); +HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai); +HAL_StatusTypeDef HAL_SAI_DeInit (SAI_HandleTypeDef *hsai); +void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai); +void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai); + +/** + * @} + */ + +/* I/O operation functions ***************************************************/ + +/** @addtogroup SAI_Exported_Functions_Group2 + * @{ + */ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_SAI_Transmit(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_SAI_Receive(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t Timeout); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_SAI_Transmit_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size); +//HAL_StatusTypeDef HAL_SAI_Receive_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SAI_Receive_IT_SAIinterrupt(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out); + +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_SAI_Transmit_DMA_MultiBuffer(SAI_HandleTypeDef *hsai, uint8_t *pDataM0, uint8_t *pDataM1, uint16_t Size); +HAL_StatusTypeDef HAL_SAI_Transmit_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SAI_Receive_DMA_MultiBuffer(SAI_HandleTypeDef *hsai, uint8_t *pDataM0, uint8_t *pDataM1, uint16_t Size); +HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SAI_DMAPause(SAI_HandleTypeDef *hsai); +HAL_StatusTypeDef HAL_SAI_DMAResume(SAI_HandleTypeDef *hsai); +HAL_StatusTypeDef HAL_SAI_DMAStop(SAI_HandleTypeDef *hsai); + +/* Abort function */ +HAL_StatusTypeDef HAL_SAI_Abort(SAI_HandleTypeDef *hsai); + +/* Mute management */ +HAL_StatusTypeDef HAL_SAI_EnableTxMuteMode(SAI_HandleTypeDef *hsai, uint16_t val); +HAL_StatusTypeDef HAL_SAI_DisableTxMuteMode(SAI_HandleTypeDef *hsai); +HAL_StatusTypeDef HAL_SAI_EnableRxMuteMode(SAI_HandleTypeDef *hsai, SAIcallback callback, uint16_t counter); +HAL_StatusTypeDef HAL_SAI_DisableRxMuteMode(SAI_HandleTypeDef *hsai); + +/* SAI IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */ +void HAL_SAI_IRQHandler(SAI_HandleTypeDef *hsai_in, SAI_HandleTypeDef *hsai_out); +void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai); +void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai); +void HAL_SAI_TxM1CpltCallback(SAI_HandleTypeDef *hsai); +void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai); +void HAL_SAI_RxCpltCallback(void); +void HAL_SAI_RxM1CpltCallback(SAI_HandleTypeDef *hsai); +void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai); +/** + * @} + */ + +/** @addtogroup SAI_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State functions ************************************************/ +HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai); +uint32_t HAL_SAI_GetError(SAI_HandleTypeDef *hsai); +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup SAI_Private_Macros + * @{ + */ +#define IS_SAI_BLOCK_SYNCEXT(STATE) (((STATE) == SAI_SYNCEXT_DISABLE) ||\ + ((STATE) == SAI_SYNCEXT_OUTBLOCKA_ENABLE) ||\ + ((STATE) == SAI_SYNCEXT_OUTBLOCKB_ENABLE)) + +#define IS_SAI_SUPPORTED_PROTOCOL(PROTOCOL) (((PROTOCOL) == SAI_I2S_STANDARD) ||\ + ((PROTOCOL) == SAI_I2S_MSBJUSTIFIED) ||\ + ((PROTOCOL) == SAI_I2S_LSBJUSTIFIED) ||\ + ((PROTOCOL) == SAI_PCM_LONG) ||\ + ((PROTOCOL) == SAI_PCM_SHORT)) + +#define IS_SAI_PROTOCOL_DATASIZE(DATASIZE) (((DATASIZE) == SAI_PROTOCOL_DATASIZE_16BIT) ||\ + ((DATASIZE) == SAI_PROTOCOL_DATASIZE_16BITEXTENDED) ||\ + ((DATASIZE) == SAI_PROTOCOL_DATASIZE_24BIT) ||\ + ((DATASIZE) == SAI_PROTOCOL_DATASIZE_32BIT)) + +#define IS_SAI_AUDIO_FREQUENCY(AUDIO) (((AUDIO) == SAI_AUDIO_FREQUENCY_192K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_96K) || \ + ((AUDIO) == SAI_AUDIO_FREQUENCY_48K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_44K) || \ + ((AUDIO) == SAI_AUDIO_FREQUENCY_32K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_22K) || \ + ((AUDIO) == SAI_AUDIO_FREQUENCY_16K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_11K) || \ + ((AUDIO) == SAI_AUDIO_FREQUENCY_8K) || ((AUDIO) == SAI_AUDIO_FREQUENCY_MCKDIV)) + +#define IS_SAI_BLOCK_MODE(MODE) (((MODE) == SAI_MODEMASTER_TX) || \ + ((MODE) == SAI_MODEMASTER_RX) || \ + ((MODE) == SAI_MODESLAVE_TX) || \ + ((MODE) == SAI_MODESLAVE_RX)) + +#define IS_SAI_BLOCK_PROTOCOL(PROTOCOL) (((PROTOCOL) == SAI_FREE_PROTOCOL) || \ + ((PROTOCOL) == SAI_AC97_PROTOCOL) || \ + ((PROTOCOL) == SAI_SPDIF_PROTOCOL)) + +#define IS_SAI_BLOCK_DATASIZE(DATASIZE) (((DATASIZE) == SAI_DATASIZE_8) || \ + ((DATASIZE) == SAI_DATASIZE_10) || \ + ((DATASIZE) == SAI_DATASIZE_16) || \ + ((DATASIZE) == SAI_DATASIZE_20) || \ + ((DATASIZE) == SAI_DATASIZE_24) || \ + ((DATASIZE) == SAI_DATASIZE_32)) + +#define IS_SAI_BLOCK_FIRST_BIT(BIT) (((BIT) == SAI_FIRSTBIT_MSB) || \ + ((BIT) == SAI_FIRSTBIT_LSB)) + +#define IS_SAI_BLOCK_CLOCK_STROBING(CLOCK) (((CLOCK) == SAI_CLOCKSTROBING_FALLINGEDGE) || \ + ((CLOCK) == SAI_CLOCKSTROBING_RISINGEDGE)) + +#define IS_SAI_BLOCK_SYNCHRO(SYNCHRO) (((SYNCHRO) == SAI_ASYNCHRONOUS) || \ + ((SYNCHRO) == SAI_SYNCHRONOUS) || \ + ((SYNCHRO) == SAI_SYNCHRONOUS_EXT_SAI1) || \ + ((SYNCHRO) == SAI_SYNCHRONOUS_EXT_SAI2)) + +#define IS_SAI_BLOCK_OUTPUT_DRIVE(DRIVE) (((DRIVE) == SAI_OUTPUTDRIVE_DISABLE) || \ + ((DRIVE) == SAI_OUTPUTDRIVE_ENABLE)) + +#define IS_SAI_BLOCK_NODIVIDER(NODIVIDER) (((NODIVIDER) == SAI_MASTERDIVIDER_ENABLE) || \ + ((NODIVIDER) == SAI_MASTERDIVIDER_DISABLE)) + +#define IS_SAI_BLOCK_MUTE_COUNTER(COUNTER) ((COUNTER) <= 63) + +#define IS_SAI_BLOCK_MUTE_VALUE(VALUE) (((VALUE) == SAI_ZERO_VALUE) || \ + ((VALUE) == SAI_LAST_SENT_VALUE)) + +#define IS_SAI_BLOCK_COMPANDING_MODE(MODE) (((MODE) == SAI_NOCOMPANDING) || \ + ((MODE) == SAI_ULAW_1CPL_COMPANDING) || \ + ((MODE) == SAI_ALAW_1CPL_COMPANDING) || \ + ((MODE) == SAI_ULAW_2CPL_COMPANDING) || \ + ((MODE) == SAI_ALAW_2CPL_COMPANDING)) + +#define IS_SAI_BLOCK_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == SAI_FIFOTHRESHOLD_EMPTY) || \ + ((THRESHOLD) == SAI_FIFOTHRESHOLD_1QF) || \ + ((THRESHOLD) == SAI_FIFOTHRESHOLD_HF) || \ + ((THRESHOLD) == SAI_FIFOTHRESHOLD_3QF) || \ + ((THRESHOLD) == SAI_FIFOTHRESHOLD_FULL)) + +#define IS_SAI_BLOCK_TRISTATE_MANAGEMENT(STATE) (((STATE) == SAI_OUTPUT_NOTRELEASED) ||\ + ((STATE) == SAI_OUTPUT_RELEASED)) + +#define IS_SAI_MONO_STEREO_MODE(MODE) (((MODE) == SAI_MONOMODE) ||\ + ((MODE) == SAI_STEREOMODE)) + +#define IS_SAI_SLOT_ACTIVE(ACTIVE) ((ACTIVE) <= SAI_SLOTACTIVE_ALL) + +#define IS_SAI_BLOCK_SLOT_NUMBER(NUMBER) ((1 <= (NUMBER)) && ((NUMBER) <= 16)) + +#define IS_SAI_BLOCK_SLOT_SIZE(SIZE) (((SIZE) == SAI_SLOTSIZE_DATASIZE) || \ + ((SIZE) == SAI_SLOTSIZE_16B) || \ + ((SIZE) == SAI_SLOTSIZE_32B)) + +#define IS_SAI_BLOCK_FIRSTBIT_OFFSET(OFFSET) ((OFFSET) <= 24) + +#define IS_SAI_BLOCK_FS_OFFSET(OFFSET) (((OFFSET) == SAI_FS_FIRSTBIT) || \ + ((OFFSET) == SAI_FS_BEFOREFIRSTBIT)) + +#define IS_SAI_BLOCK_FS_POLARITY(POLARITY) (((POLARITY) == SAI_FS_ACTIVE_LOW) || \ + ((POLARITY) == SAI_FS_ACTIVE_HIGH)) + +#define IS_SAI_BLOCK_FS_DEFINITION(DEFINITION) (((DEFINITION) == SAI_FS_STARTFRAME) || \ + ((DEFINITION) == SAI_FS_CHANNEL_IDENTIFICATION)) + +#define IS_SAI_BLOCK_MASTER_DIVIDER(DIVIDER) ((DIVIDER) <= 15) + +#define IS_SAI_BLOCK_FRAME_LENGTH(LENGTH) ((8 <= (LENGTH)) && ((LENGTH) <= 256)) + +#define IS_SAI_BLOCK_ACTIVE_FRAME(LENGTH) ((1 <= (LENGTH)) && ((LENGTH) <= 128)) + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup SAI_Private_Functions SAI Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_SAI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.c b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.c new file mode 100644 index 0000000..f1a1339 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.c @@ -0,0 +1,454 @@ +/** + ****************************************************************************** + * @file wm8994.c + * @author MCD Application Team - modified for use with AUP DSP Education Kit + * @version V2.1.0 + * @date 22-February-2016 + * @brief This file provides the WM8994 Audio Codec driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "wm8994.h" + +/* Uncomment this line to enable verifying data sent to codec after each write + operation (for debug purpose) */ +#if !defined (VERIFY_WRITTENDATA) +/*#define VERIFY_WRITTENDATA*/ +#endif /* VERIFY_WRITTENDATA */ + + +/* Audio codec driver structure initialization */ + +static uint32_t outputEnabled = 0; +static uint32_t inputEnabled = 0; + +/** @defgroup WM8994_Function_Prototypes + * @{ + */ +static uint8_t CODEC_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value); +/** + * @} + */ + +/** @defgroup WM8994_Private_Functions + * @{ + */ + +/** + * @brief Initializes the audio codec and the control interface. + */ +uint32_t wm8994_Init(uint16_t DeviceAddr, uint16_t OutputInputDevice, uint32_t AudioFreq) +{ + uint32_t counter = 0; + uint16_t output_device = OutputInputDevice & 0xFF; + uint16_t input_device = OutputInputDevice & 0xFF00; + uint16_t power_mgnt_reg_1 = 0; + + counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); + /* Initialize the Control interface of the Audio Codec */ + AUDIO_IO_Init(); + /* wm8994 Errata Work-Arounds */ + counter += CODEC_IO_Write(DeviceAddr, 0x102, 0x0003); + counter += CODEC_IO_Write(DeviceAddr, 0x817, 0x0000); + counter += CODEC_IO_Write(DeviceAddr, 0x102, 0x0000); + + /* Enable VMID soft start (fast), Start-up Bias Current Enabled */ + counter += CODEC_IO_Write(DeviceAddr, 0x39, 0x006C); + + /* Enable bias generator, Enable VMID */ + counter += CODEC_IO_Write(DeviceAddr, 0x01, 0x0013); + + /* delay */ + AUDIO_IO_Delay(50); + + /* Path Configurations for output */ + if (output_device > 0) + { + outputEnabled = 1; + switch (output_device) + { + + case OUTPUT_DEVICE_HEADPHONE: + /* Disable DAC1 (Left), Disable DAC1 (Right), + Enable DAC2 (Left), Enable DAC2 (Right)*/ + counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); + + /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); + + /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); + + /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); + + /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); + break; + + default: + /* Disable DAC1 (Left), Disable DAC1 (Right), + Enable DAC2 (Left), Enable DAC2 (Right)*/ + counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); + + /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); + + /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); + + /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); + + /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); + break; + } + } + else + { + outputEnabled = 0; + } + + /* Path Configurations for input */ + if (input_device > 0) + { + inputEnabled = 1; + switch (input_device) + { + case INPUT_DEVICE_DIGITAL_MICROPHONE_2 : + /* Enable AIF1ADC2 (Left), Enable AIF1ADC2 (Right) + * Enable DMICDAT2 (Left), Enable DMICDAT2 (Right) + * Enable Left ADC, Enable Right ADC */ + counter += CODEC_IO_Write(DeviceAddr, 0x04, 0x0C30); + + /* Enable AIF1 DRC2 Signal Detect & DRC in AIF1ADC2 Left/Right Timeslot 1 */ + counter += CODEC_IO_Write(DeviceAddr, 0x450, 0x00DB); + + /* Disable IN1L, IN1R, IN2L, IN2R, Enable Thermal sensor & shutdown */ + counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x6000); + + /* Enable the DMIC2(Left) to AIF1 Timeslot 1 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x608, 0x0002); + + /* Enable the DMIC2(Right) to AIF1 Timeslot 1 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x609, 0x0002); + + /* GPIO1 pin configuration GP1_DIR = output, GP1_FN = AIF1 DRC2 signal detect */ + counter += CODEC_IO_Write(DeviceAddr, 0x700, 0x000E); + break; + + case INPUT_DEVICE_INPUT_LINE_1 : + /* IN1LN_TO_IN1L, IN1LP_TO_VMID, IN1RN_TO_IN1R, IN1RP_TO_VMID */ + counter += CODEC_IO_Write(DeviceAddr, 0x28, 0x0011); + + /* Disable mute on IN1L_TO_MIXINL and +30dB on IN1L PGA output */ + counter += CODEC_IO_Write(DeviceAddr, 0x29, 0x0020); // was 0x20 + + /* Disable mute on IN1R_TO_MIXINL, Gain = +30dB */ + counter += CODEC_IO_Write(DeviceAddr, 0x2A, 0x0020); // was 0x20 + + /* Enable AIF1ADC1 (Left), Enable AIF1ADC1 (Right) + * Enable Left ADC, Enable Right ADC */ + counter += CODEC_IO_Write(DeviceAddr, 0x04, 0x0303); + + /* Enable AIF1 DRC1 Signal Detect & DRC in AIF1ADC1 Left/Right Timeslot 0 */ + counter += CODEC_IO_Write(DeviceAddr, 0x440, 0x00D0); // was 0x00DB + + /* Enable IN1L and IN1R, Disable IN2L and IN2R, Enable Thermal sensor & shutdown */ + counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x6350); + + /* Enable the ADCL(Left) to AIF1 Timeslot 0 (Left) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x606, 0x0002); + + /* Enable the ADCR(Right) to AIF1 Timeslot 0 (Right) mixer path */ + counter += CODEC_IO_Write(DeviceAddr, 0x607, 0x0002); + + /* GPIO1 pin configuration GP1_DIR = output, GP1_FN = AIF1 DRC1 signal detect */ + counter += CODEC_IO_Write(DeviceAddr, 0x700, 0x000D); + break; + + default: + /* no other input devices supported */ + counter++; + break; + } + } + else + { + inputEnabled = 0; + } + + /* AIF1 Word Length = 16-bits, AIF1 Format = I2S (Default Register Value) */ + counter += CODEC_IO_Write(DeviceAddr, 0x300, 0x4010); + + /* slave mode */ + counter += CODEC_IO_Write(DeviceAddr, 0x302, 0x0000); + + /* Enable the DSP processing clock for AIF1, Enable the core clock */ + counter += CODEC_IO_Write(DeviceAddr, 0x208, 0x000A); + + /* Enable AIF1 Clock, AIF1 Clock Source = MCLK1 pin */ + counter += CODEC_IO_Write(DeviceAddr, 0x200, 0x0001); + + if (output_device > 0) /* Audio output selected */ + { + /* Analog Output Configuration */ + + /* Enable SPKRVOL PGA, Enable SPKMIXR, Enable SPKLVOL PGA, Enable SPKMIXL */ + counter += CODEC_IO_Write(DeviceAddr, 0x03, 0x0300); + + /* Left Speaker Mixer Volume = 0dB */ + counter += CODEC_IO_Write(DeviceAddr, 0x22, 0x0000); + + /* Speaker output mode = Class D, Right Speaker Mixer Volume = 0dB ((0x23, 0x0100) = class AB)*/ + counter += CODEC_IO_Write(DeviceAddr, 0x23, 0x0000); + + /* Unmute DAC2 (Left) to Left Speaker Mixer (SPKMIXL) path, + Unmute DAC2 (Right) to Right Speaker Mixer (SPKMIXR) path */ + counter += CODEC_IO_Write(DeviceAddr, 0x36, 0x0300); + + /* Enable bias generator, Enable VMID, Enable SPKOUTL, Enable SPKOUTR */ + counter += CODEC_IO_Write(DeviceAddr, 0x01, 0x3003); + + /* Headphone/Speaker Enable */ + + /* Enable Class W, Class W Envelope Tracking = AIF1 Timeslot 0 */ + counter += CODEC_IO_Write(DeviceAddr, 0x51, 0x0005); + + /* Enable bias generator, Enable VMID, Enable HPOUT1 (Left) and Enable HPOUT1 (Right) input stages */ + /* idem for Speaker */ + power_mgnt_reg_1 |= 0x0303 | 0x3003; + counter += CODEC_IO_Write(DeviceAddr, 0x01, power_mgnt_reg_1); + + /* Enable HPOUT1 (Left) and HPOUT1 (Right) intermediate stages */ + counter += CODEC_IO_Write(DeviceAddr, 0x60, 0x0022); + + /* Enable Charge Pump */ + counter += CODEC_IO_Write(DeviceAddr, 0x4C, 0x9F25); + + /* delay */ + AUDIO_IO_Delay(15); + + /* Select DAC1 (Left) to Left Headphone Output PGA (HPOUT1LVOL) path */ + counter += CODEC_IO_Write(DeviceAddr, 0x2D, 0x0001); + + /* Select DAC1 (Right) to Right Headphone Output PGA (HPOUT1RVOL) path */ + counter += CODEC_IO_Write(DeviceAddr, 0x2E, 0x0001); + + /* Enable Left Output Mixer (MIXOUTL), Enable Right Output Mixer (MIXOUTR) */ + /* idem for SPKOUTL and SPKOUTR */ + counter += CODEC_IO_Write(DeviceAddr, 0x03, 0x0030 | 0x0300); + + /* Enable DC Servo and trigger start-up mode on left and right channels */ + counter += CODEC_IO_Write(DeviceAddr, 0x54, 0x0033); + + /* delay */ + AUDIO_IO_Delay(250); + + /* Enable HPOUT1 (Left) and HPOUT1 (Right) intermediate and output stages. Remove clamps */ + counter += CODEC_IO_Write(DeviceAddr, 0x60, 0x00EE); + + /* Unmutes */ + + /* Unmute DAC 1 (Left) */ + counter += CODEC_IO_Write(DeviceAddr, 0x610, 0x00C0); + + /* Unmute DAC 1 (Right) */ + counter += CODEC_IO_Write(DeviceAddr, 0x611, 0x00C0); + + /* Unmute the AIF1 Timeslot 0 DAC path */ + counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0000); + + /* Unmute DAC 2 (Left) */ + counter += CODEC_IO_Write(DeviceAddr, 0x612, 0x00C0); + + /* Unmute DAC 2 (Right) */ + counter += CODEC_IO_Write(DeviceAddr, 0x613, 0x00C0); + + /* Unmute the AIF1 Timeslot 1 DAC2 path */ + counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0000); + } + + if (input_device > 0) /* Audio input selected */ + { + if ((input_device == INPUT_DEVICE_DIGITAL_MICROPHONE_1) || (input_device == INPUT_DEVICE_DIGITAL_MICROPHONE_2)) + { + /* Enable Microphone bias 1 generator, Enable VMID */ + power_mgnt_reg_1 |= 0x0013; + counter += CODEC_IO_Write(DeviceAddr, 0x01, power_mgnt_reg_1); + + /* ADC oversample enable */ + counter += CODEC_IO_Write(DeviceAddr, 0x620, 0x0002); + + /* AIF ADC2 HPF enable, HPF cut = voice mode 1 fc=127Hz at fs=8kHz */ + counter += CODEC_IO_Write(DeviceAddr, 0x411, 0x3800); + } + else if ((input_device == INPUT_DEVICE_INPUT_LINE_1) || (input_device == INPUT_DEVICE_INPUT_LINE_2)) + { + + /* Disable mute on IN1L, IN1L Volume = +0dB */ + /* could adjust analog PGA gain here -16.5dB to +30dB in 1.5 dB steps */ + counter += CODEC_IO_Write(DeviceAddr, 0x18, 0x000B); + + /* Disable mute on IN1R, IN1R Volume = +0dB */ + counter += CODEC_IO_Write(DeviceAddr, 0x1A, 0x000B); + + /* ADC oversample enable */ + counter += CODEC_IO_Write(DeviceAddr, 0x620, 0x0000); + + /* AIF ADC1 HPF enable, HPF cut = hifi mode fc=4Hz at fs=48kHz */ + counter += CODEC_IO_Write(DeviceAddr, 0x410, 0x1800); + } + } + return counter; +} + +/** + * @brief Deinitializes the audio codec. + * @param None + * @retval None + */ +void wm8994_DeInit(void) +{ + /* Deinitialize Audio Codec interface */ + AUDIO_IO_DeInit(); +} + +/** + * @brief Get the WM8994 ID. + * @param DeviceAddr: Device address on communication Bus. + * @retval The WM8994 ID + */ +uint32_t wm8994_ReadID(uint16_t DeviceAddr) +{ + /* Initialize the Control interface of the Audio Codec */ + AUDIO_IO_Init(); + + return ((uint32_t)AUDIO_IO_Read(DeviceAddr, WM8994_CHIPID_ADDR)); +} + + +/* + * modified 2 July 2017 by DSR + * + */ +uint32_t wm8994_SetVolume(uint16_t DeviceAddr, uint16_t headphone_gain, uint16_t line_in_gain, uint16_t dmic_gain) +{ + uint32_t counter = 0; + + counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); // unmute codec +//headphone out gain + counter += CODEC_IO_Write(DeviceAddr, 0x1C, headphone_gain | 0x140); + counter += CODEC_IO_Write(DeviceAddr, 0x1D, headphone_gain | 0x140); +// line in gain + counter += CODEC_IO_Write(DeviceAddr, 0x400, line_in_gain | 0x100); + counter += CODEC_IO_Write(DeviceAddr, 0x401, line_in_gain | 0x100); +// DMIC gain + counter += CODEC_IO_Write(DeviceAddr, 0x404, dmic_gain | 0x100); + counter += CODEC_IO_Write(DeviceAddr, 0x405, dmic_gain | 0x100); + + return counter; +} + +/** + * @brief Enables or disables the mute feature on the audio codec. + * @param DeviceAddr: Device address on communication Bus. + * @param Cmd: AUDIO_MUTE_ON to enable the mute or AUDIO_MUTE_OFF to disable the + * mute mode. + * @retval 0 if correct communication, else wrong communication + */ +uint32_t wm8994_SetMute(uint16_t DeviceAddr, uint32_t Cmd) +{ + uint32_t counter = 0; + + if (outputEnabled != 0) + { + /* Set the Mute mode */ + if(Cmd == AUDIO_MUTE_ON) + { + /* Soft Mute the AIF1 Timeslot 0 DAC1 path L&R */ + counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0200); + + /* Soft Mute the AIF1 Timeslot 1 DAC2 path L&R */ + counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0200); + } + else /* AUDIO_MUTE_OFF Disable the Mute */ + { + /* Unmute the AIF1 Timeslot 0 DAC1 path L&R */ + counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0000); + + /* Unmute the AIF1 Timeslot 1 DAC2 path L&R */ + counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0000); + } + } + return counter; +} + +/** + * @brief Resets wm8994 registers. + * @param DeviceAddr: Device address on communication Bus. + * @retval 0 if correct communication, else wrong communication + */ +uint32_t wm8994_Reset(uint16_t DeviceAddr) +{ + uint32_t counter = 0; + + /* Reset Codec by writing in 0x0000 address register */ + counter = CODEC_IO_Write(DeviceAddr, 0x0000, 0x0000); + outputEnabled = 0; + inputEnabled=0; + + return counter; +} + +/** + * @brief Writes/Read a single data. + * @param Addr: I2C address + * @param Reg: Reg address + * @param Value: Data to be written + * @retval None + */ +static uint8_t CODEC_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value) +{ + uint32_t result = 0; + + AUDIO_IO_Write(Addr, Reg, Value); + +#ifdef VERIFY_WRITTENDATA + /* Verify that the data has been correctly written */ + result = (AUDIO_IO_Read(Addr, Reg) == Value)? 0:1; +#endif /* VERIFY_WRITTENDATA */ + + return result; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.h b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.h new file mode 100644 index 0000000..1fc196b --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_1/Lab/Replacement_Files/wm8994.h @@ -0,0 +1,97 @@ +/** + ****************************************************************************** + * @file wm8994.h + * @author MCD Application Team + * Adapted for use as part of ARM University DSP Education Kit May 2017 + * @version V2.1.0 + * @date 22-February-2016 + * @brief This file contains all the functions prototypes for the + * wm8994.c driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __WM8994_H +#define __WM8994_H + +/* Includes ------------------------------------------------------------------*/ +#include "../Common/audio.h" + +/* Codec output DEVICE */ +#define OUTPUT_DEVICE_SPEAKER ((uint16_t)0x0001) +#define OUTPUT_DEVICE_HEADPHONE ((uint16_t)0x0002) +#define OUTPUT_DEVICE_BOTH ((uint16_t)0x0003) +#define OUTPUT_DEVICE_AUTO ((uint16_t)0x0004) +#define INPUT_DEVICE_DIGITAL_MICROPHONE_1 ((uint16_t)0x0100) +#define INPUT_DEVICE_DIGITAL_MICROPHONE_2 ((uint16_t)0x0200) +#define INPUT_DEVICE_INPUT_LINE_1 ((uint16_t)0x0300) +#define INPUT_DEVICE_INPUT_LINE_2 ((uint16_t)0x0400) +#define INPUT_DEVICE_DIGITAL_MIC1_MIC2 ((uint16_t)0x0800) + +/* MUTE commands */ +#define AUDIO_MUTE_ON 1 +#define AUDIO_MUTE_OFF 0 + +/* AUDIO FREQUENCY */ +#define AUDIO_FREQUENCY_192K ((uint32_t)192000) +#define AUDIO_FREQUENCY_96K ((uint32_t)96000) +#define AUDIO_FREQUENCY_48K ((uint32_t)48000) +#define AUDIO_FREQUENCY_44K ((uint32_t)44100) +#define AUDIO_FREQUENCY_32K ((uint32_t)32000) +#define AUDIO_FREQUENCY_22K ((uint32_t)22050) +#define AUDIO_FREQUENCY_16K ((uint32_t)16000) +#define AUDIO_FREQUENCY_11K ((uint32_t)11025) +#define AUDIO_FREQUENCY_8K ((uint32_t)8000) + +#define WM8994_ID 0x8994 +#define WM8994_CHIPID_ADDR 0x00 + +/*------------------------------------------------------------------------------ + Audio Codec functions +------------------------------------------------------------------------------*/ +/* High Layer codec functions */ +uint32_t wm8994_Init(uint16_t DeviceAddr, uint16_t OutputInputDevice, uint32_t AudioFreq); +void wm8994_DeInit(void); +uint32_t wm8994_ReadID(uint16_t DeviceAddr); +uint32_t wm8994_SetVolume(uint16_t DeviceAddr, uint16_t headphone_gain, uint16_t line_in_gain, uint16_t dmic_gain); +uint32_t wm8994_SetMute(uint16_t DeviceAddr, uint32_t Cmd); +uint32_t wm8994_Reset(uint16_t DeviceAddr); + +/* AUDIO IO functions */ +void AUDIO_IO_Init(void); +void AUDIO_IO_DeInit(void); +void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value); +uint8_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg); +void AUDIO_IO_Delay(uint32_t Delay); + +#endif /* __WM8994_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/STM32F746G Discovery board/contents/Module_10/FFT2_lec.pptx b/STM32F746G Discovery board/contents/Module_10/FFT2_lec.pptx new file mode 100644 index 0000000..efa1a8a Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_10/FFT2_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_10/Lab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_10/Lab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..246522a Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_10/Lab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_10/Lab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..7e49fdc Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dft_soln.c b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dft_soln.c new file mode 100644 index 0000000..6b373aa --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dft_soln.c @@ -0,0 +1,63 @@ +// stm32f7_dft.c + +#include "stm32f7_display.h" +#include +#include "audio.h" + +#define SOURCE_FILE_NAME "stm32f7_dft.c" + + +#define N 128 +#define TESTFREQ 1800.0f +#define SAMPLING_FREQ 8000.0f + +typedef struct +{ + float real; + float imag; +} COMPLEX; + +COMPLEX samples[N]; + +void dft(COMPLEX *x) +{ + COMPLEX result[N]; + int k, n; + + for (k = 0; k < N; k++) + { + result[k].real = 0.0; + result[k].imag = 0.0; + + for (n = 0; n < N; n++) + { + result[k].real += x[n].real * cos(2 * PI * k * n / N) + + x[n].imag * sin(2 * PI * k * n / N); + result[k].imag += x[n].imag * cos(2 * PI * k * n / N) + - x[n].real * sin(2 * PI * k * n / N); + } + } + + for (k = 0; k < N; k++) + { + x[k] = result[k]; + } +} + +int main() +{ + int n; + + for(n=0 ; nreal, N, 0, 1); + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dftw_soln.c b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dftw_soln.c new file mode 100644 index 0000000..b9a3185 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_10/Lab/Solution/dftw_soln.c @@ -0,0 +1,74 @@ +// stm32f7_dftw.c + +#include "stm32f7_display.h" +#include +#include "audio.h" + +#define SOURCE_FILE_NAME "stm32f7_dftw.c " + +#define N 128 +#define TESTFREQ 1800.0 +#define SAMPLING_FREQ 8000.0 + +typedef struct +{ + float real; + float imag; +} COMPLEX; + +COMPLEX samples[N]; +COMPLEX twiddle[N]; + +void dftw(COMPLEX *x, COMPLEX *w) +{ + COMPLEX result[N]; + int k, n; + + for (k = 0; k < N; k++) + { + result[k].real = 0.0; + result[k].imag = 0.0; + + for (n = 0; n < N; n++) + { + result[k].real += x[n].real * w[(n * k) % N].real + + x[n].imag * w[(n * k) % N].imag; + result[k].imag += x[n].imag * w[(n * k) % N].real + - x[n].real * w[(n * k) % N].imag; + } + } + + for (k = 0; k < N; k++) + { + x[k] = result[k]; + } +} + +int main() +{ + int n; + + + + for(n = 0; n < N; n++) + { + twiddle[n].real = cos(2 * PI * n / N); + twiddle[n].imag = -sin(2 * PI * n / N); + } + + for(n=0 ; nreal, N/2, 0, 1); + while(1){} +} + + diff --git a/STM32F746G Discovery board/contents/Module_11/AdaptiveFilters1_lec.pptx b/STM32F746G Discovery board/contents/Module_11/AdaptiveFilters1_lec.pptx new file mode 100644 index 0000000..66df883 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_11/AdaptiveFilters1_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_12/AdaptiveFilters2_lec.pptx b/STM32F746G Discovery board/contents/Module_12/AdaptiveFilters2_lec.pptx new file mode 100644 index 0000000..06c570b Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_12/AdaptiveFilters2_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_13/AdaptiveFilters3_lec.pptx b/STM32F746G Discovery board/contents/Module_13/AdaptiveFilters3_lec.pptx new file mode 100644 index 0000000..1aceced Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_13/AdaptiveFilters3_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_13/Lab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_13/Lab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..c175017 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_13/Lab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_13/Lab/Lab_File/speechnoise.wav b/STM32F746G Discovery board/contents/Module_13/Lab/Lab_File/speechnoise.wav new file mode 100644 index 0000000..000f0e7 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_13/Lab/Lab_File/speechnoise.wav differ diff --git a/STM32F746G Discovery board/contents/Module_13/Lab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_13/Lab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..7771c6b Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_13/Lab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_2/SamplingReconstructionAndAliasing1_lec.pptx b/STM32F746G Discovery board/contents/Module_2/SamplingReconstructionAndAliasing1_lec.pptx new file mode 100644 index 0000000..26839d8 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_2/SamplingReconstructionAndAliasing1_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_3/Lab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_3/Lab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..03b6ee8 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_3/Lab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_3/Lab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_3/Lab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..324dcd7 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_3/Lab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_3/SamplingReconstructionAndAliasing2_lec.pptx b/STM32F746G Discovery board/contents/Module_3/SamplingReconstructionAndAliasing2_lec.pptx new file mode 100644 index 0000000..bd7ddc7 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_3/SamplingReconstructionAndAliasing2_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_4/Z-Transform_lec.pptx b/STM32F746G Discovery board/contents/Module_4/Z-Transform_lec.pptx new file mode 100644 index 0000000..afc0b0f Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_4/Z-Transform_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_5/FIR1_lec.pptx b/STM32F746G Discovery board/contents/Module_5/FIR1_lec.pptx new file mode 100644 index 0000000..bb16de1 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_5/FIR1_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_6/FIR2_lec.pptx b/STM32F746G Discovery board/contents/Module_6/FIR2_lec.pptx new file mode 100644 index 0000000..feab24c Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_6/FIR2_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_6/Lab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..590390a Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_6/Lab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/fir_coeffs.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/fir_coeffs.m new file mode 100644 index 0000000..0afc9d7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/fir_coeffs.m @@ -0,0 +1,40 @@ +% FIR_COEFFS.M +% MATLAB function to write FIR filter coefficients +% in format suitable for use in DSP LiB programs +% fir_intr.c and fir_prbs_intr.c +% written by Donald Reay +% + +function fir_coeffs(coeff) + +coefflen=length(coeff); +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using '); +fprintf(fid,'function fir_coeffs.m\n'); +fprintf(fid,'\n#define N %d\n',coefflen); +fprintf(fid,'\nfloat32_t h[N] = { \n'); +% j is used to count coefficients written to current line +% in output file +j=0; +% i is used to count through coefficients +for i=1:coefflen +% if six coeffs have been written to current line +% then start new line + if j>5 + j=0; + fprintf(fid,'\n'); + end +% if this is the last coefficient then simply write +% its value to the current line +% else write coefficient value, followed by comma + if i==coefflen + fprintf(fid,'%2.4E',coeff(i)); + else + fprintf(fid,'%2.4E,',coeff(i)); + j=j+1; + end +end +fprintf(fid,'\n};\n'); +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/hexsingle2num.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/hexsingle2num.m new file mode 100644 index 0000000..ced5e87 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/hexsingle2num.m @@ -0,0 +1,98 @@ +function x = hexsingle2num(s) +%HEXSINGLE2NUM Convert single precision IEEE hexadecimal string to number. +% HEXSINGLE2NUM(S), where S is a 8 character string containing +% a hexadecimal number, returns a double type number +% equal to the IEEE single precision +% floating point number it represents. Fewer than 8 +% characters are padded on the right with zeros. +% +% If S is a character array, each row is interpreted as a single +% precision number (and returned as a double). +% +% NaNs, infinities and denorms are handled correctly. +% +% Example: +% hexsingle2num('40490fdb') returns Pi. +% hexsingle2num('bf8') returns -1. +% +% See also HEX2NUM. + +% Based on Matlab's hex2num. +% Note: IEEE Standard 754 for floating point numbers +% +% Floating point numbers are represented as: +% x = +/- (1+f)*2^e +% +% doubles: 64 bits +% Bit 63 (1 bit) = sign (0=positive, 1=negative) +% Bit 62 to 52 (11 bits)= exponent biased by 1023 +% Bit 51 to 0 (52 bits)= fraction f of the number 1.f +% singles: 32 bits +% Bit 31 (1 bit) = sign (0=positive, 1=negative) +% Bit 30 to 23 (8 bits) = exponent biased by 127 +% Bit 22 to 0 (23 bits)= fraction f of the number 1.f + +% 21 June 2005 Fixed bug with underflow. +% Bug found by Matthias Noell (matthias.noell@heidelberg.com) + +if iscellstr(s), s = char(s); end +if ~ischar(s) + error('Input to hexsingle2num must be a string.') +end +if isempty(s), x = []; return, end + +[row,col] = size(s); +blanks = find(s==' '); % Find the blanks at the end +if ~isempty(blanks), s(blanks) = '0'; end % Zero pad the shorter hex numbers. + +% Convert characters to numeric digits. +% More than 8 characters are ignored +% For double: d = zeros(row,16); +d = zeros(row,8); +d(:,1:col) = abs(lower(s)) - '0'; +d = d + ('0'+10-'a').*(d>9); +neg = d(:,1) > 7; +d(:,1) = d(:,1)-8*neg; + +if any(d > 15) | any(d < 0) + error('Input string to hexsingle2num should have just 0-9, a-f, or A-F.') +end + +% Floating point exponent. +% For double: e = 16*(16*(d(:,1)-4) + d(:,2)) + d(:,3) + 1; +% For double: e = 256*d(:,1) + 16*d(:,2) + d(:,3) - 1023; +expBit = (d(:,3) > 7); +e = 32*d(:,1) + 2*d(:,2) + expBit - 127; +d(:,3) = d(:,3)-8*expBit; % Remove most sig. bit of d(:,3) which belongs to exponent + +% Floating point fraction. +% For double: sixteens = [16;256;4096;65536;1048576;16777216;268435456]; +% For double: sixteens2 = 268435456*sixteens(1:6); +% For double: multiplier = 1./[sixteens;sixteens2]; +% For double: f = d(:,4:16)*multiplier; +sixteens = [16;256;4096;65536;1048576;16777216]; +multiplier = 2./[sixteens]; +f = d(:,3:8)*multiplier; + +x = zeros(row,1); +% Scale the fraction by 2 to the exponent. +% For double: overinf = find((e>1023) & (f==0)); +overinf = find((e>127) & (f==0)); +if ~isempty(overinf), x(overinf) = inf; end + +% For double: overNaN = find((e>1023) & (f~=0)); +overNaN = find((e>127) & (f~=0)); +if ~isempty(overNaN), x(overNaN) = NaN; end + +% For double: underflow = find(e<-1022); +underflow = find(e<-126); +if ~isempty(underflow), x(underflow) = pow2(f(underflow),-126); end + +% For double: allothers = find((e<=1023) & (e>=-1022)); +allothers = find((e<=127) & (e>=-126)); +if ~isempty(allothers), x(allothers) = pow2(1+f(allothers),e(allothers)); end + +negatives = find(neg); +if ~isempty(negatives), x(negatives) = -x(negatives); end + + diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/iirsos_coeffs.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/iirsos_coeffs.m new file mode 100644 index 0000000..622b66f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/iirsos_coeffs.m @@ -0,0 +1,50 @@ +% IIRSOS_COEFFS.M +% +% MATLAB function to write SOS IIR filter coefficients +% in format suitable for use in DSP LiB programs +% including iirsos_intr.c, iirsosprn_intr.c and +% iirsosdelta_intr.c +% assumes that coefficients have been exported from +% fdatool as two matrices +% first matrix has format +% [ b10 b11 b12 a10 a11 a12 +% b20 b21 b22 a20 a21 a22 +% ... +% ] +% where bij is the bj coefficient in the ith stage +% second matrix contains gains for each stage +% +function iirsos_coeffs(coeff,gain) +% +num_sections=length(gain)-1; +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using'); +fprintf(fid,'\n// function iirsos_coeffs.m\n',fname); +fprintf(fid,'\n#define NUM_SECTIONS %d\n',num_sections); +% first write the numerator coefficients b +% i is used to count through sections +fprintf(fid,'\nfloat b[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + end +end +% then write the denominator coefficients a +% i is used to count through sections +fprintf(fid,'\nfloat a[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + end +end +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/logfft.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/logfft.m new file mode 100644 index 0000000..5de9dce --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/logfft.m @@ -0,0 +1,74 @@ +% LOGFFT.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function logfft() + +fname = input('enter filename ','s'); +fs = input('enter sampling frequency in Hz '); +xscale = input('linear (0) or log (1) frequency scale? '); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + mydata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +g = abs(fft(mydata)); +ff = 0:fs/N:(fs/2-fs/N); +figure(1) +plot(ff,20*log10(g(1:(N/2))),'LineWidth',2.0); +grid on +xlabel('frequency (Hz)','FontSize',12,'FontName','times'); +ylabel('magnitude (dB)','FontSize',12,'FontName','times'); +if xscale == 1 + set(gca,'FontSize',12,'XScale','log','FontName','times'); +else + set(gca,'FontSize',12,'XScale','lin','FontName','times'); +end +tt = 0:1/fs:(N-1)/fs; +figure(2) +str = [num2str(N),' sample values read from file']; +disp(str); +% PTS = input('enter number of sample values to plot '); +PTS = N; +plot(tt(1:PTS),mydata(1:PTS),'LineWidth',2.0); +grid on +xlabel('time (s)','FontSize',12,'FontName','times'); +ylabel('sample value','FontSize',12,'FontName','times'); +set(gca,'FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_complex.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_complex.m new file mode 100644 index 0000000..09cd911 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_complex.m @@ -0,0 +1,63 @@ +% PLOT_COMPLEX.M +% +% +% MATLAB function to read (sample) values saved from STM32F4 +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_complex() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + +% read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','complex data read from the microcontroller memory in Keil uVision 5') +subplot(2,1,1); +plot(0:(N/2-1),memdata(1:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); +subplot(2,1,2); +plot(0:(N/2-1),memdata(2:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('imaginary','FontSize',12,'FontName','times'); \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_int16.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_int16.m new file mode 100644 index 0000000..6b29f59 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_int16.m @@ -0,0 +1,62 @@ +% PLOT_INT16.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot them +% data should be 16-bit integer saved in Intel hex format file +% + +function plot_int16() + +fname = input('enter filename ','s'); +plot_option = input('line (0) or bar (1) graph? '); +fid = fopen(fname,'rt'); +int16count = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +% process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 16-bit integer values on current line + % equal to number of bytes of data on current line divided by two + % as indicated by first two hex digits + num16bitvalues = hex2dec(fscanf(fid,'%c',2))/2; + % read and discard next 6 characters (hex digits) + % indicating address and record type + fscanf(fid,'%c',6); + if (num16bitvalues > 0) + for i=1:num16bitvalues + % read 4 character hex string and convert to decimal + hexstring = fscanf(fid,'%c',4); + reordered(1) = hexstring(3); + reordered(2) = hexstring(4); + reordered(3) = hexstring(1); + reordered(4) = hexstring(2); + memdata(int16count+1)= hex2dec(reordered); + % hex2dec assumes unsigned 16-bit integer + % alter result assuming data is signed 16-bit integer + if (memdata(int16count+1) > 32767) + memdata(int16count+1) = memdata(int16count+1)-65536; + end + % update total number of integers read from file + int16count = int16count+1; + end + else + finished = 1; + end +end +end +fclose(fid); +set(gcf,'numberTitle','off') +set(gcf,'name','int16 data read from the microcontroller memory in Keil uVision 5') +if (plot_option == 0) + plot(0:(int16count-1),memdata(1:1:int16count)/2,'LineWidth',2.0); +else + bar(0:(int16count-1),memdata(1:1:int16count)/2,0.2); +end +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('magnitude','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_real.m b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_real.m new file mode 100644 index 0000000..5af48ec --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/MATLAB/plot_real.m @@ -0,0 +1,57 @@ +% PLOT_REAL.M +% +% MATLAB function to plot real +% floating point values read from a microcontroller +% memory using Keil uvision 5. +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_real() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','real data read from the microcontroller memory in Keil uVision 5') +plot(0:(floatcount-1),memdata(1:1:floatcount)/2,'LineWidth',2.0); +%bar(0:(floatcount-1),memdata(1:1:floatcount)/2,0.2);grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/mefsin.wav b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/mefsin.wav new file mode 100644 index 0000000..fc481ad Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/mefsin.wav differ diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/ave5.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/ave5.h new file mode 100644 index 0000000..de80b3c --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/ave5.h @@ -0,0 +1,5 @@ +// ave5.h + +#define N 5 + +float h[N]={0.2, 0.2, 0.2, 0.2, 0.2}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp1750.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp1750.h new file mode 100644 index 0000000..429c5f3 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp1750.h @@ -0,0 +1,20 @@ +// bp1750.h + +#define N 81 + +float h[N] = { +-2.2900E-018,-7.6854E-004,-3.7155E-004,9.2904E-004,8.4076E-004,-6.3832E-004, +-8.8659E-004,1.1437E-004,-8.7308E-019,-1.5955E-004,1.7297E-003,1.7506E-003, +-3.2683E-003,-5.1810E-003,3.0236E-003,9.3494E-003,-1.4152E-017,-1.1950E-002, +-4.9436E-003,1.0855E-002,8.7989E-003,-6.0782E-003,-7.7823E-003,9.3584E-004, +-3.3632E-018,-1.1679E-003,1.2135E-002,1.1871E-002,-2.1607E-002,-3.3696E-002, +1.9537E-002,6.0691E-002,-3.1169E-017,-8.1663E-002,-3.5666E-002,8.4995E-002, +7.7816E-002,-6.4681E-002,-1.1191E-001,2.4196E-002,1.2500E-001,2.4196E-002, +-1.1191E-001,-6.4681E-002,7.7816E-002,8.4995E-002,-3.5666E-002,-8.1663E-002, +-3.1169E-017,6.0691E-002,1.9537E-002,-3.3696E-002,-2.1607E-002,1.1871E-002, +1.2135E-002,-1.1679E-003,-3.3632E-018,9.3584E-004,-7.7823E-003,-6.0782E-003, +8.7989E-003,1.0855E-002,-4.9436E-003,-1.1950E-002,-1.4152E-017,9.3494E-003, +3.0236E-003,-5.1810E-003,-3.2683E-003,1.7506E-003,1.7297E-003,-1.5955E-004, +-8.7308E-019,1.1437E-004,-8.8659E-004,-6.3832E-004,8.4076E-004,9.2904E-004, +-3.7155E-004,-7.6854E-004,-2.2900E-018 +}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp41.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp41.h new file mode 100644 index 0000000..a2a471e --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp41.h @@ -0,0 +1,13 @@ +// bp41.h + +#define N 41 + +float h[N] = { +-1.9915E-003,-2.0345E-003,1.7656E-018,3.5665E-003,6.3099E-003,5.4318E-003, +-2.6700E-018,-7.5463E-003,-1.2248E-002,-9.7887E-003,4.3953E-018,1.2010E-002, +1.8473E-002,1.4048E-002,-5.9223E-018,-1.5745E-002,-2.3222E-002,-1.6962E-002, +2.7279E-017,1.7597E-002,2.5000E-002,1.7597E-002,2.7279E-017,-1.6962E-002, +-2.3222E-002,-1.5745E-002,-5.9223E-018,1.4048E-002,1.8473E-002,1.2010E-002, +4.3953E-018,-9.7887E-003,-1.2248E-002,-7.5463E-003,-2.6700E-018,5.4318E-003, +6.3099E-003,3.5665E-003,1.7656E-018,-2.0345E-003,-1.9915E-003 +}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp55.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp55.h new file mode 100644 index 0000000..9a3682f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bp55.h @@ -0,0 +1,16 @@ +//bp55.h + +#define N 55 + +float h[N]= +{1.7619E-017, 7.0567E-003, 2.2150E-018,-1.0962E-002, 4.0310E-017, + 1.3946E-002, 7.1787E-018,-1.4588E-002, 3.9928E-017, 1.1474E-002, + 5.9881E-018,-3.5159E-003,-6.6174E-018,-9.7476E-003,-1.7919E-017, + 2.7932E-002,-9.4329E-017,-4.9740E-002, 3.3834E-017, 7.3066E-002, +-3.6228E-017,-9.5284E-002, 3.2194E-017, 1.1365E-001,-2.2165E-017, +-1.2576E-001, 7.8980E-018, 1.3000E-001, 7.8980E-018,-1.2576E-001, +-2.2165E-017, 1.1365E-001, 3.2194E-017,-9.5284E-002,-3.6228E-017, + 7.3066E-002, 3.3834E-017,-4.9740E-002,-9.4329E-017, 2.7932E-002, +-1.7919E-017,-9.7476E-003,-6.6174E-018,-3.5159E-003, 5.9881E-018, + 1.1474E-002, 3.9928E-017,-1.4588E-002, 7.1787E-018, 1.3946E-002, + 4.0310E-017,-1.0962E-002, 2.2150E-018, 7.0567E-003, 1.7619E-017}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs2700.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs2700.h new file mode 100644 index 0000000..518e9e6 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs2700.h @@ -0,0 +1,21 @@ +// bs2700.h + +#define N 89 + +float h[N] = { +-4.4230E-004,7.0433E-004,-2.6120E-004,-1.7972E-004,-6.9219E-018,2.4316E-004, +4.7954E-004,-1.7657E-003,1.5295E-003,1.3523E-003,-4.4872E-003,3.6368E-003, +2.0597E-003,-7.4813E-003,6.1048E-003,2.2005E-003,-9.5210E-003,7.8501E-003, +1.6112E-003,-9.1250E-003,7.2785E-003,5.9684E-004,-5.0469E-003,2.6733E-003, +-2.6271E-017,3.1955E-003,-7.2161E-003,1.0221E-003,1.4959E-002,-2.2570E-002, +4.8135E-003,2.8456E-002,-4.2116E-002,1.1962E-002,4.1134E-002,-6.3159E-002, +2.2081E-002,5.0364E-002,-8.2093E-002,3.3692E-002,5.4206E-002,-9.5274E-002, +4.4497E-002,5.1989E-002,9.0000E-001,5.1989E-002,4.4497E-002,-9.5274E-002, +5.4206E-002,3.3692E-002,-8.2093E-002,5.0364E-002,2.2081E-002,-6.3159E-002, +4.1134E-002,1.1962E-002,-4.2116E-002,2.8456E-002,4.8135E-003,-2.2570E-002, +1.4959E-002,1.0221E-003,-7.2161E-003,3.1955E-003,-2.6271E-017,2.6733E-003, +-5.0469E-003,5.9684E-004,7.2785E-003,-9.1250E-003,1.6112E-003,7.8501E-003, +-9.5210E-003,2.2005E-003,6.1048E-003,-7.4813E-003,2.0597E-003,3.6368E-003, +-4.4872E-003,1.3523E-003,1.5295E-003,-1.7657E-003,4.7954E-004,2.4316E-004, +-6.9219E-018,-1.7972E-004,-2.6120E-004,7.0433E-004,-4.4230E-004 +}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs790.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs790.h new file mode 100644 index 0000000..f54b1ff --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/bs790.h @@ -0,0 +1,21 @@ +// bs790.h + + +#define N 81 + +float h[N] = { +-6.1030E-005,-6.1030E-005,2.1360E-004,8.5441E-004,1.5868E-003,1.8614E-003, +1.1596E-003,-5.4927E-004,-2.6243E-003,-3.9059E-003,-3.5702E-003,-1.8004E-003, +1.2206E-004,7.0184E-004,-7.3235E-004,-2.8684E-003,-3.2346E-003,2.4412E-004, +7.2625E-003,1.4495E-002,1.7149E-002,1.2267E-002,1.1596E-003,-1.0528E-002, +-1.6295E-002,-1.3274E-002,-5.0349E-003,0.0000E+000,-5.4011E-003,-2.1116E-002, +-3.7136E-002,-3.8205E-002,-1.3518E-002,3.4085E-002,8.5777E-002,1.1437E-001, +9.8715E-002,3.7014E-002,-4.9159E-002,-1.2352E-001,8.4712E-001,-1.2352E-001, +-4.9159E-002,3.7014E-002,9.8715E-002,1.1437E-001,8.5777E-002,3.4085E-002, +-1.3518E-002,-3.8205E-002,-3.7136E-002,-2.1116E-002,-5.4011E-003,0.0000E+000, +-5.0349E-003,-1.3274E-002,-1.6295E-002,-1.0528E-002,1.1596E-003,1.2267E-002, +1.7149E-002,1.4495E-002,7.2625E-003,2.4412E-004,-3.2346E-003,-2.8684E-003, +-7.3235E-004,7.0184E-004,1.2206E-004,-1.8004E-003,-3.5702E-003,-3.9059E-003, +-2.6243E-003,-5.4927E-004,1.1596E-003,1.8614E-003,1.5868E-003,8.5441E-004, +2.1360E-004,-6.1030E-005,-6.1030E-005 +}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/comb14.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/comb14.h new file mode 100644 index 0000000..d19ba39 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/comb14.h @@ -0,0 +1,5 @@ +//comb14.h Coefficients file for comb filter with 6 bands + +#define N 14 //number of coefficients h(13),h(12),...,h(0) + +float h[N] = {1.0,0,0,0,0,0,0,0,0,0,0,0,0,-1.0}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/lp33.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/lp33.h new file mode 100644 index 0000000..d6adffe --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/lp33.h @@ -0,0 +1,39 @@ +//lp33.h + +#define N 33 + +float h[N] = { +-9.3509933339593076e-004, +1.3324942475194321e-003, +2.1147289838613099e-003, +-1.7503267975235281e-003, +-5.4148775799370587e-003, +1.2870516070686065e-003, +1.1580556278114044e-002, +2.4901233658082911e-003, +-2.0425803807941834e-002, +-1.2995115088006321e-002, +3.0719159332392790e-002, +3.5797958000773983e-002, +-4.0455628835417687e-002, +-8.7173357506470081e-002, +4.7439685584831748e-002, +3.1148224079837533e-001, +4.4981242149989392e-001, +3.1148224079837533e-001, +4.7439685584831748e-002, +-8.7173357506470081e-002, +-4.0455628835417694e-002, +3.5797958000773983e-002, +3.0719159332392804e-002, +-1.2995115088006324e-002, +-2.0425803807941838e-002, +2.4901233658082911e-003, +1.1580556278114043e-002, +1.2870516070686076e-003, +-5.4148775799370604e-003, +-1.7503267975235281e-003, +2.1147289838613120e-003, +1.3324942475194329e-003, +-9.3509933339593076e-004 +}; diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass2b.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass2b.h new file mode 100644 index 0000000..28b0b71 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass2b.h @@ -0,0 +1,17 @@ +//pass2b.h + +#define N 55 + +float h[N] = + {-3.7529E-003, 3.8826E-003, 1.5376E-002, 3.6023E-003,-3.1238E-003, + 2.3790E-003,-1.3438E-003,-3.0706E-008, 1.6629E-003,-3.6469E-003, + 5.9452E-003,-8.5410E-003,-4.5632E-002,-1.4511E-002, 1.7805E-002, + -2.1237E-002, 2.4749E-002, 1.1310E-001, 3.1750E-002,-3.5100E-002, + 3.8257E-002,-4.1152E-002,-1.7489E-001,-4.5912E-002, 4.7669E-002, + -4.8953E-002, 4.9736E-002, 2.0000E-001, 4.9736E-002,-4.8953E-002, + 4.7669E-002,-4.5912E-002,-1.7489E-001,-4.1152E-002, 3.8257E-002, + -3.5100E-002, 3.1750E-002, 1.1310E-001, 2.4749E-002,-2.1237E-002, + 1.7805E-002,-1.4511E-002,-4.5632E-002,-8.5410E-003, 5.9452E-003, + -3.6469E-003, 1.6629E-003,-3.0706E-008,-1.3438E-003, 2.3790E-003, + -3.1238E-003, 3.6023E-003, 1.5376E-002, 3.8826E-003,-3.7529E-003}; + diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass4b.h b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass4b.h new file mode 100644 index 0000000..6cd38e2 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_6/Lab/Lab_Files/src/pass4b.h @@ -0,0 +1,17 @@ +//pass4b.h + +#define N 55 + +float h[N] = + { 4.4118E-003,-2.3995E-003,-4.9993E-009, 2.2263E-003,-3.6722E-003, + 3.8493E-003,-2.5561E-003, 5.4876E-008, 3.1630E-003,-5.9010E-003, + 6.9890E-003,-5.2786E-003,-1.1887E-008, 8.9683E-003,-2.0931E-002, + 3.4363E-002,-4.7077E-002,-2.2621E-001,-6.0393E-002, 5.6794E-002, + -4.4974E-002, 2.5433E-002, 9.5911E-009,-2.8375E-002, 5.6038E-002, + -7.9209E-002, 9.4605E-002, 3.9999E-001, 9.4605E-002,-7.9209E-002, + 5.6038E-002,-2.8375E-002, 9.5911E-009, 2.5433E-002,-4.4974E-002, + 5.6794E-002,-6.0393E-002,-2.2621E-001,-4.7077E-002, 3.4363E-002, + -2.0931E-002, 8.9683E-003,-1.1887E-008,-5.2786E-003, 6.9890E-003, + -5.9010E-003, 3.1630E-003, 5.4876E-008,-2.5561E-003, 3.8493E-003, + -3.6722E-003, 2.2263E-003,-4.9993E-009,-2.3995E-003, 4.4118E-003}; + diff --git a/STM32F746G Discovery board/contents/Module_6/Lab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_6/Lab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..0774899 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_6/Lab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_7/IIR1_lec.pptx b/STM32F746G Discovery board/contents/Module_7/IIR1_lec.pptx new file mode 100644 index 0000000..d809e25 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_7/IIR1_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_8/IIR2_lec.pptx b/STM32F746G Discovery board/contents/Module_8/IIR2_lec.pptx new file mode 100644 index 0000000..f3d280b Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_8/IIR2_lec.pptx differ diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/DSP_Lab_Manual.docx b/STM32F746G Discovery board/contents/Module_8/Lab/DSP_Lab_Manual.docx new file mode 100644 index 0000000..1e965c5 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_8/Lab/DSP_Lab_Manual.docx differ diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/fir_coeffs.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/fir_coeffs.m new file mode 100644 index 0000000..0afc9d7 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/fir_coeffs.m @@ -0,0 +1,40 @@ +% FIR_COEFFS.M +% MATLAB function to write FIR filter coefficients +% in format suitable for use in DSP LiB programs +% fir_intr.c and fir_prbs_intr.c +% written by Donald Reay +% + +function fir_coeffs(coeff) + +coefflen=length(coeff); +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using '); +fprintf(fid,'function fir_coeffs.m\n'); +fprintf(fid,'\n#define N %d\n',coefflen); +fprintf(fid,'\nfloat32_t h[N] = { \n'); +% j is used to count coefficients written to current line +% in output file +j=0; +% i is used to count through coefficients +for i=1:coefflen +% if six coeffs have been written to current line +% then start new line + if j>5 + j=0; + fprintf(fid,'\n'); + end +% if this is the last coefficient then simply write +% its value to the current line +% else write coefficient value, followed by comma + if i==coefflen + fprintf(fid,'%2.4E',coeff(i)); + else + fprintf(fid,'%2.4E,',coeff(i)); + j=j+1; + end +end +fprintf(fid,'\n};\n'); +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/hexsingle2num.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/hexsingle2num.m new file mode 100644 index 0000000..ced5e87 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/hexsingle2num.m @@ -0,0 +1,98 @@ +function x = hexsingle2num(s) +%HEXSINGLE2NUM Convert single precision IEEE hexadecimal string to number. +% HEXSINGLE2NUM(S), where S is a 8 character string containing +% a hexadecimal number, returns a double type number +% equal to the IEEE single precision +% floating point number it represents. Fewer than 8 +% characters are padded on the right with zeros. +% +% If S is a character array, each row is interpreted as a single +% precision number (and returned as a double). +% +% NaNs, infinities and denorms are handled correctly. +% +% Example: +% hexsingle2num('40490fdb') returns Pi. +% hexsingle2num('bf8') returns -1. +% +% See also HEX2NUM. + +% Based on Matlab's hex2num. +% Note: IEEE Standard 754 for floating point numbers +% +% Floating point numbers are represented as: +% x = +/- (1+f)*2^e +% +% doubles: 64 bits +% Bit 63 (1 bit) = sign (0=positive, 1=negative) +% Bit 62 to 52 (11 bits)= exponent biased by 1023 +% Bit 51 to 0 (52 bits)= fraction f of the number 1.f +% singles: 32 bits +% Bit 31 (1 bit) = sign (0=positive, 1=negative) +% Bit 30 to 23 (8 bits) = exponent biased by 127 +% Bit 22 to 0 (23 bits)= fraction f of the number 1.f + +% 21 June 2005 Fixed bug with underflow. +% Bug found by Matthias Noell (matthias.noell@heidelberg.com) + +if iscellstr(s), s = char(s); end +if ~ischar(s) + error('Input to hexsingle2num must be a string.') +end +if isempty(s), x = []; return, end + +[row,col] = size(s); +blanks = find(s==' '); % Find the blanks at the end +if ~isempty(blanks), s(blanks) = '0'; end % Zero pad the shorter hex numbers. + +% Convert characters to numeric digits. +% More than 8 characters are ignored +% For double: d = zeros(row,16); +d = zeros(row,8); +d(:,1:col) = abs(lower(s)) - '0'; +d = d + ('0'+10-'a').*(d>9); +neg = d(:,1) > 7; +d(:,1) = d(:,1)-8*neg; + +if any(d > 15) | any(d < 0) + error('Input string to hexsingle2num should have just 0-9, a-f, or A-F.') +end + +% Floating point exponent. +% For double: e = 16*(16*(d(:,1)-4) + d(:,2)) + d(:,3) + 1; +% For double: e = 256*d(:,1) + 16*d(:,2) + d(:,3) - 1023; +expBit = (d(:,3) > 7); +e = 32*d(:,1) + 2*d(:,2) + expBit - 127; +d(:,3) = d(:,3)-8*expBit; % Remove most sig. bit of d(:,3) which belongs to exponent + +% Floating point fraction. +% For double: sixteens = [16;256;4096;65536;1048576;16777216;268435456]; +% For double: sixteens2 = 268435456*sixteens(1:6); +% For double: multiplier = 1./[sixteens;sixteens2]; +% For double: f = d(:,4:16)*multiplier; +sixteens = [16;256;4096;65536;1048576;16777216]; +multiplier = 2./[sixteens]; +f = d(:,3:8)*multiplier; + +x = zeros(row,1); +% Scale the fraction by 2 to the exponent. +% For double: overinf = find((e>1023) & (f==0)); +overinf = find((e>127) & (f==0)); +if ~isempty(overinf), x(overinf) = inf; end + +% For double: overNaN = find((e>1023) & (f~=0)); +overNaN = find((e>127) & (f~=0)); +if ~isempty(overNaN), x(overNaN) = NaN; end + +% For double: underflow = find(e<-1022); +underflow = find(e<-126); +if ~isempty(underflow), x(underflow) = pow2(f(underflow),-126); end + +% For double: allothers = find((e<=1023) & (e>=-1022)); +allothers = find((e<=127) & (e>=-126)); +if ~isempty(allothers), x(allothers) = pow2(1+f(allothers),e(allothers)); end + +negatives = find(neg); +if ~isempty(negatives), x(negatives) = -x(negatives); end + + diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/iirsos_coeffs.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/iirsos_coeffs.m new file mode 100644 index 0000000..622b66f --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/iirsos_coeffs.m @@ -0,0 +1,50 @@ +% IIRSOS_COEFFS.M +% +% MATLAB function to write SOS IIR filter coefficients +% in format suitable for use in DSP LiB programs +% including iirsos_intr.c, iirsosprn_intr.c and +% iirsosdelta_intr.c +% assumes that coefficients have been exported from +% fdatool as two matrices +% first matrix has format +% [ b10 b11 b12 a10 a11 a12 +% b20 b21 b22 a20 a21 a22 +% ... +% ] +% where bij is the bj coefficient in the ith stage +% second matrix contains gains for each stage +% +function iirsos_coeffs(coeff,gain) +% +num_sections=length(gain)-1; +fname = input('enter filename for coefficients ','s'); +fid = fopen(fname,'wt'); +fprintf(fid,'// %s\n',fname); +fprintf(fid,'// this file was generated using'); +fprintf(fid,'\n// function iirsos_coeffs.m\n',fname); +fprintf(fid,'\n#define NUM_SECTIONS %d\n',num_sections); +% first write the numerator coefficients b +% i is used to count through sections +fprintf(fid,'\nfloat b[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,1)*gain(i),coeff(i,2)*gain(i),coeff(i,3)*gain(i)); + end +end +% then write the denominator coefficients a +% i is used to count through sections +fprintf(fid,'\nfloat a[NUM_SECTIONS][3] = { \n'); +for i=1:num_sections + if i==num_sections + fprintf(fid,'{%2.8E, %2.8E, %2.8E} };\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + else + fprintf(fid,'{%2.8E, %2.8E, %2.8E},\n',... + coeff(i,4),coeff(i,5),coeff(i,6)); + end +end +fclose(fid); diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/logfft.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/logfft.m new file mode 100644 index 0000000..5de9dce --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/logfft.m @@ -0,0 +1,74 @@ +% LOGFFT.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function logfft() + +fname = input('enter filename ','s'); +fs = input('enter sampling frequency in Hz '); +xscale = input('linear (0) or log (1) frequency scale? '); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + mydata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +g = abs(fft(mydata)); +ff = 0:fs/N:(fs/2-fs/N); +figure(1) +plot(ff,20*log10(g(1:(N/2))),'LineWidth',2.0); +grid on +xlabel('frequency (Hz)','FontSize',12,'FontName','times'); +ylabel('magnitude (dB)','FontSize',12,'FontName','times'); +if xscale == 1 + set(gca,'FontSize',12,'XScale','log','FontName','times'); +else + set(gca,'FontSize',12,'XScale','lin','FontName','times'); +end +tt = 0:1/fs:(N-1)/fs; +figure(2) +str = [num2str(N),' sample values read from file']; +disp(str); +% PTS = input('enter number of sample values to plot '); +PTS = N; +plot(tt(1:PTS),mydata(1:PTS),'LineWidth',2.0); +grid on +xlabel('time (s)','FontSize',12,'FontName','times'); +ylabel('sample value','FontSize',12,'FontName','times'); +set(gca,'FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_complex.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_complex.m new file mode 100644 index 0000000..09cd911 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_complex.m @@ -0,0 +1,63 @@ +% PLOT_COMPLEX.M +% +% +% MATLAB function to read (sample) values saved from STM32F4 +% memory using Keil uvision 5 and plot FFT magnitude on log scale +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_complex() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + +% read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','complex data read from the microcontroller memory in Keil uVision 5') +subplot(2,1,1); +plot(0:(N/2-1),memdata(1:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); +subplot(2,1,2); +plot(0:(N/2-1),memdata(2:2:N),'LineWidth',2.0); +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('imaginary','FontSize',12,'FontName','times'); \ No newline at end of file diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_int16.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_int16.m new file mode 100644 index 0000000..6b29f59 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_int16.m @@ -0,0 +1,62 @@ +% PLOT_INT16.M +% +% MATLAB function to read (sample) values saved from a microcontroller +% memory using Keil uvision 5 and plot them +% data should be 16-bit integer saved in Intel hex format file +% + +function plot_int16() + +fname = input('enter filename ','s'); +plot_option = input('line (0) or bar (1) graph? '); +fid = fopen(fname,'rt'); +int16count = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +% process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 16-bit integer values on current line + % equal to number of bytes of data on current line divided by two + % as indicated by first two hex digits + num16bitvalues = hex2dec(fscanf(fid,'%c',2))/2; + % read and discard next 6 characters (hex digits) + % indicating address and record type + fscanf(fid,'%c',6); + if (num16bitvalues > 0) + for i=1:num16bitvalues + % read 4 character hex string and convert to decimal + hexstring = fscanf(fid,'%c',4); + reordered(1) = hexstring(3); + reordered(2) = hexstring(4); + reordered(3) = hexstring(1); + reordered(4) = hexstring(2); + memdata(int16count+1)= hex2dec(reordered); + % hex2dec assumes unsigned 16-bit integer + % alter result assuming data is signed 16-bit integer + if (memdata(int16count+1) > 32767) + memdata(int16count+1) = memdata(int16count+1)-65536; + end + % update total number of integers read from file + int16count = int16count+1; + end + else + finished = 1; + end +end +end +fclose(fid); +set(gcf,'numberTitle','off') +set(gcf,'name','int16 data read from the microcontroller memory in Keil uVision 5') +if (plot_option == 0) + plot(0:(int16count-1),memdata(1:1:int16count)/2,'LineWidth',2.0); +else + bar(0:(int16count-1),memdata(1:1:int16count)/2,0.2); +end +grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('magnitude','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_real.m b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_real.m new file mode 100644 index 0000000..5af48ec --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/MATLAB_files/plot_real.m @@ -0,0 +1,57 @@ +% PLOT_REAL.M +% +% MATLAB function to plot real +% floating point values read from a microcontroller +% memory using Keil uvision 5. +% data should be 32-bit floating point saved in +% Intel hex format file +% + +function plot_real() + +fname = input('enter filename ','s'); +fid = fopen(fname,'rt'); +floatcount = 0; +dummy = fscanf(fid,'%c',1); +if (dummy ~= ':') + disp('error: initial colon not found'); +else +%process data from this file +finished = 0; +while (finished == 0) + % move to next line + while (fscanf(fid,'%c',1) ~= ':'); end + % get number of 32-bit hex values on line + N = hex2dec(fscanf(fid,'%c',2))/4; + % read and discard next 6 characters + fscanf(fid,'%c',6); + if (N > 0) + for i=1:N + % read 8 character hex string and convert to IEEE float 754 single + hexstring = fscanf(fid,'%c',8); + reordered(1) = hexstring(7); + reordered(2) = hexstring(8); + reordered(3) = hexstring(5); + reordered(4) = hexstring(6); + reordered(5) = hexstring(3); + reordered(6) = hexstring(4); + reordered(7) = hexstring(1); + reordered(8) = hexstring(2); + memdata(floatcount+1)= hexsingle2num(reordered); + floatcount = floatcount+1; + end + else + finished = 1; + end +end +end +fclose(fid); + +N = floatcount; +figure; +set(gcf,'numberTitle','off') +set(gcf,'name','real data read from the microcontroller memory in Keil uVision 5') +plot(0:(floatcount-1),memdata(1:1:floatcount)/2,'LineWidth',2.0); +%bar(0:(floatcount-1),memdata(1:1:floatcount)/2,0.2);grid on +xlabel('n','FontSize',12,'FontName','times'); +ylabel('real','FontSize',12,'FontName','times'); diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bilinear.h b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bilinear.h new file mode 100644 index 0000000..9f9a34c --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bilinear.h @@ -0,0 +1,8 @@ +// bilinear.h +// second order type 1 Chebyshev LPF with 2dB passband ripple +// and cutoff frequency 1500Hz + +#define NUM_SECTIONS 1 + +float b[NUM_SECTIONS][3]={ {0.12895869, 0.25791738, 0.12895869} }; +float a[NUM_SECTIONS][3]={ {1.0, -0.81226498, 0.46166249} }; diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bp2000.h b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bp2000.h new file mode 100644 index 0000000..334a953 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/bp2000.h @@ -0,0 +1,26 @@ +// bp2000.h +// this file was generated automatically using function iirsos_coeffs.m + +#define NUM_SECTIONS 9 + +float b[NUM_SECTIONS][3] = { +{5.97542910E-001, -3.74443465E-001, 5.97542910E-001}, +{5.97542910E-001, 3.74443465E-001, 5.97542910E-001}, +{5.27441914E-001, -3.70554581E-001, 5.27441914E-001}, +{5.27441914E-001, 3.70554581E-001, 5.27441914E-001}, +{4.17951795E-001, -3.77097550E-001, 4.17951795E-001}, +{4.17951795E-001, 3.77097550E-001, 4.17951795E-001}, +{2.80713695E-001, -3.86683163E-001, 2.80713695E-001}, +{2.80713695E-001, 3.86683163E-001, 2.80713695E-001}, +{1.95591736E-001, 0.00000000E+000, -1.95591736E-001} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+000, 3.70900810E-001, 9.48614227E-001}, +{1.00000000E+000, -3.70900810E-001, 9.48614227E-001}, +{1.00000000E+000, 3.37555518E-001, 8.47137417E-001}, +{1.00000000E+000, -3.37555518E-001, 8.47137417E-001}, +{1.00000000E+000, 2.75922559E-001, 7.42960502E-001}, +{1.00000000E+000, -2.75922559E-001, 7.42960502E-001}, +{1.00000000E+000, 1.63798957E-001, 6.49723295E-001}, +{1.00000000E+000, -1.63798957E-001, 6.49723295E-001}, +{1.00000000E+000, -1.03581227E-016, 6.08816528E-001} }; diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/elliptic.h b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/elliptic.h new file mode 100644 index 0000000..6a01bc8 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Lab_Files/header_files/elliptic.h @@ -0,0 +1,12 @@ +// elliptic.cof +// this file was generated using function iirsos_coeffs.m + +#define NUM_SECTIONS 2 + +float b[NUM_SECTIONS][3] = { +{3.46359750E-002, 2.72500874E-002, 3.46359750E-002}, +{2.90182959E-001, -2.25444662E-001, 2.90182959E-001} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+000, -1.52872987E+000, 6.37029381E-001}, +{1.00000000E+000, -1.51375731E+000, 8.68678568E-001} }; diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Solution/DSP_Lab_Sol.docx b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/DSP_Lab_Sol.docx new file mode 100644 index 0000000..47326bf Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/DSP_Lab_Sol.docx differ diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Solution/elliptic.h b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/elliptic.h new file mode 100644 index 0000000..90156ae --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/elliptic.h @@ -0,0 +1,12 @@ +// elliptic.cof +// this file was generated using function L138_iirsos_coeffs.m + +#define NUM_SECTIONS 2 + +float b[NUM_SECTIONS][3] = { +{3.46359750E-002, 2.72500874E-002, 3.46359750E-002}, +{2.90182959E-001, -2.25444662E-001, 2.90182959E-001} }; + +float a[NUM_SECTIONS][3] = { +{1.00000000E+000, -1.52872987E+000, 6.37029381E-001}, +{1.00000000E+000, -1.51375731E+000, 8.68678568E-001} }; diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_bilinear_soln_intr.c b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_bilinear_soln_intr.c new file mode 100644 index 0000000..f059eb8 --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_bilinear_soln_intr.c @@ -0,0 +1,53 @@ +// stm32f7_impinviir_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_impinviir_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; +float32_t xn1 = 0.0; // previous input and output sample values +float32_t xn2 = 0.0; // initialised to zero +float32_t yn1 = 0.0; // initialised to zero +float32_t yn2 = 0.0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + float32_t xn, yn; // input and output values + + xn =(float32_t)(rx_sample_L); + + /*********************************************************************** + insert code to compute new output sample here, i.e. + y(n) = 0.48255x(n-1) + 0.71624315y(n-1) - 0.38791310y(n-2) + also update stored previous sample values, i.e. + y(n-2), y(n-1), and x(n-1) + ***********************************************************************/ + yn = 0.128957739f * xn + 0.257915478f * xn1 + 0.128957739f * xn2 + 0.812258964f * yn1 - 0.4616516598f * yn2; + yn2 = yn1; + yn1 = yn; + xn2 = xn1; + xn1 = xn; + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_impinviir_soln_intr.c b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_impinviir_soln_intr.c new file mode 100644 index 0000000..f3facba --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_impinviir_soln_intr.c @@ -0,0 +1,51 @@ +// stm32f7_impinviir_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_impinviir_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; +float32_t xn1 = 0.0; // previous input and output sample values +float32_t yn1 = 0.0; // initialised to zero +float32_t yn2 = 0.0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + float32_t xn, yn; // input and output values + + xn =(float32_t)(rx_sample_L); + + /*********************************************************************** + insert code to compute new output sample here, i.e. + y(n) = 0.48255x(n-1) + 0.71624315y(n-1) - 0.38791310y(n-2) + also update stored previous sample values, i.e. + y(n-2), y(n-1), and x(n-1) + ***********************************************************************/ + yn = 0.48255f * xn1 + 0.71624315f * yn1 - 0.3879131f * yn2; + yn2 = yn1; + yn1 = yn; + xn1 = xn; + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_sinegen_soln_intr.c b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_sinegen_soln_intr.c new file mode 100644 index 0000000..f3facba --- /dev/null +++ b/STM32F746G Discovery board/contents/Module_8/Lab/Solution/stm32f7_sinegen_soln_intr.c @@ -0,0 +1,51 @@ +// stm32f7_impinviir_intr.c + +#include "stm32f7_wm8994_init.h" +#include "stm32f7_display.h" + +#define SOURCE_FILE_NAME "stm32f7_impinviir_intr.c" + +extern int16_t rx_sample_L; +extern int16_t rx_sample_R; +extern int16_t tx_sample_L; +extern int16_t tx_sample_R; +float32_t xn1 = 0.0; // previous input and output sample values +float32_t yn1 = 0.0; // initialised to zero +float32_t yn2 = 0.0; + +void BSP_AUDIO_SAI_Interrupt_CallBack() +{ + float32_t xn, yn; // input and output values + + xn =(float32_t)(rx_sample_L); + + /*********************************************************************** + insert code to compute new output sample here, i.e. + y(n) = 0.48255x(n-1) + 0.71624315y(n-1) - 0.38791310y(n-2) + also update stored previous sample values, i.e. + y(n-2), y(n-1), and x(n-1) + ***********************************************************************/ + yn = 0.48255f * xn1 + 0.71624315f * yn1 - 0.3879131f * yn2; + yn2 = yn1; + yn1 = yn; + xn1 = xn; + tx_sample_L = (int16_t)(yn); + tx_sample_R = tx_sample_L; + + return; +} + +int main(void) +{ + stm32f7_wm8994_init(AUDIO_FREQUENCY_8K, + IO_METHOD_INTR, + INPUT_DEVICE_INPUT_LINE_1, + OUTPUT_DEVICE_HEADPHONE, + WM8994_HP_OUT_ANALOG_GAIN_0DB, + WM8994_LINE_IN_GAIN_0DB, + WM8994_DMIC_GAIN_0DB, + SOURCE_FILE_NAME, + NOGRAPH); + + while(1){} +} diff --git a/STM32F746G Discovery board/contents/Module_9/FFT1_lec.pptx b/STM32F746G Discovery board/contents/Module_9/FFT1_lec.pptx new file mode 100644 index 0000000..a002f59 Binary files /dev/null and b/STM32F746G Discovery board/contents/Module_9/FFT1_lec.pptx differ diff --git a/STM32F746G Discovery board/html/css/app.css b/STM32F746G Discovery board/html/css/app.css new file mode 100644 index 0000000..863f5c4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/app.css @@ -0,0 +1,122 @@ +/* Fonts for the website */ +@font-face { + font-family: "Gill Alt One MT"; + src: url("fonts/gla.ttf"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Gill Alt One MT"; + src: url("fonts/glab.ttf"); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: "Gill Alt One MT"; + src: url("fonts/glai.ttf"); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: "Gill Alt One MT"; + src: url("fonts/glabi.ttf"); + font-weight: bold; + font-style: italic; +} + +/* General styling */ +/* ARM blue rgb(0, 120, 156) */ +body { + background-color: rgb(255, 255, 255); font-family: 'Gill Alt One MT', 'Gill Sans', 'Segoe UI', sans-serif; line-height: 1em; font-weight: normal; } +.nonDraggableImage { -webkit-user-drag: none; } + +/* Header styling */ +.logo, .index-header, .content, .footer { background-color: white; color: rgb(77,77,77); text-align: center; } +.aup-logo { background: url(../images/ARM_University_horizontal_blue_LG.png) no-repeat 0px 0px; background-size: 650px 147px; width: 650px; height: 147px; margin: 30px auto; } +/*.edkit { background-color: rgb(0, 120, 156); }*/ +.edkit { color: rgb(0, 120, 156); } +.edkit p { font-weight: 200; margin: 10px auto ;} +.lib-name { font-size: 1.3em; } +.lib-type { font-size: 1.75em; font-style: italic; } + +th { background: rgba(18, 140, 171, 1); color: white; } + +.row { margin: 0px auto 20px auto; } +.no-margin { margin: 0 auto; } + +.vertical-divider-grey { height: 2px; width: inherit; background-color: rgb(247, 247, 247); } +.vertical-divider-blue { height: 2px; width: inherit; background-color: rgb(0, 159, 193); } +.content .columns { padding: 0; } + +a:link { color: rgba(85, 90, 90, 1); text-decoration: none; } +a:visited { color: rgba(85, 90, 90, 1); } +a:hover { cursor: hand; color: rgba(0, 196, 115, 1); } +a:active { color: rgba(69, 69, 69, 1); } + +/* Footer styling */ +.footer { background-color: rgb(65, 68, 68); color: white; margin-bottom: 0px;} +.contact-container div a .contact { width: 75px; height: 75px; margin: 30px auto 50px auto; } +.contact-container div a .contact div { background-size: 75px 75px; width: inherit; height: inherit; } +.contact-container div a .contact p { display:none; } + +.contact-newsletter { background: url(../images/contact_1.png) no-repeat 0px 0px; } +.contact-facebook { background: url(../images/contact_2.png) no-repeat 0px 0px; } +.contact-email { background: url(../images/contact_3.png) no-repeat 0px 0px; } +.contact-podcast { background: url(../images/contact_7.png) no-repeat 0px 0px; } +.contact-twitter { background: url(../images/contact_5.png) no-repeat 0px 0px; } +.contact-youtube { background: url(../images/contact_6.png) no-repeat 0px 0px; } + +.end-note { position: relative; } +.footer-logo { background: url(../images/Arm_logo_blue_150MN.png) no-repeat left bottom; height: 24px; width: 80px; margin: 1em; } +.copyright { font-size: 0.85em; margin: 1em 1em 10px 0; text-align: right; position: absolute; bottom: 0; right: 0; } +.multiline { display: none; } + +/* Medium screen styling */ +@media screen and (min-width: 640px) and (max-width: 1024px) { + .aup-logo { background: url(../images/ARM_University_horizontal_blue_LG.png) no-repeat 0px 0px; background-size: 480px 109px; width: 480px; height: 109px; margin: 30px auto; } + .edkit, .content { padding: 0 30px; } + .lib-type { font-size: 1.1em; } + .lib-name { font-size: 1em; } + .thumb-control { display: none; } + /* + .nav-text.text-left, .nav-text.text-right { display: none; } + */ + .contact-container div a .contact { width: 75px; height: 75px; margin: 10px auto; } + .contact-container div a .contact div { background-size: 75px 75px; width: inherit; height: inherit; } + .container-newsletter { background-color: rgb(0, 169, 96);} + .container-facebook { background-color: rgb(52, 109, 166);} + .container-email { background-color: rgb(215, 123, 0);} + .container-podcast { background-color: rgb(126, 78, 163);} + .container-twitter { background-color: rgb(65, 134, 205);} + .container-youtube { background-color: rgb(202, 70, 56);} + .footer div { padding: 0; } + .copyright { font-size: .75em; } +} + +/* Small screen styling */ +@media screen and (max-width: 640px) { + .aup-logo { background: url(../images/ARM_University_horizontal_blue_LG.png) no-repeat 0px 0px; background-size: 300px 68px; width: 300px; height: 68px; margin: 30px auto; } + .edkit, .content { padding: 0 20px; } + .lib-type { font-size: 1em; } + .lib-name { font-size: .95em; } + .thumb-control { display: none; } + /* + .nav-text.text-left, .nav-text.text-right { display: none; } + */ + .slide .container { margin-bottom: -20px; } + .slide-control { display: none; } + .contact-container div a .contact { width: 75px; height: 75px; margin: 10px auto; } + .contact-container div a .contact div { background-size: 75px 75px; width: inherit; height: inherit; } + .container-newsletter { background-color: rgb(0, 169, 96);} + .container-facebook { background-color: rgb(52, 109, 166);} + .container-email { background-color: rgb(215, 123, 0);} + .container-podcast { background-color: rgb(126, 78, 163);} + .container-twitter { background-color: rgb(65, 134, 205);} + .container-youtube { background-color: rgb(202, 70, 56);} + .footer div { padding: 0; } + .copyright { font-size: 0.65em; } + .multiline { display: inline; } +} \ No newline at end of file diff --git a/STM32F746G Discovery board/html/css/fonts/gla.ttf b/STM32F746G Discovery board/html/css/fonts/gla.ttf new file mode 100644 index 0000000..e35a77a Binary files /dev/null and b/STM32F746G Discovery board/html/css/fonts/gla.ttf differ diff --git a/STM32F746G Discovery board/html/css/fonts/glab.ttf b/STM32F746G Discovery board/html/css/fonts/glab.ttf new file mode 100644 index 0000000..57aecd3 Binary files /dev/null and b/STM32F746G Discovery board/html/css/fonts/glab.ttf differ diff --git a/STM32F746G Discovery board/html/css/fonts/glabi.ttf b/STM32F746G Discovery board/html/css/fonts/glabi.ttf new file mode 100644 index 0000000..4040994 Binary files /dev/null and b/STM32F746G Discovery board/html/css/fonts/glabi.ttf differ diff --git a/STM32F746G Discovery board/html/css/fonts/glai.ttf b/STM32F746G Discovery board/html/css/fonts/glai.ttf new file mode 100644 index 0000000..e6ac678 Binary files /dev/null and b/STM32F746G Discovery board/html/css/fonts/glai.ttf differ diff --git a/STM32F746G Discovery board/html/css/foundation-icons/.fontcustom-data b/STM32F746G Discovery board/html/css/foundation-icons/.fontcustom-data new file mode 100644 index 0000000..8753d7b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/.fontcustom-data @@ -0,0 +1,298 @@ +{ + "fonts": [ + "fontcustom_10588e4d0af9f9cd5471c9540658204b.ttf", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.woff", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.eot", + "fontcustom_10588e4d0af9f9cd5471c9540658204b.svg" + ], + "templates": [ + "fontcustom.css", + "fontcustom-preview.html" + ], + "file_name": "fontcustom_10588e4d0af9f9cd5471c9540658204b", + "glyphs": [ + "fi-address-book", + "fi-alert", + "fi-align-center", + "fi-align-justify", + "fi-align-left", + "fi-align-right", + "fi-anchor", + "fi-annotate", + "fi-archive", + "fi-arrow-down", + "fi-arrow-left", + "fi-arrow-right", + "fi-arrow-up", + "fi-arrows-compress", + "fi-arrows-expand", + "fi-arrows-in", + "fi-arrows-out", + "fi-asl", + "fi-asterisk", + "fi-at-sign", + "fi-background-color", + "fi-battery-empty", + "fi-battery-full", + "fi-battery-half", + "fi-bitcoin-circle", + "fi-bitcoin", + "fi-blind", + "fi-bluetooth", + "fi-bold", + "fi-book-bookmark", + "fi-book", + "fi-bookmark", + "fi-braille", + "fi-burst-new", + "fi-burst-sale", + "fi-burst", + "fi-calendar", + "fi-camera", + "fi-check", + "fi-checkbox", + "fi-clipboard-notes", + "fi-clipboard-pencil", + "fi-clipboard", + "fi-clock", + "fi-closed-caption", + "fi-cloud", + "fi-comment-minus", + "fi-comment-quotes", + "fi-comment-video", + "fi-comment", + "fi-comments", + "fi-compass", + "fi-contrast", + "fi-credit-card", + "fi-crop", + "fi-crown", + "fi-css3", + "fi-database", + "fi-die-five", + "fi-die-four", + "fi-die-one", + "fi-die-six", + "fi-die-three", + "fi-die-two", + "fi-dislike", + "fi-dollar-bill", + "fi-dollar", + "fi-download", + "fi-eject", + "fi-elevator", + "fi-euro", + "fi-eye", + "fi-fast-forward", + "fi-female-symbol", + "fi-female", + "fi-filter", + "fi-first-aid", + "fi-flag", + "fi-folder-add", + "fi-folder-lock", + "fi-folder", + "fi-foot", + "fi-foundation", + "fi-graph-bar", + "fi-graph-horizontal", + "fi-graph-pie", + "fi-graph-trend", + "fi-guide-dog", + "fi-hearing-aid", + "fi-heart", + "fi-home", + "fi-html5", + "fi-indent-less", + "fi-indent-more", + "fi-info", + "fi-italic", + "fi-key", + "fi-laptop", + "fi-layout", + "fi-lightbulb", + "fi-like", + "fi-link", + "fi-list-bullet", + "fi-list-number", + "fi-list-thumbnails", + "fi-list", + "fi-lock", + "fi-loop", + "fi-magnifying-glass", + "fi-mail", + "fi-male-female", + "fi-male-symbol", + "fi-male", + "fi-map", + "fi-marker", + "fi-megaphone", + "fi-microphone", + "fi-minus-circle", + "fi-minus", + "fi-mobile-signal", + "fi-mobile", + "fi-monitor", + "fi-mountains", + "fi-music", + "fi-next", + "fi-no-dogs", + "fi-no-smoking", + "fi-page-add", + "fi-page-copy", + "fi-page-csv", + "fi-page-delete", + "fi-page-doc", + "fi-page-edit", + "fi-page-export-csv", + "fi-page-export-doc", + "fi-page-export-pdf", + "fi-page-export", + "fi-page-filled", + "fi-page-multiple", + "fi-page-pdf", + "fi-page-remove", + "fi-page-search", + "fi-page", + "fi-paint-bucket", + "fi-paperclip", + "fi-pause", + "fi-paw", + "fi-paypal", + "fi-pencil", + "fi-photo", + "fi-play-circle", + "fi-play-video", + "fi-play", + "fi-plus", + "fi-pound", + "fi-power", + "fi-previous", + "fi-price-tag", + "fi-pricetag-multiple", + "fi-print", + "fi-prohibited", + "fi-projection-screen", + "fi-puzzle", + "fi-quote", + "fi-record", + "fi-refresh", + "fi-results-demographics", + "fi-results", + "fi-rewind-ten", + "fi-rewind", + "fi-rss", + "fi-safety-cone", + "fi-save", + "fi-share", + "fi-sheriff-badge", + "fi-shield", + "fi-shopping-bag", + "fi-shopping-cart", + "fi-shuffle", + "fi-skull", + "fi-social-500px", + "fi-social-adobe", + "fi-social-amazon", + "fi-social-android", + "fi-social-apple", + "fi-social-behance", + "fi-social-bing", + "fi-social-blogger", + "fi-social-delicious", + "fi-social-designer-news", + "fi-social-deviant-art", + "fi-social-digg", + "fi-social-dribbble", + "fi-social-drive", + "fi-social-dropbox", + "fi-social-evernote", + "fi-social-facebook", + "fi-social-flickr", + "fi-social-forrst", + "fi-social-foursquare", + "fi-social-game-center", + "fi-social-github", + "fi-social-google-plus", + "fi-social-hacker-news", + "fi-social-hi5", + "fi-social-instagram", + "fi-social-joomla", + "fi-social-lastfm", + "fi-social-linkedin", + "fi-social-medium", + "fi-social-myspace", + "fi-social-orkut", + "fi-social-path", + "fi-social-picasa", + "fi-social-pinterest", + "fi-social-rdio", + "fi-social-reddit", + "fi-social-skillshare", + "fi-social-skype", + "fi-social-smashing-mag", + "fi-social-snapchat", + "fi-social-spotify", + "fi-social-squidoo", + "fi-social-stack-overflow", + "fi-social-steam", + "fi-social-stumbleupon", + "fi-social-treehouse", + "fi-social-tumblr", + "fi-social-twitter", + "fi-social-vimeo", + "fi-social-windows", + "fi-social-xbox-20", + "fi-social-yahoo", + "fi-social-yelp", + "fi-social-youtube", + "fi-social-zerply", + "fi-social-zurb", + "fi-sound", + "fi-star", + "fi-stop", + "fi-strikethrough", + "fi-subscript", + "fi-superscript", + "fi-tablet-landscape", + "fi-tablet-portrait", + "fi-target-two", + "fi-target", + "fi-telephone-accessible", + "fi-telephone", + "fi-text-color", + "fi-thumbnails", + "fi-ticket", + "fi-torso-business", + "fi-torso-female", + "fi-torso", + "fi-torsos-all-female", + "fi-torsos-all", + "fi-torsos-female-male", + "fi-torsos-male-female", + "fi-torsos", + "fi-trash", + "fi-trees", + "fi-trophy", + "fi-underline", + "fi-universal-access", + "fi-unlink", + "fi-unlock", + "fi-upload-cloud", + "fi-upload", + "fi-usb", + "fi-video", + "fi-volume-none", + "fi-volume-strike", + "fi-volume", + "fi-web", + "fi-wheelchair", + "fi-widget", + "fi-wrench", + "fi-x-circle", + "fi-x", + "fi-yen", + "fi-zoom-in", + "fi-zoom-out" + ] +} \ No newline at end of file diff --git a/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.css b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.css new file mode 100644 index 0000000..d866a73 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.css @@ -0,0 +1,594 @@ +/* + * Foundation Icons v 3.0 + * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 + * MIT License + */ + +@font-face { + font-family: "foundation-icons"; + src: url("foundation-icons.eot"); + src: url("foundation-icons.eot?#iefix") format("embedded-opentype"), + url("foundation-icons.woff") format("woff"), + url("foundation-icons.ttf") format("truetype"), + url("foundation-icons.svg#fontcustom") format("svg"); + font-weight: normal; + font-style: normal; +} + +.fi-address-book:before, +.fi-alert:before, +.fi-align-center:before, +.fi-align-justify:before, +.fi-align-left:before, +.fi-align-right:before, +.fi-anchor:before, +.fi-annotate:before, +.fi-archive:before, +.fi-arrow-down:before, +.fi-arrow-left:before, +.fi-arrow-right:before, +.fi-arrow-up:before, +.fi-arrows-compress:before, +.fi-arrows-expand:before, +.fi-arrows-in:before, +.fi-arrows-out:before, +.fi-asl:before, +.fi-asterisk:before, +.fi-at-sign:before, +.fi-background-color:before, +.fi-battery-empty:before, +.fi-battery-full:before, +.fi-battery-half:before, +.fi-bitcoin-circle:before, +.fi-bitcoin:before, +.fi-blind:before, +.fi-bluetooth:before, +.fi-bold:before, +.fi-book-bookmark:before, +.fi-book:before, +.fi-bookmark:before, +.fi-braille:before, +.fi-burst-new:before, +.fi-burst-sale:before, +.fi-burst:before, +.fi-calendar:before, +.fi-camera:before, +.fi-check:before, +.fi-checkbox:before, +.fi-clipboard-notes:before, +.fi-clipboard-pencil:before, +.fi-clipboard:before, +.fi-clock:before, +.fi-closed-caption:before, +.fi-cloud:before, +.fi-comment-minus:before, +.fi-comment-quotes:before, +.fi-comment-video:before, +.fi-comment:before, +.fi-comments:before, +.fi-compass:before, +.fi-contrast:before, +.fi-credit-card:before, +.fi-crop:before, +.fi-crown:before, +.fi-css3:before, +.fi-database:before, +.fi-die-five:before, +.fi-die-four:before, +.fi-die-one:before, +.fi-die-six:before, +.fi-die-three:before, +.fi-die-two:before, +.fi-dislike:before, +.fi-dollar-bill:before, +.fi-dollar:before, +.fi-download:before, +.fi-eject:before, +.fi-elevator:before, +.fi-euro:before, +.fi-eye:before, +.fi-fast-forward:before, +.fi-female-symbol:before, +.fi-female:before, +.fi-filter:before, +.fi-first-aid:before, +.fi-flag:before, +.fi-folder-add:before, +.fi-folder-lock:before, +.fi-folder:before, +.fi-foot:before, +.fi-foundation:before, +.fi-graph-bar:before, +.fi-graph-horizontal:before, +.fi-graph-pie:before, +.fi-graph-trend:before, +.fi-guide-dog:before, +.fi-hearing-aid:before, +.fi-heart:before, +.fi-home:before, +.fi-html5:before, +.fi-indent-less:before, +.fi-indent-more:before, +.fi-info:before, +.fi-italic:before, +.fi-key:before, +.fi-laptop:before, +.fi-layout:before, +.fi-lightbulb:before, +.fi-like:before, +.fi-link:before, +.fi-list-bullet:before, +.fi-list-number:before, +.fi-list-thumbnails:before, +.fi-list:before, +.fi-lock:before, +.fi-loop:before, +.fi-magnifying-glass:before, +.fi-mail:before, +.fi-male-female:before, +.fi-male-symbol:before, +.fi-male:before, +.fi-map:before, +.fi-marker:before, +.fi-megaphone:before, +.fi-microphone:before, +.fi-minus-circle:before, +.fi-minus:before, +.fi-mobile-signal:before, +.fi-mobile:before, +.fi-monitor:before, +.fi-mountains:before, +.fi-music:before, +.fi-next:before, +.fi-no-dogs:before, +.fi-no-smoking:before, +.fi-page-add:before, +.fi-page-copy:before, +.fi-page-csv:before, +.fi-page-delete:before, +.fi-page-doc:before, +.fi-page-edit:before, +.fi-page-export-csv:before, +.fi-page-export-doc:before, +.fi-page-export-pdf:before, +.fi-page-export:before, +.fi-page-filled:before, +.fi-page-multiple:before, +.fi-page-pdf:before, +.fi-page-remove:before, +.fi-page-search:before, +.fi-page:before, +.fi-paint-bucket:before, +.fi-paperclip:before, +.fi-pause:before, +.fi-paw:before, +.fi-paypal:before, +.fi-pencil:before, +.fi-photo:before, +.fi-play-circle:before, +.fi-play-video:before, +.fi-play:before, +.fi-plus:before, +.fi-pound:before, +.fi-power:before, +.fi-previous:before, +.fi-price-tag:before, +.fi-pricetag-multiple:before, +.fi-print:before, +.fi-prohibited:before, +.fi-projection-screen:before, +.fi-puzzle:before, +.fi-quote:before, +.fi-record:before, +.fi-refresh:before, +.fi-results-demographics:before, +.fi-results:before, +.fi-rewind-ten:before, +.fi-rewind:before, +.fi-rss:before, +.fi-safety-cone:before, +.fi-save:before, +.fi-share:before, +.fi-sheriff-badge:before, +.fi-shield:before, +.fi-shopping-bag:before, +.fi-shopping-cart:before, +.fi-shuffle:before, +.fi-skull:before, +.fi-social-500px:before, +.fi-social-adobe:before, +.fi-social-amazon:before, +.fi-social-android:before, +.fi-social-apple:before, +.fi-social-behance:before, +.fi-social-bing:before, +.fi-social-blogger:before, +.fi-social-delicious:before, +.fi-social-designer-news:before, +.fi-social-deviant-art:before, +.fi-social-digg:before, +.fi-social-dribbble:before, +.fi-social-drive:before, +.fi-social-dropbox:before, +.fi-social-evernote:before, +.fi-social-facebook:before, +.fi-social-flickr:before, +.fi-social-forrst:before, +.fi-social-foursquare:before, +.fi-social-game-center:before, +.fi-social-github:before, +.fi-social-google-plus:before, +.fi-social-hacker-news:before, +.fi-social-hi5:before, +.fi-social-instagram:before, +.fi-social-joomla:before, +.fi-social-lastfm:before, +.fi-social-linkedin:before, +.fi-social-medium:before, +.fi-social-myspace:before, +.fi-social-orkut:before, +.fi-social-path:before, +.fi-social-picasa:before, +.fi-social-pinterest:before, +.fi-social-rdio:before, +.fi-social-reddit:before, +.fi-social-skillshare:before, +.fi-social-skype:before, +.fi-social-smashing-mag:before, +.fi-social-snapchat:before, +.fi-social-spotify:before, +.fi-social-squidoo:before, +.fi-social-stack-overflow:before, +.fi-social-steam:before, +.fi-social-stumbleupon:before, +.fi-social-treehouse:before, +.fi-social-tumblr:before, +.fi-social-twitter:before, +.fi-social-vimeo:before, +.fi-social-windows:before, +.fi-social-xbox:before, +.fi-social-yahoo:before, +.fi-social-yelp:before, +.fi-social-youtube:before, +.fi-social-zerply:before, +.fi-social-zurb:before, +.fi-sound:before, +.fi-star:before, +.fi-stop:before, +.fi-strikethrough:before, +.fi-subscript:before, +.fi-superscript:before, +.fi-tablet-landscape:before, +.fi-tablet-portrait:before, +.fi-target-two:before, +.fi-target:before, +.fi-telephone-accessible:before, +.fi-telephone:before, +.fi-text-color:before, +.fi-thumbnails:before, +.fi-ticket:before, +.fi-torso-business:before, +.fi-torso-female:before, +.fi-torso:before, +.fi-torsos-all-female:before, +.fi-torsos-all:before, +.fi-torsos-female-male:before, +.fi-torsos-male-female:before, +.fi-torsos:before, +.fi-trash:before, +.fi-trees:before, +.fi-trophy:before, +.fi-underline:before, +.fi-universal-access:before, +.fi-unlink:before, +.fi-unlock:before, +.fi-upload-cloud:before, +.fi-upload:before, +.fi-usb:before, +.fi-video:before, +.fi-volume-none:before, +.fi-volume-strike:before, +.fi-volume:before, +.fi-web:before, +.fi-wheelchair:before, +.fi-widget:before, +.fi-wrench:before, +.fi-x-circle:before, +.fi-x:before, +.fi-yen:before, +.fi-zoom-in:before, +.fi-zoom-out:before { + font-family: "foundation-icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + display: inline-block; + text-decoration: inherit; +} + +.fi-address-book:before { content: "\f100"; } +.fi-alert:before { content: "\f101"; } +.fi-align-center:before { content: "\f102"; } +.fi-align-justify:before { content: "\f103"; } +.fi-align-left:before { content: "\f104"; } +.fi-align-right:before { content: "\f105"; } +.fi-anchor:before { content: "\f106"; } +.fi-annotate:before { content: "\f107"; } +.fi-archive:before { content: "\f108"; } +.fi-arrow-down:before { content: "\f109"; } +.fi-arrow-left:before { content: "\f10a"; } +.fi-arrow-right:before { content: "\f10b"; } +.fi-arrow-up:before { content: "\f10c"; } +.fi-arrows-compress:before { content: "\f10d"; } +.fi-arrows-expand:before { content: "\f10e"; } +.fi-arrows-in:before { content: "\f10f"; } +.fi-arrows-out:before { content: "\f110"; } +.fi-asl:before { content: "\f111"; } +.fi-asterisk:before { content: "\f112"; } +.fi-at-sign:before { content: "\f113"; } +.fi-background-color:before { content: "\f114"; } +.fi-battery-empty:before { content: "\f115"; } +.fi-battery-full:before { content: "\f116"; } +.fi-battery-half:before { content: "\f117"; } +.fi-bitcoin-circle:before { content: "\f118"; } +.fi-bitcoin:before { content: "\f119"; } +.fi-blind:before { content: "\f11a"; } +.fi-bluetooth:before { content: "\f11b"; } +.fi-bold:before { content: "\f11c"; } +.fi-book-bookmark:before { content: "\f11d"; } +.fi-book:before { content: "\f11e"; } +.fi-bookmark:before { content: "\f11f"; } +.fi-braille:before { content: "\f120"; } +.fi-burst-new:before { content: "\f121"; } +.fi-burst-sale:before { content: "\f122"; } +.fi-burst:before { content: "\f123"; } +.fi-calendar:before { content: "\f124"; } +.fi-camera:before { content: "\f125"; } +.fi-check:before { content: "\f126"; } +.fi-checkbox:before { content: "\f127"; } +.fi-clipboard-notes:before { content: "\f128"; } +.fi-clipboard-pencil:before { content: "\f129"; } +.fi-clipboard:before { content: "\f12a"; } +.fi-clock:before { content: "\f12b"; } +.fi-closed-caption:before { content: "\f12c"; } +.fi-cloud:before { content: "\f12d"; } +.fi-comment-minus:before { content: "\f12e"; } +.fi-comment-quotes:before { content: "\f12f"; } +.fi-comment-video:before { content: "\f130"; } +.fi-comment:before { content: "\f131"; } +.fi-comments:before { content: "\f132"; } +.fi-compass:before { content: "\f133"; } +.fi-contrast:before { content: "\f134"; } +.fi-credit-card:before { content: "\f135"; } +.fi-crop:before { content: "\f136"; } +.fi-crown:before { content: "\f137"; } +.fi-css3:before { content: "\f138"; } +.fi-database:before { content: "\f139"; } +.fi-die-five:before { content: "\f13a"; } +.fi-die-four:before { content: "\f13b"; } +.fi-die-one:before { content: "\f13c"; } +.fi-die-six:before { content: "\f13d"; } +.fi-die-three:before { content: "\f13e"; } +.fi-die-two:before { content: "\f13f"; } +.fi-dislike:before { content: "\f140"; } +.fi-dollar-bill:before { content: "\f141"; } +.fi-dollar:before { content: "\f142"; } +.fi-download:before { content: "\f143"; } +.fi-eject:before { content: "\f144"; } +.fi-elevator:before { content: "\f145"; } +.fi-euro:before { content: "\f146"; } +.fi-eye:before { content: "\f147"; } +.fi-fast-forward:before { content: "\f148"; } +.fi-female-symbol:before { content: "\f149"; } +.fi-female:before { content: "\f14a"; } +.fi-filter:before { content: "\f14b"; } +.fi-first-aid:before { content: "\f14c"; } +.fi-flag:before { content: "\f14d"; } +.fi-folder-add:before { content: "\f14e"; } +.fi-folder-lock:before { content: "\f14f"; } +.fi-folder:before { content: "\f150"; } +.fi-foot:before { content: "\f151"; } +.fi-foundation:before { content: "\f152"; } +.fi-graph-bar:before { content: "\f153"; } +.fi-graph-horizontal:before { content: "\f154"; } +.fi-graph-pie:before { content: "\f155"; } +.fi-graph-trend:before { content: "\f156"; } +.fi-guide-dog:before { content: "\f157"; } +.fi-hearing-aid:before { content: "\f158"; } +.fi-heart:before { content: "\f159"; } +.fi-home:before { content: "\f15a"; } +.fi-html5:before { content: "\f15b"; } +.fi-indent-less:before { content: "\f15c"; } +.fi-indent-more:before { content: "\f15d"; } +.fi-info:before { content: "\f15e"; } +.fi-italic:before { content: "\f15f"; } +.fi-key:before { content: "\f160"; } +.fi-laptop:before { content: "\f161"; } +.fi-layout:before { content: "\f162"; } +.fi-lightbulb:before { content: "\f163"; } +.fi-like:before { content: "\f164"; } +.fi-link:before { content: "\f165"; } +.fi-list-bullet:before { content: "\f166"; } +.fi-list-number:before { content: "\f167"; } +.fi-list-thumbnails:before { content: "\f168"; } +.fi-list:before { content: "\f169"; } +.fi-lock:before { content: "\f16a"; } +.fi-loop:before { content: "\f16b"; } +.fi-magnifying-glass:before { content: "\f16c"; } +.fi-mail:before { content: "\f16d"; } +.fi-male-female:before { content: "\f16e"; } +.fi-male-symbol:before { content: "\f16f"; } +.fi-male:before { content: "\f170"; } +.fi-map:before { content: "\f171"; } +.fi-marker:before { content: "\f172"; } +.fi-megaphone:before { content: "\f173"; } +.fi-microphone:before { content: "\f174"; } +.fi-minus-circle:before { content: "\f175"; } +.fi-minus:before { content: "\f176"; } +.fi-mobile-signal:before { content: "\f177"; } +.fi-mobile:before { content: "\f178"; } +.fi-monitor:before { content: "\f179"; } +.fi-mountains:before { content: "\f17a"; } +.fi-music:before { content: "\f17b"; } +.fi-next:before { content: "\f17c"; } +.fi-no-dogs:before { content: "\f17d"; } +.fi-no-smoking:before { content: "\f17e"; } +.fi-page-add:before { content: "\f17f"; } +.fi-page-copy:before { content: "\f180"; } +.fi-page-csv:before { content: "\f181"; } +.fi-page-delete:before { content: "\f182"; } +.fi-page-doc:before { content: "\f183"; } +.fi-page-edit:before { content: "\f184"; } +.fi-page-export-csv:before { content: "\f185"; } +.fi-page-export-doc:before { content: "\f186"; } +.fi-page-export-pdf:before { content: "\f187"; } +.fi-page-export:before { content: "\f188"; } +.fi-page-filled:before { content: "\f189"; } +.fi-page-multiple:before { content: "\f18a"; } +.fi-page-pdf:before { content: "\f18b"; } +.fi-page-remove:before { content: "\f18c"; } +.fi-page-search:before { content: "\f18d"; } +.fi-page:before { content: "\f18e"; } +.fi-paint-bucket:before { content: "\f18f"; } +.fi-paperclip:before { content: "\f190"; } +.fi-pause:before { content: "\f191"; } +.fi-paw:before { content: "\f192"; } +.fi-paypal:before { content: "\f193"; } +.fi-pencil:before { content: "\f194"; } +.fi-photo:before { content: "\f195"; } +.fi-play-circle:before { content: "\f196"; } +.fi-play-video:before { content: "\f197"; } +.fi-play:before { content: "\f198"; } +.fi-plus:before { content: "\f199"; } +.fi-pound:before { content: "\f19a"; } +.fi-power:before { content: "\f19b"; } +.fi-previous:before { content: "\f19c"; } +.fi-price-tag:before { content: "\f19d"; } +.fi-pricetag-multiple:before { content: "\f19e"; } +.fi-print:before { content: "\f19f"; } +.fi-prohibited:before { content: "\f1a0"; } +.fi-projection-screen:before { content: "\f1a1"; } +.fi-puzzle:before { content: "\f1a2"; } +.fi-quote:before { content: "\f1a3"; } +.fi-record:before { content: "\f1a4"; } +.fi-refresh:before { content: "\f1a5"; } +.fi-results-demographics:before { content: "\f1a6"; } +.fi-results:before { content: "\f1a7"; } +.fi-rewind-ten:before { content: "\f1a8"; } +.fi-rewind:before { content: "\f1a9"; } +.fi-rss:before { content: "\f1aa"; } +.fi-safety-cone:before { content: "\f1ab"; } +.fi-save:before { content: "\f1ac"; } +.fi-share:before { content: "\f1ad"; } +.fi-sheriff-badge:before { content: "\f1ae"; } +.fi-shield:before { content: "\f1af"; } +.fi-shopping-bag:before { content: "\f1b0"; } +.fi-shopping-cart:before { content: "\f1b1"; } +.fi-shuffle:before { content: "\f1b2"; } +.fi-skull:before { content: "\f1b3"; } +.fi-social-500px:before { content: "\f1b4"; } +.fi-social-adobe:before { content: "\f1b5"; } +.fi-social-amazon:before { content: "\f1b6"; } +.fi-social-android:before { content: "\f1b7"; } +.fi-social-apple:before { content: "\f1b8"; } +.fi-social-behance:before { content: "\f1b9"; } +.fi-social-bing:before { content: "\f1ba"; } +.fi-social-blogger:before { content: "\f1bb"; } +.fi-social-delicious:before { content: "\f1bc"; } +.fi-social-designer-news:before { content: "\f1bd"; } +.fi-social-deviant-art:before { content: "\f1be"; } +.fi-social-digg:before { content: "\f1bf"; } +.fi-social-dribbble:before { content: "\f1c0"; } +.fi-social-drive:before { content: "\f1c1"; } +.fi-social-dropbox:before { content: "\f1c2"; } +.fi-social-evernote:before { content: "\f1c3"; } +.fi-social-facebook:before { content: "\f1c4"; } +.fi-social-flickr:before { content: "\f1c5"; } +.fi-social-forrst:before { content: "\f1c6"; } +.fi-social-foursquare:before { content: "\f1c7"; } +.fi-social-game-center:before { content: "\f1c8"; } +.fi-social-github:before { content: "\f1c9"; } +.fi-social-google-plus:before { content: "\f1ca"; } +.fi-social-hacker-news:before { content: "\f1cb"; } +.fi-social-hi5:before { content: "\f1cc"; } +.fi-social-instagram:before { content: "\f1cd"; } +.fi-social-joomla:before { content: "\f1ce"; } +.fi-social-lastfm:before { content: "\f1cf"; } +.fi-social-linkedin:before { content: "\f1d0"; } +.fi-social-medium:before { content: "\f1d1"; } +.fi-social-myspace:before { content: "\f1d2"; } +.fi-social-orkut:before { content: "\f1d3"; } +.fi-social-path:before { content: "\f1d4"; } +.fi-social-picasa:before { content: "\f1d5"; } +.fi-social-pinterest:before { content: "\f1d6"; } +.fi-social-rdio:before { content: "\f1d7"; } +.fi-social-reddit:before { content: "\f1d8"; } +.fi-social-skillshare:before { content: "\f1d9"; } +.fi-social-skype:before { content: "\f1da"; } +.fi-social-smashing-mag:before { content: "\f1db"; } +.fi-social-snapchat:before { content: "\f1dc"; } +.fi-social-spotify:before { content: "\f1dd"; } +.fi-social-squidoo:before { content: "\f1de"; } +.fi-social-stack-overflow:before { content: "\f1df"; } +.fi-social-steam:before { content: "\f1e0"; } +.fi-social-stumbleupon:before { content: "\f1e1"; } +.fi-social-treehouse:before { content: "\f1e2"; } +.fi-social-tumblr:before { content: "\f1e3"; } +.fi-social-twitter:before { content: "\f1e4"; } +.fi-social-vimeo:before { content: "\f1e5"; } +.fi-social-windows:before { content: "\f1e6"; } +.fi-social-xbox:before { content: "\f1e7"; } +.fi-social-yahoo:before { content: "\f1e8"; } +.fi-social-yelp:before { content: "\f1e9"; } +.fi-social-youtube:before { content: "\f1ea"; } +.fi-social-zerply:before { content: "\f1eb"; } +.fi-social-zurb:before { content: "\f1ec"; } +.fi-sound:before { content: "\f1ed"; } +.fi-star:before { content: "\f1ee"; } +.fi-stop:before { content: "\f1ef"; } +.fi-strikethrough:before { content: "\f1f0"; } +.fi-subscript:before { content: "\f1f1"; } +.fi-superscript:before { content: "\f1f2"; } +.fi-tablet-landscape:before { content: "\f1f3"; } +.fi-tablet-portrait:before { content: "\f1f4"; } +.fi-target-two:before { content: "\f1f5"; } +.fi-target:before { content: "\f1f6"; } +.fi-telephone-accessible:before { content: "\f1f7"; } +.fi-telephone:before { content: "\f1f8"; } +.fi-text-color:before { content: "\f1f9"; } +.fi-thumbnails:before { content: "\f1fa"; } +.fi-ticket:before { content: "\f1fb"; } +.fi-torso-business:before { content: "\f1fc"; } +.fi-torso-female:before { content: "\f1fd"; } +.fi-torso:before { content: "\f1fe"; } +.fi-torsos-all-female:before { content: "\f1ff"; } +.fi-torsos-all:before { content: "\f200"; } +.fi-torsos-female-male:before { content: "\f201"; } +.fi-torsos-male-female:before { content: "\f202"; } +.fi-torsos:before { content: "\f203"; } +.fi-trash:before { content: "\f204"; } +.fi-trees:before { content: "\f205"; } +.fi-trophy:before { content: "\f206"; } +.fi-underline:before { content: "\f207"; } +.fi-universal-access:before { content: "\f208"; } +.fi-unlink:before { content: "\f209"; } +.fi-unlock:before { content: "\f20a"; } +.fi-upload-cloud:before { content: "\f20b"; } +.fi-upload:before { content: "\f20c"; } +.fi-usb:before { content: "\f20d"; } +.fi-video:before { content: "\f20e"; } +.fi-volume-none:before { content: "\f20f"; } +.fi-volume-strike:before { content: "\f210"; } +.fi-volume:before { content: "\f211"; } +.fi-web:before { content: "\f212"; } +.fi-wheelchair:before { content: "\f213"; } +.fi-widget:before { content: "\f214"; } +.fi-wrench:before { content: "\f215"; } +.fi-x-circle:before { content: "\f216"; } +.fi-x:before { content: "\f217"; } +.fi-yen:before { content: "\f218"; } +.fi-zoom-in:before { content: "\f219"; } +.fi-zoom-out:before { content: "\f21a"; } diff --git a/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.eot b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.eot new file mode 100644 index 0000000..1746ad4 Binary files /dev/null and b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.eot differ diff --git a/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.svg b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.svg new file mode 100644 index 0000000..4e014ff --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.svg @@ -0,0 +1,970 @@ + + + + + +Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 + By Jordan Humphreys +Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.ttf b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.ttf new file mode 100644 index 0000000..6cce217 Binary files /dev/null and b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.ttf differ diff --git a/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.woff b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.woff new file mode 100644 index 0000000..e2cfe25 Binary files /dev/null and b/STM32F746G Discovery board/html/css/foundation-icons/foundation-icons.woff differ diff --git a/STM32F746G Discovery board/html/css/foundation-icons/preview.html b/STM32F746G Discovery board/html/css/foundation-icons/preview.html new file mode 100644 index 0000000..cb439a3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/preview.html @@ -0,0 +1,3798 @@ + + + + + Foundation Icons glyphs preview + + + + + + + + +
+

Foundation Icons contains 283 glyphs:

+ + +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+
+ +
+
+ 12141618212436486072 +
+
+ + +
+
+ +
+ + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-address-book.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-address-book.svg new file mode 100644 index 0000000..803c41b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-address-book.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-alert.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-alert.svg new file mode 100644 index 0000000..bef63b8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-alert.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-center.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-center.svg new file mode 100644 index 0000000..0457753 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-center.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-justify.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-justify.svg new file mode 100644 index 0000000..4a10996 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-justify.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-left.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-left.svg new file mode 100644 index 0000000..705d0a6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-left.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-right.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-right.svg new file mode 100644 index 0000000..c2bc676 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-align-right.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-anchor.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-anchor.svg new file mode 100644 index 0000000..204db43 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-anchor.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-annotate.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-annotate.svg new file mode 100644 index 0000000..72bcfcb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-annotate.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-archive.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-archive.svg new file mode 100644 index 0000000..4fcc82a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-archive.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-down.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-down.svg new file mode 100644 index 0000000..53cb1a9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-down.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-left.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-left.svg new file mode 100644 index 0000000..c0c4d72 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-left.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-right.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-right.svg new file mode 100644 index 0000000..9da35e9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-right.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-up.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-up.svg new file mode 100644 index 0000000..8a67d80 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrow-up.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-compress.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-compress.svg new file mode 100644 index 0000000..51c2a1e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-compress.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-expand.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-expand.svg new file mode 100644 index 0000000..9da2447 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-expand.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-in.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-in.svg new file mode 100644 index 0000000..819c99e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-in.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-out.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-out.svg new file mode 100644 index 0000000..8c00d5e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-arrows-out.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asl.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asl.svg new file mode 100644 index 0000000..c2e5dfe --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asl.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asterisk.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asterisk.svg new file mode 100644 index 0000000..6c9c3c7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-asterisk.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-at-sign.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-at-sign.svg new file mode 100644 index 0000000..c3c3cde --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-at-sign.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-background-color.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-background-color.svg new file mode 100644 index 0000000..7e92774 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-background-color.svg @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-empty.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-empty.svg new file mode 100644 index 0000000..0f01592 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-empty.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-full.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-full.svg new file mode 100644 index 0000000..53ce92e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-full.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-half.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-half.svg new file mode 100644 index 0000000..43014ec --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-battery-half.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin-circle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin-circle.svg new file mode 100644 index 0000000..19e7b3b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin-circle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin.svg new file mode 100644 index 0000000..2fb56e0 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bitcoin.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-blind.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-blind.svg new file mode 100644 index 0000000..a77a6e7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-blind.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bluetooth.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bluetooth.svg new file mode 100644 index 0000000..3013762 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bluetooth.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bold.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bold.svg new file mode 100644 index 0000000..87238c7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bold.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book-bookmark.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book-bookmark.svg new file mode 100644 index 0000000..8d452be --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book-bookmark.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book.svg new file mode 100644 index 0000000..cdfea0a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-book.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bookmark.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bookmark.svg new file mode 100644 index 0000000..d2ca515 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-bookmark.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-braille.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-braille.svg new file mode 100644 index 0000000..769b639 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-braille.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-new.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-new.svg new file mode 100644 index 0000000..8c1939f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-new.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-sale.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-sale.svg new file mode 100644 index 0000000..88d5736 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst-sale.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst.svg new file mode 100644 index 0000000..1da7b9d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-burst.svg @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-calendar.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-calendar.svg new file mode 100644 index 0000000..3b11eab --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-calendar.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-camera.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-camera.svg new file mode 100644 index 0000000..d787172 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-camera.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-check.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-check.svg new file mode 100644 index 0000000..5179421 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-check.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-checkbox.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-checkbox.svg new file mode 100644 index 0000000..d780b7a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-checkbox.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-notes.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-notes.svg new file mode 100644 index 0000000..1ce072b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-notes.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-pencil.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-pencil.svg new file mode 100644 index 0000000..0292f51 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard-pencil.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard.svg new file mode 100644 index 0000000..6bc4b0f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clipboard.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clock.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clock.svg new file mode 100644 index 0000000..11478e1 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-clock.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-closed-caption.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-closed-caption.svg new file mode 100644 index 0000000..c0bbf57 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-closed-caption.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-cloud.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-cloud.svg new file mode 100644 index 0000000..aeb6785 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-cloud.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-minus.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-minus.svg new file mode 100644 index 0000000..d29afac --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-minus.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-quotes.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-quotes.svg new file mode 100644 index 0000000..d479297 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-quotes.svg @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-video.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-video.svg new file mode 100644 index 0000000..d4d6e34 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment-video.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment.svg new file mode 100644 index 0000000..c4620e0 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comment.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comments.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comments.svg new file mode 100644 index 0000000..737e427 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-comments.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-compass.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-compass.svg new file mode 100644 index 0000000..f343227 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-compass.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-contrast.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-contrast.svg new file mode 100644 index 0000000..f345f19 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-contrast.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-credit-card.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-credit-card.svg new file mode 100644 index 0000000..65257f6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-credit-card.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crop.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crop.svg new file mode 100644 index 0000000..07e9d2f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crop.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crown.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crown.svg new file mode 100644 index 0000000..f1f24a7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-crown.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-css3.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-css3.svg new file mode 100644 index 0000000..4972fc3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-css3.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-database.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-database.svg new file mode 100644 index 0000000..749397c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-database.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-five.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-five.svg new file mode 100644 index 0000000..6269b38 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-five.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-four.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-four.svg new file mode 100644 index 0000000..1caa06a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-four.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-one.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-one.svg new file mode 100644 index 0000000..bd92b52 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-one.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-six.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-six.svg new file mode 100644 index 0000000..218e4c4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-six.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-three.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-three.svg new file mode 100644 index 0000000..9a2ca59 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-three.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-two.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-two.svg new file mode 100644 index 0000000..1fac170 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-die-two.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dislike.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dislike.svg new file mode 100644 index 0000000..9a185d8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dislike.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar-bill.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar-bill.svg new file mode 100644 index 0000000..03cb2b9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar-bill.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar.svg new file mode 100644 index 0000000..686a3a9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-dollar.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-download.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-download.svg new file mode 100644 index 0000000..121a21f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-download.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eject.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eject.svg new file mode 100644 index 0000000..095eb2e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eject.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-elevator.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-elevator.svg new file mode 100644 index 0000000..e0de3ab --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-elevator.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-euro.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-euro.svg new file mode 100644 index 0000000..21953e0 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-euro.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eye.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eye.svg new file mode 100644 index 0000000..56732d7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-eye.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-fast-forward.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-fast-forward.svg new file mode 100644 index 0000000..a95fbac --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-fast-forward.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female-symbol.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female-symbol.svg new file mode 100644 index 0000000..e21bccc --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female-symbol.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female.svg new file mode 100644 index 0000000..ea6985e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-female.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-filter.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-filter.svg new file mode 100644 index 0000000..9baa0da --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-filter.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-first-aid.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-first-aid.svg new file mode 100644 index 0000000..60946ec --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-first-aid.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-flag.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-flag.svg new file mode 100644 index 0000000..061bdcc --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-flag.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-add.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-add.svg new file mode 100644 index 0000000..1391da8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-add.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-lock.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-lock.svg new file mode 100644 index 0000000..271ef81 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder-lock.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder.svg new file mode 100644 index 0000000..eef46f3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-folder.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foot.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foot.svg new file mode 100644 index 0000000..65a5299 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foot.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foundation.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foundation.svg new file mode 100644 index 0000000..9926d04 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-foundation.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-bar.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-bar.svg new file mode 100644 index 0000000..7f0226f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-bar.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-horizontal.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-horizontal.svg new file mode 100644 index 0000000..65edd64 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-horizontal.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-pie.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-pie.svg new file mode 100644 index 0000000..c9484b8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-pie.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-trend.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-trend.svg new file mode 100644 index 0000000..bf75b9e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-graph-trend.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-guide-dog.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-guide-dog.svg new file mode 100644 index 0000000..c20f008 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-guide-dog.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-hearing-aid.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-hearing-aid.svg new file mode 100644 index 0000000..3298723 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-hearing-aid.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-heart.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-heart.svg new file mode 100644 index 0000000..3f90c02 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-heart.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-home.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-home.svg new file mode 100644 index 0000000..94b0b9b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-home.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-html5.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-html5.svg new file mode 100644 index 0000000..8ca1961 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-html5.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-less.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-less.svg new file mode 100644 index 0000000..f3f1ff9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-less.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-more.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-more.svg new file mode 100644 index 0000000..83bbe80 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-indent-more.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-info.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-info.svg new file mode 100644 index 0000000..94ad406 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-info.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-italic.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-italic.svg new file mode 100644 index 0000000..5efc8d4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-italic.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-key.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-key.svg new file mode 100644 index 0000000..c434a69 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-key.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-laptop.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-laptop.svg new file mode 100644 index 0000000..62cd20b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-laptop.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-layout.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-layout.svg new file mode 100644 index 0000000..41be56a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-layout.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lightbulb.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lightbulb.svg new file mode 100644 index 0000000..401f603 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lightbulb.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-like.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-like.svg new file mode 100644 index 0000000..5639e62 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-like.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-link.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-link.svg new file mode 100644 index 0000000..b5583cd --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-link.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-bullet.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-bullet.svg new file mode 100644 index 0000000..deeb774 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-bullet.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-number.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-number.svg new file mode 100644 index 0000000..f81ae89 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-number.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-thumbnails.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-thumbnails.svg new file mode 100644 index 0000000..e5ef93f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list-thumbnails.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list.svg new file mode 100644 index 0000000..c29a5dc --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-list.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lock.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lock.svg new file mode 100644 index 0000000..4d8b601 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-lock.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-loop.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-loop.svg new file mode 100644 index 0000000..bced6ad --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-loop.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-magnifying-glass.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-magnifying-glass.svg new file mode 100644 index 0000000..d4a4e3c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-magnifying-glass.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mail.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mail.svg new file mode 100644 index 0000000..da03bd7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mail.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-female.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-female.svg new file mode 100644 index 0000000..d9f8eee --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-female.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-symbol.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-symbol.svg new file mode 100644 index 0000000..98a9b12 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male-symbol.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male.svg new file mode 100644 index 0000000..1e9ad9b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-male.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-map.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-map.svg new file mode 100644 index 0000000..412854d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-map.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-marker.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-marker.svg new file mode 100644 index 0000000..aa426f6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-marker.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-megaphone.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-megaphone.svg new file mode 100644 index 0000000..41a1de1 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-megaphone.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-microphone.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-microphone.svg new file mode 100644 index 0000000..9bfb8c2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-microphone.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus-circle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus-circle.svg new file mode 100644 index 0000000..34009c5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus-circle.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus.svg new file mode 100644 index 0000000..649493e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-minus.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile-signal.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile-signal.svg new file mode 100644 index 0000000..a512948 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile-signal.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile.svg new file mode 100644 index 0000000..359e4c3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mobile.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-monitor.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-monitor.svg new file mode 100644 index 0000000..86efcfd --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-monitor.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mountains.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mountains.svg new file mode 100644 index 0000000..4071c62 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-mountains.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-music.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-music.svg new file mode 100644 index 0000000..65eda03 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-music.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-next.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-next.svg new file mode 100644 index 0000000..617c049 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-next.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-dogs.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-dogs.svg new file mode 100644 index 0000000..1a103f6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-dogs.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-smoking.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-smoking.svg new file mode 100644 index 0000000..b0c6afb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-no-smoking.svg @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-add.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-add.svg new file mode 100644 index 0000000..48c5ad3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-add.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-copy.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-copy.svg new file mode 100644 index 0000000..68dd2b5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-copy.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-csv.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-csv.svg new file mode 100644 index 0000000..30223c5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-csv.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-delete.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-delete.svg new file mode 100644 index 0000000..9be20fb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-delete.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-doc.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-doc.svg new file mode 100644 index 0000000..61aef5f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-doc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-edit.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-edit.svg new file mode 100644 index 0000000..7abe5ee --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-edit.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-csv.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-csv.svg new file mode 100644 index 0000000..6043333 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-csv.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-doc.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-doc.svg new file mode 100644 index 0000000..8fd76c8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-doc.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-pdf.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-pdf.svg new file mode 100644 index 0000000..5e3a745 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export-pdf.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export.svg new file mode 100644 index 0000000..c2e3f7c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-export.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-filled.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-filled.svg new file mode 100644 index 0000000..40df8fb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-filled.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-multiple.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-multiple.svg new file mode 100644 index 0000000..b8f7376 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-multiple.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-pdf.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-pdf.svg new file mode 100644 index 0000000..39b0c6d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-pdf.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-remove.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-remove.svg new file mode 100644 index 0000000..7bcfc7d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-remove.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-search.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-search.svg new file mode 100644 index 0000000..757ed6f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page-search.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page.svg new file mode 100644 index 0000000..f9057e9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-page.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paint-bucket.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paint-bucket.svg new file mode 100644 index 0000000..3d8be65 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paint-bucket.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paperclip.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paperclip.svg new file mode 100644 index 0000000..c26d168 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paperclip.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pause.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pause.svg new file mode 100644 index 0000000..b708cba --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pause.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paw.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paw.svg new file mode 100644 index 0000000..3e67ab6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paw.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paypal.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paypal.svg new file mode 100644 index 0000000..6db35ce --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-paypal.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pencil.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pencil.svg new file mode 100644 index 0000000..93fc87a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pencil.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-photo.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-photo.svg new file mode 100644 index 0000000..9c4db2f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-photo.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-circle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-circle.svg new file mode 100644 index 0000000..7cbe765 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-circle.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-video.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-video.svg new file mode 100644 index 0000000..e0f3182 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play-video.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play.svg new file mode 100644 index 0000000..a93c158 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-play.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-plus.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-plus.svg new file mode 100644 index 0000000..c4f32c8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-plus.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pound.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pound.svg new file mode 100644 index 0000000..0c1685c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pound.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-power.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-power.svg new file mode 100644 index 0000000..cdbfb23 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-power.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-previous.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-previous.svg new file mode 100644 index 0000000..7a22b45 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-previous.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-price-tag.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-price-tag.svg new file mode 100644 index 0000000..f8cb16c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-price-tag.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pricetag-multiple.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pricetag-multiple.svg new file mode 100644 index 0000000..255ec8e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-pricetag-multiple.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-print.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-print.svg new file mode 100644 index 0000000..88aa402 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-print.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-prohibited.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-prohibited.svg new file mode 100644 index 0000000..e7df040 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-prohibited.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-projection-screen.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-projection-screen.svg new file mode 100644 index 0000000..c6f6502 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-projection-screen.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-puzzle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-puzzle.svg new file mode 100644 index 0000000..34c7988 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-puzzle.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-quote.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-quote.svg new file mode 100644 index 0000000..a4f7e77 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-quote.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-record.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-record.svg new file mode 100644 index 0000000..515b8cc --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-record.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-refresh.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-refresh.svg new file mode 100644 index 0000000..5eb3af1 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-refresh.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results-demographics.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results-demographics.svg new file mode 100644 index 0000000..0b982d8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results-demographics.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results.svg new file mode 100644 index 0000000..f11a670 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-results.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind-ten.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind-ten.svg new file mode 100644 index 0000000..6c8f514 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind-ten.svg @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind.svg new file mode 100644 index 0000000..309aef5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rewind.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rss.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rss.svg new file mode 100644 index 0000000..b987788 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-rss.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-safety-cone.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-safety-cone.svg new file mode 100644 index 0000000..1561f76 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-safety-cone.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-save.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-save.svg new file mode 100644 index 0000000..318ccd2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-save.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-share.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-share.svg new file mode 100644 index 0000000..5284089 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-share.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sheriff-badge.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sheriff-badge.svg new file mode 100644 index 0000000..60e79a9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sheriff-badge.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shield.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shield.svg new file mode 100644 index 0000000..a1397bd --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shield.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-bag.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-bag.svg new file mode 100644 index 0000000..3f8fc87 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-bag.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-cart.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-cart.svg new file mode 100644 index 0000000..230b902 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shopping-cart.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shuffle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shuffle.svg new file mode 100644 index 0000000..6ccf41e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-shuffle.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-skull.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-skull.svg new file mode 100644 index 0000000..74f40c2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-skull.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-500px.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-500px.svg new file mode 100644 index 0000000..1cd1f57 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-500px.svg @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-adobe.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-adobe.svg new file mode 100644 index 0000000..6fbeebe --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-adobe.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-amazon.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-amazon.svg new file mode 100644 index 0000000..c6c5baf --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-amazon.svg @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-android.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-android.svg new file mode 100644 index 0000000..0b5d69f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-android.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-apple.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-apple.svg new file mode 100644 index 0000000..18810d5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-apple.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-behance.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-behance.svg new file mode 100644 index 0000000..20c5012 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-behance.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-bing.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-bing.svg new file mode 100644 index 0000000..8e256be --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-bing.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-blogger.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-blogger.svg new file mode 100644 index 0000000..8a45b49 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-blogger.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-delicious.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-delicious.svg new file mode 100644 index 0000000..8e3a592 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-delicious.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-designer-news.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-designer-news.svg new file mode 100644 index 0000000..13be8b3 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-designer-news.svg @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-deviant-art.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-deviant-art.svg new file mode 100644 index 0000000..9992d6b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-deviant-art.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-digg.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-digg.svg new file mode 100644 index 0000000..aec5efd --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-digg.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dribbble.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dribbble.svg new file mode 100644 index 0000000..ac6dd61 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dribbble.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-drive.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-drive.svg new file mode 100644 index 0000000..6dda57e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-drive.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dropbox.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dropbox.svg new file mode 100644 index 0000000..612b04a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-dropbox.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-evernote.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-evernote.svg new file mode 100644 index 0000000..dd72619 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-evernote.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-facebook.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-facebook.svg new file mode 100644 index 0000000..303af06 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-facebook.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-flickr.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-flickr.svg new file mode 100644 index 0000000..99ace87 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-flickr.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-forrst.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-forrst.svg new file mode 100644 index 0000000..7c4aee4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-forrst.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-foursquare.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-foursquare.svg new file mode 100644 index 0000000..73fa517 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-foursquare.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-game-center.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-game-center.svg new file mode 100644 index 0000000..a9fca3f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-game-center.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-github.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-github.svg new file mode 100644 index 0000000..a36ff8b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-github.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-google-plus.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-google-plus.svg new file mode 100644 index 0000000..6866506 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-google-plus.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hacker-news.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hacker-news.svg new file mode 100644 index 0000000..b09bae7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hacker-news.svg @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hi5.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hi5.svg new file mode 100644 index 0000000..f886c65 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-hi5.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-instagram.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-instagram.svg new file mode 100644 index 0000000..bb333e2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-instagram.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-joomla.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-joomla.svg new file mode 100644 index 0000000..addec2e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-joomla.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-lastfm.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-lastfm.svg new file mode 100644 index 0000000..e9ac380 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-lastfm.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-linkedin.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-linkedin.svg new file mode 100644 index 0000000..e68b824 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-linkedin.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-medium.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-medium.svg new file mode 100644 index 0000000..7fe39dc --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-medium.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-myspace.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-myspace.svg new file mode 100644 index 0000000..a4633a4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-myspace.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-orkut.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-orkut.svg new file mode 100644 index 0000000..335b4ec --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-orkut.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-path.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-path.svg new file mode 100644 index 0000000..41fb4b2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-path.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-picasa.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-picasa.svg new file mode 100644 index 0000000..e665e03 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-picasa.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-pinterest.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-pinterest.svg new file mode 100644 index 0000000..0eb447d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-pinterest.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-rdio.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-rdio.svg new file mode 100644 index 0000000..ef788c2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-rdio.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-reddit.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-reddit.svg new file mode 100644 index 0000000..5c2563a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-reddit.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skillshare.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skillshare.svg new file mode 100644 index 0000000..12fb8e6 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skillshare.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skype.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skype.svg new file mode 100644 index 0000000..0be5e38 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-skype.svg @@ -0,0 +1,26 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-smashing-mag.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-smashing-mag.svg new file mode 100644 index 0000000..8e12c3f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-smashing-mag.svg @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-snapchat.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-snapchat.svg new file mode 100644 index 0000000..3b3fb50 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-snapchat.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-spotify.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-spotify.svg new file mode 100644 index 0000000..487ee88 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-spotify.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-squidoo.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-squidoo.svg new file mode 100644 index 0000000..22eb38d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-squidoo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stack-overflow.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stack-overflow.svg new file mode 100644 index 0000000..56cdd39 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stack-overflow.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-steam.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-steam.svg new file mode 100644 index 0000000..2cce5a7 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-steam.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stumbleupon.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stumbleupon.svg new file mode 100644 index 0000000..6249230 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-stumbleupon.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-treehouse.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-treehouse.svg new file mode 100644 index 0000000..6dca6f4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-treehouse.svg @@ -0,0 +1,24 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-tumblr.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-tumblr.svg new file mode 100644 index 0000000..b9b12e5 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-tumblr.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-twitter.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-twitter.svg new file mode 100644 index 0000000..d34adff --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-twitter.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-vimeo.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-vimeo.svg new file mode 100644 index 0000000..7277649 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-vimeo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-windows.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-windows.svg new file mode 100644 index 0000000..c30d003 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-windows.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-xbox.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-xbox.svg new file mode 100644 index 0000000..1503532 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-xbox.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yahoo.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yahoo.svg new file mode 100644 index 0000000..cd91c7e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yahoo.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yelp.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yelp.svg new file mode 100644 index 0000000..0394e91 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-yelp.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-youtube.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-youtube.svg new file mode 100644 index 0000000..f152e73 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-youtube.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zerply.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zerply.svg new file mode 100644 index 0000000..aa3cabf --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zerply.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zurb.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zurb.svg new file mode 100644 index 0000000..5fcaa0e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-social-zurb.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sound.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sound.svg new file mode 100644 index 0000000..0e8d932 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-sound.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-star.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-star.svg new file mode 100644 index 0000000..7f84dd9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-star.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-stop.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-stop.svg new file mode 100644 index 0000000..1f37886 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-stop.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-strikethrough.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-strikethrough.svg new file mode 100644 index 0000000..186b858 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-strikethrough.svg @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-subscript.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-subscript.svg new file mode 100644 index 0000000..8b2acdd --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-subscript.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-superscript.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-superscript.svg new file mode 100644 index 0000000..35f1560 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-superscript.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-landscape.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-landscape.svg new file mode 100644 index 0000000..07d9646 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-landscape.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-portrait.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-portrait.svg new file mode 100644 index 0000000..dfe77df --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-tablet-portrait.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target-two.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target-two.svg new file mode 100644 index 0000000..298c015 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target-two.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target.svg new file mode 100644 index 0000000..5c3538c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-target.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone-accessible.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone-accessible.svg new file mode 100644 index 0000000..f428683 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone-accessible.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone.svg new file mode 100644 index 0000000..fe9640f --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-telephone.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-text-color.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-text-color.svg new file mode 100644 index 0000000..234b7a4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-text-color.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-thumbnails.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-thumbnails.svg new file mode 100644 index 0000000..a622fb2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-thumbnails.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-ticket.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-ticket.svg new file mode 100644 index 0000000..a9cc430 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-ticket.svg @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-business.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-business.svg new file mode 100644 index 0000000..c6b2746 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-business.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-female.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-female.svg new file mode 100644 index 0000000..944cc3c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso-female.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso.svg new file mode 100644 index 0000000..e55236e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torso.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all-female.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all-female.svg new file mode 100644 index 0000000..558c6bb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all-female.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all.svg new file mode 100644 index 0000000..0228bf8 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-all.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-female-male.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-female-male.svg new file mode 100644 index 0000000..5e4567a --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-female-male.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-male-female.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-male-female.svg new file mode 100644 index 0000000..6b28f12 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos-male-female.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos.svg new file mode 100644 index 0000000..77f13a2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-torsos.svg @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trash.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trash.svg new file mode 100644 index 0000000..84fcebf --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trash.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trees.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trees.svg new file mode 100644 index 0000000..0747314 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trees.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trophy.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trophy.svg new file mode 100644 index 0000000..b32ff9b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-trophy.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-underline.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-underline.svg new file mode 100644 index 0000000..40487af --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-underline.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-universal-access.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-universal-access.svg new file mode 100644 index 0000000..527a6d4 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-universal-access.svg @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlink.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlink.svg new file mode 100644 index 0000000..130d145 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlink.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlock.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlock.svg new file mode 100644 index 0000000..433aa09 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-unlock.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload-cloud.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload-cloud.svg new file mode 100644 index 0000000..0c03336 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload-cloud.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload.svg new file mode 100644 index 0000000..3f2809e --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-upload.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-usb.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-usb.svg new file mode 100644 index 0000000..a80912d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-usb.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-video.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-video.svg new file mode 100644 index 0000000..a245c44 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-video.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-none.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-none.svg new file mode 100644 index 0000000..ab33319 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-none.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-strike.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-strike.svg new file mode 100644 index 0000000..7db3895 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume-strike.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume.svg new file mode 100644 index 0000000..8580f1d --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-volume.svg @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-web.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-web.svg new file mode 100644 index 0000000..1bf45fb --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-web.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wheelchair.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wheelchair.svg new file mode 100644 index 0000000..caff281 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wheelchair.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-widget.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-widget.svg new file mode 100644 index 0000000..d79f0b0 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-widget.svg @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wrench.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wrench.svg new file mode 100644 index 0000000..e9dac12 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-wrench.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x-circle.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x-circle.svg new file mode 100644 index 0000000..dc20f8c --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x-circle.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x.svg new file mode 100644 index 0000000..0f33db9 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-x.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-yen.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-yen.svg new file mode 100644 index 0000000..0e51289 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-yen.svg @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-in.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-in.svg new file mode 100644 index 0000000..b1fa45b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-in.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-out.svg b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-out.svg new file mode 100644 index 0000000..f3088c2 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation-icons/svgs/fi-zoom-out.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/css/foundation.css b/STM32F746G Discovery board/html/css/foundation.css new file mode 100644 index 0000000..240c498 --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation.css @@ -0,0 +1,3803 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.2.0 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the
element to have plain styling. + */ +/* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + font-size: 100%; + box-sizing: border-box; } + +*, +*::before, +*::after { + box-sizing: inherit; } + +body { + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background: #fefefe; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + width: 100%; + border-radius: 0; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: 0; + line-height: 1; } + [data-whatinput='mouse'] button { + outline: 0; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.row { + max-width: 75rem; + margin-left: auto; + margin-right: auto; } + .row::before, .row::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .row::after { + clear: both; } + .row.collapse > .column, .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row .row { + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media screen and (min-width: 40em) { + .row .row { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .row .row.collapse { + margin-left: 0; + margin-right: 0; } + .row.expanded { + max-width: none; } + .row.expanded .row { + margin-left: auto; + margin-right: auto; } + +.column, .columns { + width: 100%; + float: left; + padding-left: 0.625rem; + padding-right: 0.625rem; } + @media screen and (min-width: 40em) { + .column, .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + .column:last-child:not(:first-child), .columns:last-child:not(:first-child) { + float: right; } + .column.end:last-child:last-child, .end.columns:last-child:last-child { + float: left; } + +.column.row.row, .row.row.columns { + float: none; } + .row .column.row.row, .row .row.row.columns { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; } + +.small-1 { + width: 8.33333%; } + +.small-push-1 { + position: relative; + left: 8.33333%; } + +.small-pull-1 { + position: relative; + left: -8.33333%; } + +.small-offset-0 { + margin-left: 0%; } + +.small-2 { + width: 16.66667%; } + +.small-push-2 { + position: relative; + left: 16.66667%; } + +.small-pull-2 { + position: relative; + left: -16.66667%; } + +.small-offset-1 { + margin-left: 8.33333%; } + +.small-3 { + width: 25%; } + +.small-push-3 { + position: relative; + left: 25%; } + +.small-pull-3 { + position: relative; + left: -25%; } + +.small-offset-2 { + margin-left: 16.66667%; } + +.small-4 { + width: 33.33333%; } + +.small-push-4 { + position: relative; + left: 33.33333%; } + +.small-pull-4 { + position: relative; + left: -33.33333%; } + +.small-offset-3 { + margin-left: 25%; } + +.small-5 { + width: 41.66667%; } + +.small-push-5 { + position: relative; + left: 41.66667%; } + +.small-pull-5 { + position: relative; + left: -41.66667%; } + +.small-offset-4 { + margin-left: 33.33333%; } + +.small-6 { + width: 50%; } + +.small-push-6 { + position: relative; + left: 50%; } + +.small-pull-6 { + position: relative; + left: -50%; } + +.small-offset-5 { + margin-left: 41.66667%; } + +.small-7 { + width: 58.33333%; } + +.small-push-7 { + position: relative; + left: 58.33333%; } + +.small-pull-7 { + position: relative; + left: -58.33333%; } + +.small-offset-6 { + margin-left: 50%; } + +.small-8 { + width: 66.66667%; } + +.small-push-8 { + position: relative; + left: 66.66667%; } + +.small-pull-8 { + position: relative; + left: -66.66667%; } + +.small-offset-7 { + margin-left: 58.33333%; } + +.small-9 { + width: 75%; } + +.small-push-9 { + position: relative; + left: 75%; } + +.small-pull-9 { + position: relative; + left: -75%; } + +.small-offset-8 { + margin-left: 66.66667%; } + +.small-10 { + width: 83.33333%; } + +.small-push-10 { + position: relative; + left: 83.33333%; } + +.small-pull-10 { + position: relative; + left: -83.33333%; } + +.small-offset-9 { + margin-left: 75%; } + +.small-11 { + width: 91.66667%; } + +.small-push-11 { + position: relative; + left: 91.66667%; } + +.small-pull-11 { + position: relative; + left: -91.66667%; } + +.small-offset-10 { + margin-left: 83.33333%; } + +.small-12 { + width: 100%; } + +.small-offset-11 { + margin-left: 91.66667%; } + +.small-up-1 > .column, .small-up-1 > .columns { + width: 100%; + float: left; } + .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { + float: left; } + +.small-up-2 > .column, .small-up-2 > .columns { + width: 50%; + float: left; } + .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { + float: left; } + +.small-up-3 > .column, .small-up-3 > .columns { + width: 33.33333%; + float: left; } + .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { + float: left; } + +.small-up-4 > .column, .small-up-4 > .columns { + width: 25%; + float: left; } + .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { + float: left; } + +.small-up-5 > .column, .small-up-5 > .columns { + width: 20%; + float: left; } + .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { + float: left; } + +.small-up-6 > .column, .small-up-6 > .columns { + width: 16.66667%; + float: left; } + .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { + float: left; } + +.small-up-7 > .column, .small-up-7 > .columns { + width: 14.28571%; + float: left; } + .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { + float: left; } + +.small-up-8 > .column, .small-up-8 > .columns { + width: 12.5%; + float: left; } + .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { + float: left; } + +.small-collapse > .column, .small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.small-collapse .row { + margin-left: 0; + margin-right: 0; } + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-left: 0.625rem; + padding-right: 0.625rem; } + +.small-centered { + float: none; + margin-left: auto; + margin-right: auto; } + +.small-uncentered, +.small-push-0, +.small-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } + +@media screen and (min-width: 40em) { + .medium-1 { + width: 8.33333%; } + .medium-push-1 { + position: relative; + left: 8.33333%; } + .medium-pull-1 { + position: relative; + left: -8.33333%; } + .medium-offset-0 { + margin-left: 0%; } + .medium-2 { + width: 16.66667%; } + .medium-push-2 { + position: relative; + left: 16.66667%; } + .medium-pull-2 { + position: relative; + left: -16.66667%; } + .medium-offset-1 { + margin-left: 8.33333%; } + .medium-3 { + width: 25%; } + .medium-push-3 { + position: relative; + left: 25%; } + .medium-pull-3 { + position: relative; + left: -25%; } + .medium-offset-2 { + margin-left: 16.66667%; } + .medium-4 { + width: 33.33333%; } + .medium-push-4 { + position: relative; + left: 33.33333%; } + .medium-pull-4 { + position: relative; + left: -33.33333%; } + .medium-offset-3 { + margin-left: 25%; } + .medium-5 { + width: 41.66667%; } + .medium-push-5 { + position: relative; + left: 41.66667%; } + .medium-pull-5 { + position: relative; + left: -41.66667%; } + .medium-offset-4 { + margin-left: 33.33333%; } + .medium-6 { + width: 50%; } + .medium-push-6 { + position: relative; + left: 50%; } + .medium-pull-6 { + position: relative; + left: -50%; } + .medium-offset-5 { + margin-left: 41.66667%; } + .medium-7 { + width: 58.33333%; } + .medium-push-7 { + position: relative; + left: 58.33333%; } + .medium-pull-7 { + position: relative; + left: -58.33333%; } + .medium-offset-6 { + margin-left: 50%; } + .medium-8 { + width: 66.66667%; } + .medium-push-8 { + position: relative; + left: 66.66667%; } + .medium-pull-8 { + position: relative; + left: -66.66667%; } + .medium-offset-7 { + margin-left: 58.33333%; } + .medium-9 { + width: 75%; } + .medium-push-9 { + position: relative; + left: 75%; } + .medium-pull-9 { + position: relative; + left: -75%; } + .medium-offset-8 { + margin-left: 66.66667%; } + .medium-10 { + width: 83.33333%; } + .medium-push-10 { + position: relative; + left: 83.33333%; } + .medium-pull-10 { + position: relative; + left: -83.33333%; } + .medium-offset-9 { + margin-left: 75%; } + .medium-11 { + width: 91.66667%; } + .medium-push-11 { + position: relative; + left: 91.66667%; } + .medium-pull-11 { + position: relative; + left: -91.66667%; } + .medium-offset-10 { + margin-left: 83.33333%; } + .medium-12 { + width: 100%; } + .medium-offset-11 { + margin-left: 91.66667%; } + .medium-up-1 > .column, .medium-up-1 > .columns { + width: 100%; + float: left; } + .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { + float: left; } + .medium-up-2 > .column, .medium-up-2 > .columns { + width: 50%; + float: left; } + .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { + float: left; } + .medium-up-3 > .column, .medium-up-3 > .columns { + width: 33.33333%; + float: left; } + .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { + float: left; } + .medium-up-4 > .column, .medium-up-4 > .columns { + width: 25%; + float: left; } + .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { + float: left; } + .medium-up-5 > .column, .medium-up-5 > .columns { + width: 20%; + float: left; } + .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { + float: left; } + .medium-up-6 > .column, .medium-up-6 > .columns { + width: 16.66667%; + float: left; } + .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { + float: left; } + .medium-up-7 > .column, .medium-up-7 > .columns { + width: 14.28571%; + float: left; } + .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { + float: left; } + .medium-up-8 > .column, .medium-up-8 > .columns { + width: 12.5%; + float: left; } + .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { + float: left; } + .medium-collapse > .column, .medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .medium-collapse .row { + margin-left: 0; + margin-right: 0; } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .medium-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .medium-uncentered, + .medium-push-0, + .medium-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +@media screen and (min-width: 64em) { + .large-1 { + width: 8.33333%; } + .large-push-1 { + position: relative; + left: 8.33333%; } + .large-pull-1 { + position: relative; + left: -8.33333%; } + .large-offset-0 { + margin-left: 0%; } + .large-2 { + width: 16.66667%; } + .large-push-2 { + position: relative; + left: 16.66667%; } + .large-pull-2 { + position: relative; + left: -16.66667%; } + .large-offset-1 { + margin-left: 8.33333%; } + .large-3 { + width: 25%; } + .large-push-3 { + position: relative; + left: 25%; } + .large-pull-3 { + position: relative; + left: -25%; } + .large-offset-2 { + margin-left: 16.66667%; } + .large-4 { + width: 33.33333%; } + .large-push-4 { + position: relative; + left: 33.33333%; } + .large-pull-4 { + position: relative; + left: -33.33333%; } + .large-offset-3 { + margin-left: 25%; } + .large-5 { + width: 41.66667%; } + .large-push-5 { + position: relative; + left: 41.66667%; } + .large-pull-5 { + position: relative; + left: -41.66667%; } + .large-offset-4 { + margin-left: 33.33333%; } + .large-6 { + width: 50%; } + .large-push-6 { + position: relative; + left: 50%; } + .large-pull-6 { + position: relative; + left: -50%; } + .large-offset-5 { + margin-left: 41.66667%; } + .large-7 { + width: 58.33333%; } + .large-push-7 { + position: relative; + left: 58.33333%; } + .large-pull-7 { + position: relative; + left: -58.33333%; } + .large-offset-6 { + margin-left: 50%; } + .large-8 { + width: 66.66667%; } + .large-push-8 { + position: relative; + left: 66.66667%; } + .large-pull-8 { + position: relative; + left: -66.66667%; } + .large-offset-7 { + margin-left: 58.33333%; } + .large-9 { + width: 75%; } + .large-push-9 { + position: relative; + left: 75%; } + .large-pull-9 { + position: relative; + left: -75%; } + .large-offset-8 { + margin-left: 66.66667%; } + .large-10 { + width: 83.33333%; } + .large-push-10 { + position: relative; + left: 83.33333%; } + .large-pull-10 { + position: relative; + left: -83.33333%; } + .large-offset-9 { + margin-left: 75%; } + .large-11 { + width: 91.66667%; } + .large-push-11 { + position: relative; + left: 91.66667%; } + .large-pull-11 { + position: relative; + left: -91.66667%; } + .large-offset-10 { + margin-left: 83.33333%; } + .large-12 { + width: 100%; } + .large-offset-11 { + margin-left: 91.66667%; } + .large-up-1 > .column, .large-up-1 > .columns { + width: 100%; + float: left; } + .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { + float: left; } + .large-up-2 > .column, .large-up-2 > .columns { + width: 50%; + float: left; } + .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { + float: left; } + .large-up-3 > .column, .large-up-3 > .columns { + width: 33.33333%; + float: left; } + .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { + float: left; } + .large-up-4 > .column, .large-up-4 > .columns { + width: 25%; + float: left; } + .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { + float: left; } + .large-up-5 > .column, .large-up-5 > .columns { + width: 20%; + float: left; } + .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { + float: left; } + .large-up-6 > .column, .large-up-6 > .columns { + width: 16.66667%; + float: left; } + .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { + float: left; } + .large-up-7 > .column, .large-up-7 > .columns { + width: 14.28571%; + float: left; } + .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { + float: left; } + .large-up-8 > .column, .large-up-8 > .columns { + width: 12.5%; + float: left; } + .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { + float: left; } + .large-collapse > .column, .large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .large-collapse .row { + margin-left: 0; + margin-right: 0; } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .large-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .large-uncentered, + .large-push-0, + .large-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + font-size: inherit; + line-height: 1.6; + margin-bottom: 1rem; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: inherit; + text-rendering: optimizeLegibility; + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small { + color: #cacaca; + line-height: 0; } + +h1 { + font-size: 1.5rem; } + +h2 { + font-size: 1.25rem; } + +h3 { + font-size: 1.1875rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.0625rem; } + +h6 { + font-size: 1rem; } + +@media screen and (min-width: 40em) { + h1 { + font-size: 3rem; } + h2 { + font-size: 2.5rem; } + h3 { + font-size: 1.9375rem; } + h4 { + font-size: 1.5625rem; } + h5 { + font-size: 1.25rem; } + h6 { + font-size: 1rem; } } + +a { + color: #2199e8; + text-decoration: none; + line-height: inherit; + cursor: pointer; } + a:hover, a:focus { + color: #1585cf; } + a img { + border: 0; } + +hr { + max-width: 75rem; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; + margin: 1.25rem auto; + clear: both; } + +ul, +ol, +dl { + line-height: 1.6; + margin-bottom: 1rem; + list-style-position: outside; } + +li { + font-size: inherit; } + +ul { + list-style-type: disc; + margin-left: 1.25rem; } + +ol { + margin-left: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: '\2014 \0020'; } + +abbr { + color: #0a0a0a; + cursor: help; + border-bottom: 1px dotted #0a0a0a; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + background-color: #e6e6e6; + border: 1px solid #cacaca; + padding: 0.125rem 0.3125rem 0.0625rem; } + +kbd { + padding: 0.125rem 0.25rem 0; + margin: 0; + background-color: #e6e6e6; + color: #0a0a0a; + font-family: Consolas, "Liberation Mono", Courier, monospace; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +.no-bullet { + margin-left: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; + pointer-events: none; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: right; + margin-left: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-left: 0; + float: none; + top: -0.1em; } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-family: inherit; + font-size: 1rem; + color: #0a0a0a; + background-color: #fefefe; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + border-radius: 0; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + border: 1px solid #8a8a8a; + background-color: #fefefe; + outline: none; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: default; } + +[type='submit'], +[type='button'] { + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +input[type='search'] { + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-right: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: table; + width: 100%; + margin-bottom: 1rem; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button { + margin: 0; + display: table-cell; + vertical-align: middle; } + +.input-group-label { + text-align: center; + padding: 0 1rem; + background: #e6e6e6; + color: #0a0a0a; + border: 1px solid #cacaca; + white-space: nowrap; + width: 1%; + height: 100%; } + .input-group-label:first-child { + border-right: 0; } + .input-group-label:last-child { + border-left: 0; } + +.input-group-field { + border-radius: 0; + height: 2.5rem; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + height: 100%; + width: 1%; } + .input-group-button a, + .input-group-button input, + .input-group-button button { + margin: 0; } + +.input-group .input-group-button { + display: table-cell; } + +fieldset { + border: 0; + padding: 0; + margin: 0; } + +legend { + margin-bottom: 0.5rem; + max-width: 100%; } + +.fieldset { + border: 1px solid #cacaca; + padding: 1.25rem; + margin: 1.125rem 0; } + .fieldset legend { + background: #fefefe; + padding: 0 0.1875rem; + margin: 0; + margin-left: -0.1875rem; } + +select { + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-size: 1rem; + font-family: inherit; + line-height: normal; + color: #0a0a0a; + background-color: #fefefe; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + background-image: url('data:image/svg+xml;utf8,'); + background-size: 9px 6px; + background-position: right center; + background-origin: content-box; + background-repeat: no-repeat; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:disabled { + background-color: #e6e6e6; + cursor: default; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; } + +.is-invalid-input:not(:focus) { + background-color: rgba(236, 88, 64, 0.1); + border-color: #ec5840; } + +.is-invalid-label { + color: #ec5840; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #ec5840; } + .form-error.is-visible { + display: block; } + +.accordion { + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; + border-bottom: 0; + border-radius: 0; + margin-left: 0; } + +.accordion-title { + display: block; + padding: 1.25rem 1rem; + line-height: 1; + font-size: 0.75rem; + color: #2199e8; + position: relative; + border-bottom: 1px solid #e6e6e6; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + content: '+'; + position: absolute; + right: 1rem; + top: 50%; + margin-top: -0.5rem; } + .is-active > .accordion-title::before { + content: '–'; } + +.accordion-content { + padding: 1rem; + display: none; + border-bottom: 1px solid #e6e6e6; + background-color: #fefefe; } + +.is-accordion-submenu-parent > a { + position: relative; } + .is-accordion-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; } + +.is-accordion-submenu-parent[aria-expanded='true'] > a::after { + transform-origin: 50% 50%; + transform: scaleY(-1); } + +.badge { + display: inline-block; + padding: 0.3em; + min-width: 2.1em; + font-size: 0.6rem; + text-align: center; + border-radius: 50%; + background: #2199e8; + color: #fefefe; } + .badge.secondary { + background: #777; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #fefefe; } + .badge.warning { + background: #ffae00; + color: #fefefe; } + .badge.alert { + background: #ec5840; + color: #fefefe; } + +.breadcrumbs { + list-style: none; + margin: 0 0 1rem 0; } + .breadcrumbs::before, .breadcrumbs::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: left; + color: #0a0a0a; + font-size: 0.6875rem; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + color: #cacaca; + content: "/"; + margin: 0 0.75rem; + position: relative; + top: 1px; + opacity: 1; } + .breadcrumbs a { + color: #2199e8; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; } + +.button-group { + margin-bottom: 1rem; + font-size: 0; } + .button-group::before, .button-group::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + font-size: 0.9rem; + float: left; } + .button-group .button:not(:last-child) { + border-right: 1px solid #fefefe; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded { + margin-right: -1px; } + .button-group.expanded::before, .button-group.expanded::after { + display: none; } + .button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button { + display: inline-block; + width: calc(50% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button { + display: inline-block; + width: calc(33.33333% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button { + display: inline-block; + width: calc(25% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button { + display: inline-block; + width: calc(20% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button { + display: inline-block; + width: calc(16.66667% - 1px); + margin-right: 1px; } + .button-group.primary .button { + background-color: #2199e8; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #147cc0; + color: #fefefe; } + .button-group.secondary .button { + background-color: #777; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #fefefe; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #fefefe; } + .button-group.warning .button { + background-color: #ffae00; + color: #fefefe; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #fefefe; } + .button-group.alert .button { + background-color: #ec5840; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #da3116; + color: #fefefe; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + width: 100%; } + .button-group.stacked .button:not(:last-child), .button-group.stacked-for-small .button:not(:last-child), .button-group.stacked-for-medium .button:not(:last-child) { + margin-right: 0; } + @media screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + width: auto; } + .button-group.stacked-for-small .button:not(:last-child) { + margin-right: 1px; } } + @media screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + width: auto; } + .button-group.stacked-for-medium .button:not(:last-child) { + margin-right: 1px; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; } } + +.callout { + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + position: relative; + color: #0a0a0a; + background-color: white; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #def0fc; } + .callout.secondary { + background-color: #ebebeb; } + .callout.success { + background-color: #e1faea; } + .callout.warning { + background-color: #fff3d9; } + .callout.alert { + background-color: #fce6e2; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + +.menu { + margin: 0; + list-style-type: none; } + .menu > li { + display: table-cell; + vertical-align: middle; } + [data-whatinput='mouse'] .menu > li { + outline: 0; } + .menu > li > a { + display: block; + padding: 0.7rem 1rem; + line-height: 1; } + .menu input, + .menu a, + .menu button { + margin-bottom: 0; } + .menu > li > a img, + .menu > li > a i { + vertical-align: middle; } + .menu > li > a i + span, + .menu > li > a img + span { + vertical-align: middle; } + .menu > li > a img, + .menu > li > a i { + margin-right: 0.25rem; + display: inline-block; } + .menu > li { + display: table-cell; } + .menu.vertical > li { + display: block; } + @media screen and (min-width: 40em) { + .menu.medium-horizontal > li { + display: table-cell; } + .menu.medium-vertical > li { + display: block; } } + @media screen and (min-width: 64em) { + .menu.large-horizontal > li { + display: table-cell; } + .menu.large-vertical > li { + display: block; } } + .menu.simple li { + line-height: 1; + display: inline-block; + margin-right: 1rem; } + .menu.simple a { + padding: 0; } + .menu.align-right::before, .menu.align-right::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .menu.align-right::after { + clear: both; } + .menu.align-right > li { + float: right; } + .menu.expanded { + width: 100%; + display: table; + table-layout: fixed; } + .menu.expanded > li:first-child:last-child { + width: 100%; } + .menu.icon-top > li > a { + text-align: center; } + .menu.icon-top > li > a img, + .menu.icon-top > li > a i { + display: block; + margin: 0 auto 0.25rem; } + .menu.nested { + margin-left: 1rem; } + .menu .active > a { + color: #fefefe; + background: #2199e8; } + +.menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: 0.7rem 1rem; } + +.menu-centered { + text-align: center; } + .menu-centered > .menu { + display: inline-block; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block !important; } + +.is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: #fefefe; + transition: transform 0.15s linear; } + .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + transform: translateX(-100%); } + .is-drilldown-submenu.is-closing { + transform: translateX(100%); } + +.is-drilldown-submenu-parent > a { + position: relative; } + .is-drilldown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; } + +.js-drilldown-back > a::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; + border-left-width: 0; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; } + +.dropdown-pane { + background-color: #fefefe; + border: 1px solid #cacaca; + border-radius: 0; + display: block; + font-size: 1rem; + padding: 1rem; + position: absolute; + visibility: hidden; + width: 300px; + z-index: 10; } + .dropdown-pane.is-open { + visibility: visible; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + +[data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left .is-dropdown-submenu { + left: auto; + right: 100%; } + +.dropdown.menu.vertical > li.opens-right .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + right: 14px; + margin-top: -3px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + +.dropdown.menu.vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + +@media screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.medium-vertical > li.opens-right .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +@media screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.large-vertical > li.opens-right .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + margin-top: -2px; } + .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu { + top: 100%; } + .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu { + left: auto; + right: 100%; } + +.is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + left: 100%; + min-width: 200px; + z-index: 1; + background: #fefefe; + border: 1px solid #cacaca; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; + margin-top: -3px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.flex-video { + position: relative; + height: 0; + padding-bottom: 75%; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .flex-video.widescreen { + padding-bottom: 56.25%; } + .flex-video.vimeo { + padding-top: 0; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: 0; + background: #2199e8; + color: #fefefe; } + .label.secondary { + background: #777; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #fefefe; } + .label.warning { + background: #ffae00; + color: #fefefe; } + .label.alert { + background: #ec5840; + color: #fefefe; } + +.media-object { + margin-bottom: 1rem; + display: block; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + display: block; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + display: table-cell; + vertical-align: top; } + .media-object-section:first-child { + padding-right: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; } + .media-object-section.middle { + vertical-align: middle; } + .media-object-section.bottom { + vertical-align: bottom; } + +html, +body { + height: 100%; } + +.off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; } + +.off-canvas-wrapper-inner { + position: relative; + width: 100%; + transition: transform 0.5s ease; } + .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .off-canvas-wrapper-inner::after { + clear: both; } + +.off-canvas-content, +.off-canvas-content { + min-height: 100%; + background: #fefefe; + transition: transform 0.5s ease; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; + box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } + +.js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(254, 254, 254, 0.25); + cursor: pointer; + transition: background 0.5s ease; } + +.off-canvas { + position: absolute; + background: #e6e6e6; + z-index: -1; + max-height: 100%; + overflow-y: auto; + transform: translateX(0); } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.position-left { + left: -250px; + top: 0; + width: 250px; } + .is-open-left { + transform: translateX(250px); } + .off-canvas.position-right { + right: -250px; + top: 0; + width: 250px; } + .is-open-right { + transform: translateX(-250px); } + +@media screen and (min-width: 40em) { + .position-left.reveal-for-medium { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } } + +@media screen and (min-width: 64em) { + .position-left.reveal-for-large { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; } + +.orbit-slide { + width: 100%; + max-height: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + margin: 0; + width: 100%; + max-width: 100%; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: 1rem; + margin-bottom: 0; + color: #fefefe; + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + left: 0; } + +.orbit-next { + left: auto; + right: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + background-color: #cacaca; + border-radius: 50%; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.progress { + background-color: #cacaca; + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; } + .progress.primary .progress-meter { + background-color: #2199e8; } + .progress.secondary .progress-meter { + background-color: #777; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #ec5840; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #2199e8; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +body.is-reveal-open { + overflow: hidden; } + +.reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1005; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + display: none; + z-index: 1006; + padding: 1rem; + border: 1px solid #cacaca; + background-color: #fefefe; + border-radius: 0; + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column, .reveal .columns, + .reveal .columns { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal .reveal { + left: auto; + right: auto; + margin: 0 auto; } } + .reveal.collapse { + padding: 0; } + @media screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; } } + .reveal.without-overlay { + position: fixed; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + user-select: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + transition: all 0.2s ease-in-out; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +.switch { + margin-bottom: 1rem; + outline: 0; + position: relative; + user-select: none; + color: #fefefe; + font-weight: bold; + font-size: 0.875rem; } + +.switch-input { + opacity: 0; + position: absolute; } + +.switch-paddle { + background: #cacaca; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: 2rem; + transition: all 0.25s ease-out; + border-radius: 0; + color: inherit; + font-weight: inherit; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + background: #fefefe; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + left: 0.25rem; + top: 0.25rem; + width: 1.5rem; + transition: all 0.25s ease-out; + transform: translate3d(0, 0, 0); + border-radius: 0; } + input:checked ~ .switch-paddle { + background: #2199e8; } + input:checked ~ .switch-paddle::after { + left: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + transform: translateY(-50%); } + +.switch-active { + left: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + right: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + +.switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + +.switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + +.switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + +.switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } + +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + +.switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + +.switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } + +table { + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table thead, + table tfoot { + background: #f8f8f8; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } + table tbody tr:nth-child(even) { + background-color: #f1f1f1; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover tr:hover { + background-color: #f9f9f9; } + +table.hover tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; } + .tabs::before, .tabs::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + width: auto; + float: none; + display: block; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #2199e8; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1893e4; } + +.tabs-title { + float: left; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + line-height: 1; + font-size: 0.75rem; } + .tabs-title > a:hover { + background: #fefefe; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; } + +.tabs-content { + background: #fefefe; + transition: all 0.5s ease; + border: 1px solid #e6e6e6; + border-top: 0; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + border: solid 4px #fefefe; + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + transition: box-shadow 200ms ease-out; + border-radius: 0; + margin-bottom: 1rem; } + .thumbnail:hover, .thumbnail:focus { + box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); } + +.title-bar { + background: #0a0a0a; + color: #fefefe; + padding: 0.5rem; } + .title-bar::before, .title-bar::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .title-bar::after { + clear: both; } + .title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.5rem; } + +.title-bar-left { + float: left; } + +.title-bar-right { + float: right; + text-align: right; } + +.title-bar-title { + font-weight: bold; + vertical-align: middle; + display: inline-block; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.has-tip { + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + position: relative; + display: inline-block; + cursor: help; } + +.tooltip { + background-color: #0a0a0a; + color: #fefefe; + font-size: 80%; + padding: 0.75rem; + position: absolute; + z-index: 10; + top: calc(100% + 0.6495rem); + max-width: 10rem !important; + border-radius: 0; } + .tooltip::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent #0a0a0a; + border-bottom-style: solid; + border-top-width: 0; + bottom: 100%; + position: absolute; + left: 50%; + transform: translateX(-50%); } + .tooltip.top::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: #0a0a0a transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + top: 100%; + bottom: auto; } + .tooltip.left::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent transparent #0a0a0a; + border-left-style: solid; + border-right-width: 0; + bottom: auto; + left: 100%; + top: 50%; + transform: translateY(-50%); } + .tooltip.right::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent #0a0a0a transparent transparent; + border-right-style: solid; + border-left-width: 0; + bottom: auto; + left: auto; + right: 100%; + top: 50%; + transform: translateY(-50%); } + +.top-bar { + padding: 0.5rem; } + .top-bar::before, .top-bar::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + .top-bar::after { + clear: both; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-right: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-right: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: 100%; } + @media screen and (min-width: 40em) { + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: auto; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + width: 100%; } } + +.top-bar-title { + float: left; + margin-right: 1rem; } + +.top-bar-left { + float: left; } + +.top-bar-right { + float: right; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.clearfix::before, .clearfix::after { + content: ' '; + display: table; + flex-basis: 0; + order: 1; } + +.clearfix::after { + clear: both; } + +.slide-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateY(-100%); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-in-down.mui-enter.mui-enter-active { + transform: translateY(0); } + +.slide-in-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateX(-100%); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-in-left.mui-enter.mui-enter-active { + transform: translateX(0); } + +.slide-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateY(100%); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-in-up.mui-enter.mui-enter-active { + transform: translateY(0); } + +.slide-in-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateX(100%); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-in-right.mui-enter.mui-enter-active { + transform: translateX(0); } + +.slide-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateY(0); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-out-down.mui-leave.mui-leave-active { + transform: translateY(100%); } + +.slide-out-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateX(0); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-out-right.mui-leave.mui-leave-active { + transform: translateX(100%); } + +.slide-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateY(0); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-out-up.mui-leave.mui-leave-active { + transform: translateY(-100%); } + +.slide-out-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: translateX(0); + transition-property: transform, opacity; + backface-visibility: hidden; } + +.slide-out-left.mui-leave.mui-leave-active { + transform: translateX(-100%); } + +.fade-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 0; + transition-property: opacity; } + +.fade-in.mui-enter.mui-enter-active { + opacity: 1; } + +.fade-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 1; + transition-property: opacity; } + +.fade-out.mui-leave.mui-leave-active { + opacity: 0; } + +.hinge-in-from-top.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(-90deg); + transform-origin: top; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-top.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(-90deg); + transform-origin: right; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-right.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-bottom.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(90deg); + transform-origin: bottom; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-bottom.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(90deg); + transform-origin: left; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-left.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-x.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateX(-90deg); + transform-origin: center; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-x.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-y.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotateY(-90deg); + transform-origin: center; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-y.mui-enter.mui-enter-active { + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-out-from-top.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: top; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-top.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: right; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-right.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.hinge-out-from-bottom.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: bottom; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-bottom.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(90deg); + opacity: 0; } + +.hinge-out-from-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: left; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-left.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(90deg); + opacity: 0; } + +.hinge-out-from-middle-x.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: center; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-x.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-middle-y.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: perspective(2000px) rotate(0deg); + transform-origin: center; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-y.mui-leave.mui-leave-active { + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.scale-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: scale(0.5); + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-up.mui-enter.mui-enter-active { + transform: scale(1); + opacity: 1; } + +.scale-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: scale(1.5); + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-down.mui-enter.mui-enter-active { + transform: scale(1); + opacity: 1; } + +.scale-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: scale(1); + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-up.mui-leave.mui-leave-active { + transform: scale(1.5); + opacity: 0; } + +.scale-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: scale(1); + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-down.mui-leave.mui-leave-active { + transform: scale(0.5); + opacity: 0; } + +.spin-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: rotate(-0.75turn); + transition-property: transform, opacity; + opacity: 0; } + +.spin-in.mui-enter.mui-enter-active { + transform: rotate(0); + opacity: 1; } + +.spin-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: rotate(0); + transition-property: transform, opacity; + opacity: 1; } + +.spin-out.mui-leave.mui-leave-active { + transform: rotate(0.75turn); + opacity: 0; } + +.spin-in-ccw.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + transform: rotate(0.75turn); + transition-property: transform, opacity; + opacity: 0; } + +.spin-in-ccw.mui-enter.mui-enter-active { + transform: rotate(0); + opacity: 1; } + +.spin-out-ccw.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + transform: rotate(0); + transition-property: transform, opacity; + opacity: 1; } + +.spin-out-ccw.mui-leave.mui-leave-active { + transform: rotate(-0.75turn); + opacity: 0; } + +.slow { + transition-duration: 750ms !important; } + +.fast { + transition-duration: 250ms !important; } + +.linear { + transition-timing-function: linear !important; } + +.ease { + transition-timing-function: ease !important; } + +.ease-in { + transition-timing-function: ease-in !important; } + +.ease-out { + transition-timing-function: ease-out !important; } + +.ease-in-out { + transition-timing-function: ease-in-out !important; } + +.bounce-in { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + transition-delay: 300ms !important; } + +.long-delay { + transition-delay: 700ms !important; } + +.shake { + animation-name: shake-7; } + +@keyframes shake-7 { + 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { + transform: translateX(7%); } + 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { + transform: translateX(-7%); } } + +.spin-cw { + animation-name: spin-cw-1turn; } + +@keyframes spin-cw-1turn { + 0% { + transform: rotate(-1turn); } + 100% { + transform: rotate(0); } } + +.spin-ccw { + animation-name: spin-cw-1turn; } + +@keyframes spin-cw-1turn { + 0% { + transform: rotate(0); } + 100% { + transform: rotate(1turn); } } + +.wiggle { + animation-name: wiggle-7deg; } + +@keyframes wiggle-7deg { + 40%, 50%, 60% { + transform: rotate(7deg); } + 35%, 45%, 55%, 65% { + transform: rotate(-7deg); } + 0%, 30%, 70%, 100% { + transform: rotate(0); } } + +.shake, +.spin-cw, +.spin-ccw, +.wiggle { + animation-duration: 500ms; } + +.infinite { + animation-iteration-count: infinite; } + +.slow { + animation-duration: 750ms !important; } + +.fast { + animation-duration: 250ms !important; } + +.linear { + animation-timing-function: linear !important; } + +.ease { + animation-timing-function: ease !important; } + +.ease-in { + animation-timing-function: ease-in !important; } + +.ease-out { + animation-timing-function: ease-out !important; } + +.ease-in-out { + animation-timing-function: ease-in-out !important; } + +.bounce-in { + animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + animation-delay: 300ms !important; } + +.long-delay { + animation-delay: 700ms !important; } diff --git a/STM32F746G Discovery board/html/css/foundation.min.css b/STM32F746G Discovery board/html/css/foundation.min.css new file mode 100644 index 0000000..74c927b --- /dev/null +++ b/STM32F746G Discovery board/html/css/foundation.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8"; +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{font-size:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{padding:0;margin:0;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;background:#fefefe;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;-ms-interpolation-mode:bicubic;display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px;border-radius:0}select{width:100%;border-radius:0}#map_canvas embed,#map_canvas img,#map_canvas object,.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{-webkit-appearance:none;-moz-appearance:none;background:transparent;padding:0;border:0;border-radius:0;line-height:1}[data-whatinput=mouse] button{outline:0}.is-visible{display:block!important}.is-hidden{display:none!important}.row{max-width:75rem;margin-left:auto;margin-right:auto}.row:after,.row:before{content:' ';display:table;flex-basis:0;order:1}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row .row{margin-left:-.625rem;margin-right:-.625rem}@media screen and (min-width:40em){.row .row{margin-left:-.9375rem;margin-right:-.9375rem}}.row .row.collapse{margin-left:0;margin-right:0}.row.expanded{max-width:none}.row.expanded .row{margin-left:auto;margin-right:auto}.column,.columns{width:100%;float:left;padding-left:.625rem;padding-right:.625rem}@media screen and (min-width:40em){.column,.columns{padding-left:.9375rem;padding-right:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{padding-left:0;padding-right:0;margin-left:0;margin-right:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{width:100%;float:left}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{width:50%;float:left}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{width:33.33333%;float:left}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{width:25%;float:left}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{width:20%;float:left}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{width:16.66667%;float:left}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{width:14.28571%;float:left}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{width:12.5%;float:left}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-left:0;padding-right:0}.small-collapse .row{margin-left:0;margin-right:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-left:.625rem;padding-right:.625rem}.small-centered{float:none;margin-left:auto;margin-right:auto}.small-pull-0,.small-push-0,.small-uncentered{position:static;margin-left:0;margin-right:0;float:left}@media screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{width:100%;float:left}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{width:50%;float:left}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{width:33.33333%;float:left}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{width:25%;float:left}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{width:20%;float:left}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{width:16.66667%;float:left}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{width:14.28571%;float:left}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{width:12.5%;float:left}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-left:0;padding-right:0}.medium-collapse .row{margin-left:0;margin-right:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.medium-centered{float:none;margin-left:auto;margin-right:auto}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;margin-left:0;margin-right:0;float:left}}@media screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{width:100%;float:left}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{width:50%;float:left}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{width:33.33333%;float:left}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{width:25%;float:left}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{width:20%;float:left}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{width:16.66667%;float:left}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{width:14.28571%;float:left}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{width:12.5%;float:left}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-left:0;padding-right:0}.large-collapse .row{margin-left:0;margin-right:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-left:.9375rem;padding-right:.9375rem}.large-centered{float:none;margin-left:auto;margin-right:auto}.large-pull-0,.large-push-0,.large-uncentered{position:static;margin-left:0;margin-right:0;float:left}}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{font-size:inherit;line-height:1.6;margin-bottom:1rem;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;font-style:normal;color:inherit;text-rendering:optimizeLegibility;margin-top:0;margin-bottom:.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#cacaca;line-height:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h6{font-size:1rem}@media screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{color:#2199e8;text-decoration:none;line-height:inherit;cursor:pointer}a:focus,a:hover{color:#1585cf}a img{border:0}hr{max-width:75rem;height:0;border-right:0;border-top:0;border-bottom:1px solid #cacaca;border-left:0;margin:1.25rem auto;clear:both}dl,ol,ul{line-height:1.6;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:'\2014 \0020'}abbr{color:#0a0a0a;cursor:help;border-bottom:1px dotted #0a0a0a}code{font-weight:400;border:1px solid #cacaca;padding:.125rem .3125rem .0625rem}code,kbd{font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a;background-color:#e6e6e6}kbd{padding:.125rem .25rem 0;margin:0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='#']:after,a[href^='javascript:']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.button{display:inline-block;text-align:center;line-height:1;cursor:pointer;-webkit-appearance:none;transition:background-color .25s ease-out,color .25s ease-out;vertical-align:middle;border:1px solid transparent;border-radius:0;padding:.85em 1em;margin:0 0 1rem;font-size:.9rem;background-color:#2199e8;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#1583cc;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-left:0;margin-right:0}.button.primary{background-color:#2199e8;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#147cc0;color:#fefefe}.button.secondary{background-color:#777;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5f5f5f;color:#fefefe}.button.success{background-color:#3adb76;color:#fefefe}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#fefefe}.button.warning{background-color:#ffae00;color:#fefefe}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#fefefe}.button.alert{background-color:#ec5840;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#da3116;color:#fefefe}.button.hollow{border:1px solid #2199e8;color:#2199e8}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.primary{border:1px solid #2199e8;color:#2199e8}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c4d78;color:#0c4d78}.button.hollow.secondary{border:1px solid #777;color:#777}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3c3c3c;color:#3c3c3c}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #ec5840;color:#ec5840}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#881f0e;color:#881f0e}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed;pointer-events:none}.button.dropdown:after{content:'';display:block;width:0;height:0;border:.4em inset;border-color:#fefefe transparent transparent;border-top-style:solid;border-bottom-width:0;position:relative;top:.4em;float:right;margin-left:1em;display:inline-block}.button.arrow-only:after{margin-left:0;float:none;top:-.1em}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-family:inherit;font-size:1rem;color:#0a0a0a;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);border-radius:0;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{border:1px solid #8a8a8a;background-color:#fefefe;outline:none;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:default}[type=button],[type=submit]{border-radius:0;-webkit-appearance:none;-moz-appearance:none}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;margin-left:.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-field,.input-group-label{margin:0;display:table-cell;vertical-align:middle}.input-group-label{text-align:center;padding:0 1rem;background:#e6e6e6;color:#0a0a0a;border:1px solid #cacaca;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;height:100%;width:1%}.input-group-button a,.input-group-button button,.input-group-button input{margin:0}.input-group .input-group-button{display:table-cell}fieldset{border:0;padding:0;margin:0}legend{margin-bottom:.5rem;max-width:100%}.fieldset{border:1px solid #cacaca;padding:1.25rem;margin:1.125rem 0}.fieldset legend{background:#fefefe;padding:0 .1875rem;margin:0;margin-left:-.1875rem}select{height:2.4375rem;padding:.5rem;border:1px solid #cacaca;margin:0 0 1rem;font-size:1rem;font-family:inherit;line-height:normal;color:#0a0a0a;background-color:#fefefe;border-radius:0;-webkit-appearance:none;-moz-appearance:none;background-image:url('data:image/svg+xml;utf8,');background-size:9px 6px;background-position:100%;background-origin:content-box;background-repeat:no-repeat}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:disabled{background-color:#e6e6e6;cursor:default}select::-ms-expand{display:none}select[multiple]{height:auto}.is-invalid-input:not(:focus){background-color:rgba(236,88,64,.1);border-color:#ec5840}.form-error,.is-invalid-label{color:#ec5840}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.accordion{list-style-type:none;background:#fefefe;border:1px solid #e6e6e6;border-bottom:0;border-radius:0;margin-left:0}.accordion-title{display:block;padding:1.25rem 1rem;line-height:1;font-size:.75rem;color:#2199e8;position:relative;border-bottom:1px solid #e6e6e6}.accordion-title:focus,.accordion-title:hover{background-color:#e6e6e6}.accordion-title:before{content:'+';position:absolute;right:1rem;top:50%;margin-top:-.5rem}.is-active>.accordion-title:before{content:'–'}.accordion-content{padding:1rem;display:none;border-bottom:1px solid #e6e6e6;background-color:#fefefe}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;position:absolute;top:50%;margin-top:-4px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{transform-origin:50% 50%;transform:scaleY(-1)}.badge{display:inline-block;padding:.3em;min-width:2.1em;font-size:.6rem;text-align:center;border-radius:50%;background:#2199e8;color:#fefefe}.badge.secondary{background:#777;color:#fefefe}.badge.success{background:#3adb76;color:#fefefe}.badge.warning{background:#ffae00;color:#fefefe}.badge.alert{background:#ec5840;color:#fefefe}.breadcrumbs{list-style:none;margin:0 0 1rem}.breadcrumbs:after,.breadcrumbs:before{content:' ';display:table;flex-basis:0;order:1}.breadcrumbs:after{clear:both}.breadcrumbs li{float:left;color:#0a0a0a;font-size:.6875rem;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{color:#cacaca;content:"/";margin:0 .75rem;position:relative;top:1px;opacity:1}.breadcrumbs a{color:#2199e8}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca}.button-group{margin-bottom:1rem;font-size:0}.button-group:after,.button-group:before{content:' ';display:table;flex-basis:0;order:1}.button-group:after{clear:both}.button-group .button{margin:0;font-size:.9rem;float:left}.button-group .button:not(:last-child){border-right:1px solid #fefefe}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-right:-1px}.button-group.expanded:after,.button-group.expanded:before{display:none}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-right:1px}.button-group.primary .button{background-color:#2199e8;color:#fefefe}.button-group.primary .button:focus,.button-group.primary .button:hover{background-color:#147cc0;color:#fefefe}.button-group.secondary .button{background-color:#777;color:#fefefe}.button-group.secondary .button:focus,.button-group.secondary .button:hover{background-color:#5f5f5f;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#fefefe}.button-group.success .button:focus,.button-group.success .button:hover{background-color:#22bb5b;color:#fefefe}.button-group.warning .button{background-color:#ffae00;color:#fefefe}.button-group.warning .button:focus,.button-group.warning .button:hover{background-color:#cc8b00;color:#fefefe}.button-group.alert .button{background-color:#ec5840;color:#fefefe}.button-group.alert .button:focus,.button-group.alert .button:hover{background-color:#da3116;color:#fefefe}.button-group.stacked-for-medium .button,.button-group.stacked-for-small .button,.button-group.stacked .button{width:100%}.button-group.stacked-for-medium .button:not(:last-child),.button-group.stacked-for-small .button:not(:last-child),.button-group.stacked .button:not(:last-child){margin-right:0}@media screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto}.button-group.stacked-for-small .button:not(:last-child){margin-right:1px}}@media screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto}.button-group.stacked-for-medium .button:not(:last-child){margin-right:1px}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;position:relative;color:#0a0a0a;background-color:#fff}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#def0fc}.callout.secondary{background-color:#ebebeb}.callout.success{background-color:#e1faea}.callout.warning{background-color:#fff3d9}.callout.alert{background-color:#fce6e2}.callout.small{padding:.5rem}.callout.large{padding:3rem}.close-button{position:absolute;color:#8a8a8a;right:1rem;top:.5rem;font-size:2em;line-height:1;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:focus,.close-button:hover{color:#0a0a0a}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell;vertical-align:middle}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu a,.menu button,.menu input{margin-bottom:0}.menu>li>a i,.menu>li>a i+span,.menu>li>a img,.menu>li>a img+span{vertical-align:middle}.menu>li>a i,.menu>li>a img{margin-right:.25rem;display:inline-block}.menu>li{display:table-cell}.menu.vertical>li{display:block}@media screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-vertical>li{display:block}}@media screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-vertical>li{display:block}}.menu.simple li{line-height:1;display:inline-block;margin-right:1rem}.menu.simple a{padding:0}.menu.align-right:after,.menu.align-right:before{content:' ';display:table;flex-basis:0;order:1}.menu.align-right:after{clear:both}.menu.align-right>li{float:right}.menu.expanded{width:100%;display:table;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.icon-top>li>a{text-align:center}.menu.icon-top>li>a i,.menu.icon-top>li>a img{display:block;margin:0 auto .25rem}.menu.nested{margin-left:1rem}.menu .active>a{color:#fefefe;background:#2199e8}.menu-text{font-weight:700;color:inherit;line-height:1;padding-top:0;padding-bottom:0;padding:.7rem 1rem}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block}.no-js [data-responsive-menu] ul{display:none}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block!important}.is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;height:100%;width:100%;background:#fefefe;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;transform:translateX(-100%)}.is-drilldown-submenu.is-closing{transform:translateX(100%)}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a:before{content:'';display:block;width:0;height:0;border:6px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem}.dropdown-pane{background-color:#fefefe;border:1px solid #cacaca;border-radius:0;display:block;font-size:1rem;padding:1rem;position:absolute;visibility:hidden;width:300px;z-index:3}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left .is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.vertical>li.opens-right .is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}@media screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left .is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.medium-vertical>li.opens-right .is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.medium-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.medium-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}@media screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{left:auto;right:0;top:100%}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{right:auto;left:0;top:100%}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{padding-right:1.5rem;position:relative}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:#2199e8 transparent transparent;border-top-style:solid;border-bottom-width:0;right:5px;margin-top:-2px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left .is-dropdown-submenu{left:auto;right:100%}.dropdown.menu.large-vertical>li.opens-right .is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{right:14px;margin-top:-3px}.dropdown.menu.large-vertical>li.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.dropdown.menu.large-vertical>li.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;left:auto;right:0}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;right:5px;margin-top:-2px}.is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu{top:100%}.is-dropdown-submenu-parent.opens-left .is-dropdown-submenu{left:auto;right:100%}.is-dropdown-submenu{display:none;position:absolute;top:0;left:100%;min-width:200px;z-index:1;background:#fefefe;border:1px solid #cacaca}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px;margin-top:-3px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent #2199e8 transparent transparent;border-right-style:solid;border-left-width:0}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{content:'';display:block;width:0;height:0;border:5px inset;border-color:transparent transparent transparent #2199e8;border-left-style:solid;border-right-width:0}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active,.is-dropdown-submenu:not(.js-dropdown-nohover)>.is-dropdown-submenu-parent:hover>.is-dropdown-submenu{display:block}.flex-video{position:relative;height:0;padding-bottom:75%;margin-bottom:1rem;overflow:hidden}.flex-video embed,.flex-video iframe,.flex-video object,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.flex-video.widescreen{padding-bottom:56.25%}.flex-video.vimeo{padding-top:0}.label{display:inline-block;padding:.33333rem .5rem;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;border-radius:0;background:#2199e8;color:#fefefe}.label.secondary{background:#777;color:#fefefe}.label.success{background:#3adb76;color:#fefefe}.label.warning{background:#ffae00;color:#fefefe}.label.alert{background:#ec5840;color:#fefefe}.media-object{margin-bottom:1rem;display:block}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}body,html{height:100%}.off-canvas-wrapper{width:100%;overflow-x:hidden;position:relative;backface-visibility:hidden;-webkit-overflow-scrolling:auto}.off-canvas-wrapper-inner{position:relative;width:100%;transition:transform .5s ease}.off-canvas-wrapper-inner:after,.off-canvas-wrapper-inner:before{content:' ';display:table;flex-basis:0;order:1}.off-canvas-wrapper-inner:after{clear:both}.off-canvas-content{min-height:100%;background:#fefefe;transition:transform .5s ease;backface-visibility:hidden;z-index:1;padding-bottom:.1px;box-shadow:0 0 10px hsla(0,0%,4%,.5)}.js-off-canvas-exit{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:hsla(0,0%,100%,.25);cursor:pointer;transition:background .5s ease}.off-canvas{position:absolute;background:#e6e6e6;z-index:-1;max-height:100%;overflow-y:auto;transform:translateX(0)}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.position-left{left:-250px;top:0;width:250px}.is-open-left{transform:translateX(250px)}.off-canvas.position-right{right:-250px;top:0;width:250px}.is-open-right{transform:translateX(-250px)}@media screen and (min-width:40em){.position-left.reveal-for-medium{left:0;z-index:auto;position:fixed}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{right:0;z-index:auto;position:fixed}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}}@media screen and (min-width:64em){.position-left.reveal-for-large{left:0;z-index:auto;position:fixed}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{right:0;z-index:auto;position:fixed}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}}.orbit,.orbit-container{position:relative}.orbit-container{margin:0;overflow:hidden;list-style:none}.orbit-slide{width:100%;max-height:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{margin:0;width:100%;max-width:100%}.orbit-caption{bottom:0;width:100%;margin-bottom:0;background-color:hsla(0,0%,4%,.5)}.orbit-caption,.orbit-next,.orbit-previous{position:absolute;padding:1rem;color:#fefefe}.orbit-next,.orbit-previous{top:50%;transform:translateY(-50%);z-index:3}[data-whatinput=mouse] .orbit-next,[data-whatinput=mouse] .orbit-previous{outline:0}.orbit-next:active,.orbit-next:focus,.orbit-next:hover,.orbit-previous:active,.orbit-previous:focus,.orbit-previous:hover{background-color:hsla(0,0%,4%,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;background-color:#cacaca;border-radius:50%}.orbit-bullets button.is-active,.orbit-bullets button:hover{background-color:#8a8a8a}.progress{background-color:#cacaca;height:1rem;margin-bottom:1rem;border-radius:0}.progress.primary .progress-meter{background-color:#2199e8}.progress.secondary .progress-meter{background-color:#777}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#ec5840}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#2199e8}.progress-meter-text{top:50%;left:50%;transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}body.is-reveal-open{overflow:hidden}.reveal-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;z-index:4;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{display:none;z-index:5;padding:1rem;border:1px solid #cacaca;background-color:#fefefe;border-radius:0;position:relative;top:100px;margin-left:auto;margin-right:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media screen and (min-width:40em){.reveal .reveal{left:auto;right:auto;margin:0 auto}}.reveal.collapse{padding:0}@media screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;height:100%;height:100vh;min-height:100vh;max-width:none;margin-left:0;border:0}}.reveal.without-overlay{position:fixed}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;user-select:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;transition:all .2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{top:50%;transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;background-color:#2199e8;transition:all .2s ease-in-out;touch-action:manipulation;border-radius:0}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#1583cc}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;transform:scaleY(-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:absolute;z-index:0;transform:translateZ(0)}.sticky.is-stuck{position:fixed;z-index:2}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:absolute;left:auto;right:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.switch{margin-bottom:1rem;outline:0;position:relative;user-select:none;color:#fefefe;font-weight:700;font-size:.875rem}.switch-input{opacity:0;position:absolute}.switch-paddle{background:#cacaca;cursor:pointer;display:block;position:relative;width:4rem;height:2rem;transition:all .25s ease-out;border-radius:0;color:inherit;font-weight:inherit}input+.switch-paddle{margin:0}.switch-paddle:after{background:#fefefe;content:'';display:block;position:absolute;height:1.5rem;left:.25rem;top:.25rem;width:1.5rem;transition:all .25s ease-out;transform:translateZ(0);border-radius:0}input:checked~.switch-paddle{background:#2199e8}input:checked~.switch-paddle:after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table tbody,table tfoot,table thead{border:1px solid #f1f1f1;background-color:#fefefe}table caption{font-weight:700;padding:.5rem .625rem .625rem}table tfoot,table thead{background:#f8f8f8;color:#0a0a0a}table tfoot tr,table thead tr{background:transparent}table tfoot td,table tfoot th,table thead td,table thead th{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody tr:nth-child(even){background-color:#f1f1f1}table tbody td,table tbody th{padding:.5rem .625rem .625rem}@media screen and (max-width:63.9375em){table.stack tfoot,table.stack thead{display:none}table.stack td,table.stack th,table.stack tr{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover tr:hover{background-color:#f9f9f9}table.hover tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;list-style-type:none;background:#fefefe;border:1px solid #e6e6e6}.tabs:after,.tabs:before{content:' ';display:table;flex-basis:0;order:1}.tabs:after{clear:both}.tabs.vertical>li{width:auto;float:none;display:block}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#2199e8}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:focus,.tabs.primary>li>a:hover{background:#1893e4}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;line-height:1;font-size:.75rem}.tabs-title>a:hover{background:#fefefe}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6}.tabs-content{background:#fefefe;transition:all .5s ease;border:1px solid #e6e6e6;border-top:0}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{border:4px solid #fefefe;box-shadow:0 0 0 1px hsla(0,0%,4%,.2);display:inline-block;line-height:0;max-width:100%;transition:box-shadow .2s ease-out;border-radius:0;margin-bottom:1rem}.thumbnail:focus,.thumbnail:hover{box-shadow:0 0 6px 1px rgba(33,153,232,.5)}.title-bar{background:#0a0a0a;color:#fefefe;padding:.5rem}.title-bar:after,.title-bar:before{content:' ';display:table;flex-basis:0;order:1}.title-bar:after{clear:both}.title-bar .menu-icon{margin-left:.25rem;margin-right:.5rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{font-weight:700}.menu-icon.dark,.title-bar-title{vertical-align:middle;display:inline-block}.menu-icon.dark{position:relative;cursor:pointer;width:20px;height:16px}.menu-icon.dark:after{content:'';position:absolute;display:block;width:100%;height:2px;background:#0a0a0a;top:0;left:0;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.has-tip{border-bottom:1px dotted #8a8a8a;font-weight:700;position:relative;display:inline-block;cursor:help}.tooltip{background-color:#0a0a0a;color:#fefefe;font-size:80%;padding:.75rem;position:absolute;z-index:3;top:calc(100% + .6495rem);max-width:10rem!important;border-radius:0}.tooltip:before{border-color:transparent transparent #0a0a0a;border-bottom-style:solid;border-top-width:0;bottom:100%;position:absolute;left:50%;transform:translateX(-50%)}.tooltip.top:before,.tooltip:before{content:'';display:block;width:0;height:0;border:.75rem inset}.tooltip.top:before{border-color:#0a0a0a transparent transparent;border-top-style:solid;border-bottom-width:0;top:100%;bottom:auto}.tooltip.left:before{border-color:transparent transparent transparent #0a0a0a;border-left-style:solid;border-right-width:0;left:100%}.tooltip.left:before,.tooltip.right:before{content:'';display:block;width:0;height:0;border:.75rem inset;bottom:auto;top:50%;transform:translateY(-50%)}.tooltip.right:before{border-color:transparent #0a0a0a transparent transparent;border-right-style:solid;border-left-width:0;left:auto;right:100%}.top-bar{padding:.5rem}.top-bar:after,.top-bar:before{content:' ';display:table;flex-basis:0;order:1}.top-bar:after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{float:left;margin-right:1rem}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none!important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none!important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none!important}}@media screen and (min-width:40em){.hide-for-medium{display:none!important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none!important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none!important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none!important}}@media screen and (min-width:64em){.hide-for-large{display:none!important}}@media screen and (max-width:63.9375em){.show-for-large{display:none!important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none!important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none!important}}.show-for-sr,.show-on-focus{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static!important;height:auto;width:auto;overflow:visible;clip:auto}.hide-for-portrait,.show-for-landscape{display:block!important}@media screen and (orientation:landscape){.hide-for-portrait,.show-for-landscape{display:block!important}}@media screen and (orientation:portrait){.hide-for-portrait,.show-for-landscape{display:none!important}}.hide-for-landscape,.show-for-portrait{display:none!important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none!important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block!important}}.float-left{float:left!important}.float-right{float:right!important}.float-center{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:' ';display:table;flex-basis:0;order:1}.clearfix:after{clear:both}.slide-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateY(-100%);transition-property:transform,opacity;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateX(-100%);transition-property:transform,opacity;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateY(100%);transition-property:transform,opacity;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateX(100%);transition-property:transform,opacity;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateY(0);transition-property:transform,opacity;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateX(0);transition-property:transform,opacity;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateY(0);transition-property:transform,opacity;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateX(0);transition-property:transform,opacity;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:top;transition-property:transform,opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:right;transition-property:transform,opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);transform-origin:bottom;transition-property:transform,opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);transform-origin:left;transition-property:transform,opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active,.hinge-out-from-top.mui-leave{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform-origin:top;transition-property:transform,opacity}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:right;transition-property:transform,opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:bottom;transition-property:transform,opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:left;transition-property:transform,opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:scale(.5);transition-property:transform,opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:scale(1.5);transition-property:transform,opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active,.scale-out-up.mui-leave{transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.scale-out-up.mui-leave.mui-leave-active{transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:scale(1);transition-property:transform,opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:rotate(-270deg);transition-property:transform,opacity;opacity:0}.spin-in.mui-enter.mui-enter-active,.spin-out.mui-leave{transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-in-ccw.mui-enter,.spin-out.mui-leave.mui-leave-active{transform:rotate(270deg);opacity:0}.spin-in-ccw.mui-enter{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-in-ccw.mui-enter.mui-enter-active,.spin-out-ccw.mui-leave{transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-out-ccw.mui-leave.mui-leave-active{transform:rotate(-270deg);opacity:0}.slow{transition-duration:.75s!important}.fast{transition-duration:.25s!important}.linear{transition-timing-function:linear!important}.ease{transition-timing-function:ease!important}.ease-in{transition-timing-function:ease-in!important}.ease-out{transition-timing-function:ease-out!important}.ease-in-out{transition-timing-function:ease-in-out!important}.bounce-in{transition-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{transition-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{transition-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{transition-delay:.3s!important}.long-delay{transition-delay:.7s!important}.shake{animation-name:a}@keyframes a{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-cw{animation-name:b}@keyframes b{0%{transform:rotate(-1turn)}to{transform:rotate(0)}}.spin-ccw{animation-name:b}@keyframes b{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wiggle{animation-name:c}@keyframes c{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,to{transform:rotate(0)}}.shake,.spin-ccw,.spin-cw,.wiggle{animation-duration:.5s}.infinite{animation-iteration-count:infinite}.slow{animation-duration:.75s!important}.fast{animation-duration:.25s!important}.linear{animation-timing-function:linear!important}.ease{animation-timing-function:ease!important}.ease-in{animation-timing-function:ease-in!important}.ease-out{animation-timing-function:ease-out!important}.ease-in-out{animation-timing-function:ease-in-out!important}.bounce-in{animation-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{animation-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{animation-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{animation-delay:.3s!important}.long-delay{animation-delay:.7s!important} \ No newline at end of file diff --git a/STM32F746G Discovery board/html/favicon.ico b/STM32F746G Discovery board/html/favicon.ico new file mode 100644 index 0000000..e260c2a Binary files /dev/null and b/STM32F746G Discovery board/html/favicon.ico differ diff --git a/STM32F746G Discovery board/html/images/ARM_University_horizontal_blue_LG.png b/STM32F746G Discovery board/html/images/ARM_University_horizontal_blue_LG.png new file mode 100644 index 0000000..a029fdb Binary files /dev/null and b/STM32F746G Discovery board/html/images/ARM_University_horizontal_blue_LG.png differ diff --git a/STM32F746G Discovery board/html/images/Arm_logo_blue_150MN.png b/STM32F746G Discovery board/html/images/Arm_logo_blue_150MN.png new file mode 100644 index 0000000..5cf91c0 Binary files /dev/null and b/STM32F746G Discovery board/html/images/Arm_logo_blue_150MN.png differ diff --git a/STM32F746G Discovery board/html/images/arm-sprite.svg b/STM32F746G Discovery board/html/images/arm-sprite.svg new file mode 100644 index 0000000..a8d8710 --- /dev/null +++ b/STM32F746G Discovery board/html/images/arm-sprite.svg @@ -0,0 +1,27 @@ + + + + arm-sprite + Created with Sketch. + + + + + + + + + + + + + + + + + + diff --git a/STM32F746G Discovery board/html/images/aup_logo.svg b/STM32F746G Discovery board/html/images/aup_logo.svg new file mode 100644 index 0000000..74dc9db --- /dev/null +++ b/STM32F746G Discovery board/html/images/aup_logo.svg @@ -0,0 +1 @@ +University 2015 RGB \ No newline at end of file diff --git a/STM32F746G Discovery board/html/images/contact_1.png b/STM32F746G Discovery board/html/images/contact_1.png new file mode 100644 index 0000000..27089b9 Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_1.png differ diff --git a/STM32F746G Discovery board/html/images/contact_2.png b/STM32F746G Discovery board/html/images/contact_2.png new file mode 100644 index 0000000..3d92a89 Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_2.png differ diff --git a/STM32F746G Discovery board/html/images/contact_3.png b/STM32F746G Discovery board/html/images/contact_3.png new file mode 100644 index 0000000..de92fe0 Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_3.png differ diff --git a/STM32F746G Discovery board/html/images/contact_4.png b/STM32F746G Discovery board/html/images/contact_4.png new file mode 100644 index 0000000..103ff1b Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_4.png differ diff --git a/STM32F746G Discovery board/html/images/contact_5.png b/STM32F746G Discovery board/html/images/contact_5.png new file mode 100644 index 0000000..b0a5d7b Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_5.png differ diff --git a/STM32F746G Discovery board/html/images/contact_6.png b/STM32F746G Discovery board/html/images/contact_6.png new file mode 100644 index 0000000..3e5f976 Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_6.png differ diff --git a/STM32F746G Discovery board/html/images/contact_7.png b/STM32F746G Discovery board/html/images/contact_7.png new file mode 100644 index 0000000..8775b10 Binary files /dev/null and b/STM32F746G Discovery board/html/images/contact_7.png differ diff --git a/STM32F746G Discovery board/html/js/angular/angular.min.js b/STM32F746G Discovery board/html/js/angular/angular.min.js new file mode 100644 index 0000000..ecdf967 --- /dev/null +++ b/STM32F746G Discovery board/html/js/angular/angular.min.js @@ -0,0 +1,311 @@ +/* + AngularJS v1.5.3 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(T,P,u){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.3/"+(a?a+"/":"")+b;for(b=1;b").append(a).html();try{return a[0].nodeType===Pa?N(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+N(b)})}catch(c){return N(d)}}function wc(a){try{return decodeURIComponent(a)}catch(b){}} +function xc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=wc(e),A(e)&&(f=A(f)?wc(f):!0,va.call(b,e)?M(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Sb(a){var b=[];q(a,function(a,c){M(a)?q(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}function rb(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi, +"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ce(a,b){var d,c,e=Qa.length;for(c=0;c/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=eb(b,d.strictDi);c.invoke(["$rootScope", +"$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;T&&e.test(T.name)&&(d.debugInfoEnabled=!0,T.name=T.name.replace(e,""));if(T&&!f.test(T.name))return c();T.name=T.name.replace(f,"");ea.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};D(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function ee(){T.name="NG_ENABLE_DEBUG_INFO!"+T.name;T.location.reload()} +function fe(a){a=ea.element(a).injector();if(!a)throw Ba("test");return a.get("$$testability")}function zc(a,b){b=b||"_";return a.replace(ge,function(a,c){return(c?b:"")+a.toLowerCase()})}function he(){var a;if(!Ac){var b=sb();($=z(b)?T.jQuery:b?T[b]:u)&&$.fn.on?(H=$,S($.fn,{scope:Ra.scope,isolateScope:Ra.isolateScope,controller:Ra.controller,injector:Ra.injector,inheritedData:Ra.inheritedData}),a=$.cleanData,$.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=$._data(f,"events"))&&c.$destroy&& +$(f).triggerHandler("$destroy");a(b)}):H=U;ea.element=H;Ac=!0}}function tb(a,b,d){if(!a)throw Ba("areq",b||"?",d||"required");return a}function Sa(a,b,d){d&&M(a)&&(a=a[a.length-1]);tb(D(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ta(a,b){if("hasOwnProperty"===a)throw Ba("badname",b);}function Bc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=cb(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});return e}function Mc(a, +b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;y(a)&&(a=W(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Vb("nosel");return new U(a)}if(b){b=P;var d;a=(d=Lf.exec(a))?[b.createElement(d[1])]:(d=Lc(a,b))?d.childNodes:[]}Nc(this,a)}function Wb(a){return a.cloneNode(!0)}function xb(a,b){b||gb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c=Da?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a));return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=M(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,a))},get:d,annotate:eb.$$annotate,has:function(b){return n.hasOwnProperty(b+ +"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Ua([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Ta(a,"constant");n[a]=b;F[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=x.invoke(d,c);return x.invoke(b,null,{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){ea.isString(b)&&l.push(b); +throw Ia("unpr",l.join(" <- "));}),F={},L=h(F,function(a,b){var c=p.get(a+"Provider",b);return x.invoke(c.$get,c,u,a)}),x=L;n.$injectorProvider={$get:da(L)};var r=g(a),x=L.get("$injector");x.strictDi=b;q(r,function(a){a&&x.invoke(a)});return x}function Ve(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===oa(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView(); +var c;c=g.yOffset;D(c)?c=c():Pb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):R(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=y(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||Nf(function(){c.$evalAsync(g)})});return g}]}function ib(a,b){if(!a&&!b)return""; +if(!a)return b;if(!b)return a;M(a)&&(a=a.join(" "));M(b)&&(b=b.join(" "));return a+" "+b}function Wf(a){y(a)&&(a=a.split(" "));var b=V();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ja(a){return J(a)?a:{}}function Xf(a,b,d,c){function e(a){try{a.apply(null,Aa.call(arguments,1))}finally{if(L--,0===L)for(;x.length;)try{x.pop()()}catch(b){d.error(b)}}}function f(){t=null;g();h()}function g(){r=G();r=z(r)?null:r;na(r,I)&&(r=I);I=r}function h(){if(v!==k.url()||w!==r)v=k.url(),w=r,q(C,function(a){a(k.url(), +r)})}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,F={};k.isMock=!1;var L=0,x=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){L++};k.notifyWhenNoOutstandingRequests=function(a){0===L?a():x.push(a)};var r,w,v=l.href,Q=b.find("base"),t=null,G=c.history?function(){try{return m.state}catch(a){}}:E;g();w=r;k.url=function(b,d,e){z(e)&&(e=null);l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=w===e;if(v===b&&(!c.history||f))return k; +var h=v&&Ka(v)===Ka(b);v=b;w=e;if(!c.history||h&&f){if(!h||t)t=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(t=b)}else m[d?"replaceState":"pushState"](e,"",b),g(),w=r;return k}return t||l.href.replace(/%27/g,"'")};k.state=function(){return r};var C=[],K=!1,I=null;k.onUrlChange=function(b){if(!K){if(c.history)H(a).on("popstate",f);H(a).on("hashchange",f);K=!0}C.push(b);return b};k.$$applicationDestroyed=function(){H(a).off("hashchange popstate",f)}; +k.$$checkUrlChange=h;k.baseHref=function(){var a=Q.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;L++;c=n(function(){delete F[c];e(a)},b||0);F[c]=!0;return c};k.defer.cancel=function(a){return F[a]?(delete F[a],p(a),e(E),!0):!1}}function bf(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Xf(a,c,b,d)}]}function cf(){this.$get=function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n= +null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=S({},c,{id:a}),k=V(),l=c&&c.capacity||Number.MAX_VALUE,m=V(),n=null,p=null;return b[a]={put:function(a,b){if(!z(b)){if(ll&&this.remove(p.key);return b}},get:function(a){if(l";b=la.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name); +d.value=c;a.attributes.setNamedItem(d)}function B(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof H||(a=H(a));for(var f=/\S+/,g=0,h=a.length;g").append(a).html())):c?Ra.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function xa(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,n,p,G;if(r)for(G=Array(c.length),m=0;mB.priority)break;if(y=B.scope)B.templateUrl||(J(y)?(X("new/isolated scope",C||G,B,t),C=B):X("new/isolated scope",C,B,t)),G=G||B;L=B.name;if(!Ea&&(B.replace&&(B.templateUrl||B.template)||B.transclude&&!B.$$tlb)){for(y=ra+1;Ea=a[y++];)if(Ea.transclude&&!Ea.$$tlb||Ea.replace&&(Ea.templateUrl||Ea.template)){E=!0;break}Ea=!0}!B.templateUrl&& +B.controller&&(y=B.controller,v=v||V(),X("'"+L+"' controller",v[L],B,t),v[L]=B);if(y=B.transclude)if(K=!0,B.$$tlb||(X("transclusion",I,B,t),I=B),"element"==y)Ca=!0,p=B.priority,Q=t,t=d.$$element=H(ba.$$createComment(L,d[L])),b=t[0],da(f,Aa.call(Q,0),b),Q[0].$$parentNode=Q[0].parentNode,s=Zb(E,Q,e,p,g&&g.name,{nonTlbTranscludeDirective:I});else{var P=V();Q=H(Wb(b)).contents();if(J(y)){Q=[];var Z=V(),Y=V();q(y,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Z[a]=b;P[b]=null;Y[b]=c});q(t.contents(), +function(a){var b=Z[ya(oa(a))];b?(Y[b]=!0,P[b]=P[b]||[],P[b].push(a)):Q.push(a)});q(Y,function(a,b){if(!a)throw ga("reqslot",b);});for(var $ in P)P[$]&&(P[$]=Zb(E,P[$],e))}t.empty();s=Zb(E,Q,e,u,u,{needsNewScope:B.$$isolateScope||B.$$newScope});s.$$slots=P}if(B.template)if(x=!0,X("template",w,B,t),w=B,y=D(B.template)?B.template(t,d):B.template,y=ua(y),B.replace){g=B;Q=Ub.test(y)?Xc(ca(B.templateNamespace,W(y))):[];b=Q[0];if(1!=Q.length||1!==b.nodeType)throw ga("tplrt",L,"");da(f,t,b);N={$attr:{}}; +y=A(b,[],N);var ea=a.splice(ra+1,a.length-(ra+1));(C||G)&&Yc(y,C,G);a=a.concat(y).concat(ea);U(d,N);N=a.length}else t.html(y);if(B.templateUrl)x=!0,X("template",w,B,t),w=B,B.replace&&(g=B),n=aa(a.splice(ra,a.length-ra),t,d,f,K&&s,h,k,{controllerDirectives:v,newScopeDirective:G!==B&&G,newIsolateScopeDirective:C,templateDirective:w,nonTlbTranscludeDirective:I}),N=a.length;else if(B.compile)try{xa=B.compile(t,d,s),D(xa)?m(null,xa,R,Fa):xa&&m(xa.pre,xa.post,R,Fa)}catch(fa){c(fa,wa(t))}B.terminal&&(n.terminal= +!0,p=Math.max(p,B.priority))}n.scope=G&&!0===G.scope;n.transcludeOnThisElement=K;n.templateOnThisElement=x;n.transclude=s;l.hasElementTranscludeDirective=Ca;return n}function jb(a,b,c,d){var e;if(y(b)){var f=b.match(k);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a);}else if(M(b))for(e=[],g=0,f=b.length;gn.priority)&&-1!=n.restrict.indexOf(g)){l&&(n=Qb(n,{$$start:l,$$end:m}));if(!n.$$bindings){var v=n,C=n,w=n.name,B={isolateScope:null,bindToController:null};J(C.scope)&&(!0===C.bindToController?(B.bindToController=d(C.scope,w,!0),B.isolateScope={}):B.isolateScope=d(C.scope,w,!1));J(C.bindToController)&&(B.bindToController=d(C.bindToController,w,!0));if(J(B.bindToController)){var I=C.controller,K=C.controllerAs;if(!I)throw ga("noctrl", +w);if(!Uc(I,K))throw ga("noident",w);}var x=v.$$bindings=B;J(x.isolateScope)&&(n.$$isolateBindings=x.isolateScope)}b.push(n);k=n}}catch(t){c(t)}}return k}function R(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return G.HTML;var c=oa(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return G.RESOURCE_URL} +function fa(a,c,d,e,f){var g=ea(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===oa(a))throw ga("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers=V());if(l.test(e))throw ga("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function da(a,b, +c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&& +Yf.call(a,b,1);return a}function Uc(a,b){if(b&&y(b))return b;if(y(a)){var d=ad.exec(a);if(d)return d[3]}}function df(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Ta(b,"controller");J(b)?S(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!J(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;h=!0===h;k&&y(k)&&(n=k);if(y(f)){k=f.match(ad); +if(!k)throw Zf("ctrlfmt",f);m=k[1];n=n||k[3];f=a.hasOwnProperty(m)?a[m]:Bc(g.$scope,m,!0)||(b?Bc(c,m,!0):u);Sa(f,m,!0)}if(h)return h=(M(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),S(function(){var a=d.invoke(f,l,g,m);a!==l&&(J(a)||D(a))&&(l=a,n&&e(g,n,l,m||f.name));return l},{instance:l,identifier:n});l=d.instantiate(f,g,m);n&&e(g,n,l,m||f.name);return l}}]}function ef(){this.$get=["$window",function(a){return H(a.document)}]}function ff(){this.$get=["$log",function(a){return function(b, +d){a.error.apply(a,arguments)}}]}function $b(a){return J(a)?fa(a)?a.toISOString():db(a):a}function lf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||z(a)||(M(a)?q(a,function(a){b.push(ja(c)+"="+ja($b(a)))}):b.push(ja(c)+"="+ja($b(a))))});return b.join("&")}}}function mf(){this.$get=function(){return function(a){function b(a,e,f){null===a||z(a)||(M(a)?q(a,function(a,c){b(a,e+"["+(J(a)?c:"")+"]")}):J(a)&&!fa(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f? +"":"]"))}):d.push(ja(e)+"="+ja($b(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(y(a)){var d=a.replace($f,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(bd))||(c=(c=d.match(ag))&&bg[c[0]].test(d));c&&(a=uc(d))}}return a}function cd(a){var b=V(),d;y(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=N(W(a.substr(0,d)));a=W(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):J(a)&&q(a,function(a,d){var f=N(d),g=W(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b} +function dd(a){var b;return function(d){b||(b=cd(a));return d?(d=b[N(d)],void 0===d&&(d=null),d):b}}function ed(a,b,d,c){if(D(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function kf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return J(a)&&"[object File]"!==ka.call(a)&&"[object Blob]"!==ka.call(a)&&"[object FormData]"!==ka.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(bc),put:ia(bc),patch:ia(bc)},xsrfCookieName:"XSRF-TOKEN", +xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return A(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return A(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a){var b=S({},a);b.data=ed(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a, +b){var c,d={};q(a,function(a,e){D(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!J(b))throw O("$http")("badreq",b);if(!y(b.url))throw O("$http")("badreq",b.url);var f=S({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=S({},b.headers),f,g,h,c=S({},c.common,c[N(b.method)]);a:for(f in c){g=N(f);for(h in d)if(N(h)===g)continue a;d[f]=c[f]}return e(d,ia(b))}(b);f.method=vb(f.method); +f.paramSerializer=y(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=ed(b.data,dd(d),u,b.transformRequest);z(e)&&q(d,function(a,b){"content-type"===N(b)&&delete d[b]});z(b.withCredentials)&&!z(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,e).then(c,c)},u],h=k.when(f);for(q(L,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b= +g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Sa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Sa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd("success"),h.error=fd("error"));return h}function n(c,d){function g(a,c,d,e){function f(){l(c,a,d,e)}K&&(200<=a&&300>a?K.put(L,[a,c,cd(d),e]):K.remove(L));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function l(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?G.resolve: +G.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})}function n(a){l(a.data,a.status,ia(a.headers()),a.statusText)}function t(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var G=k.defer(),C=G.promise,K,I,qa=c.headers,L=p(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);C.then(t,t);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(K=J(c.cache)?c.cache:J(a.cache)?a.cache:F);K&&(I=K.get(L),A(I)?I&&D(I.then)?I.then(n,n):M(I)? +l(I[1],I[0],ia(I[2]),I[3]):l(I,200,{},"OK"):K.put(L,C));z(I)&&((I=gd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:u)&&(qa[c.xsrfHeaderName||a.xsrfHeaderName]=I),e(c.method,L,d,g,qa,c.timeout,c.withCredentials,c.responseType));return C}function p(a,b){0=l&&(v.resolve(r),x(Q.$$intervalId),delete g[Q.$$intervalId]);w||a.$apply()},k);g[Q.$$intervalId]=v;return Q}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId), +delete g[a.$$intervalId],!0):!1};return f}]}function cc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=rb(a[b]);return a.join("/")}function hd(a,b){var d=sa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=Y(d.port)||dg[d.protocol]||null}function id(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=sa(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=xc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path= +"/"+b.$$path)}function la(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ka(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function kb(a){return a.replace(/(#.+)|#$/,"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";hd(a,this);this.$$parse=function(a){var d=la(b,a);if(!y(d))throw Fb("ipthprfx",a,b);id(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Sb(this.$$search),d=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+ +d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;A(f=la(a,c))?(g=f,g=A(f=la(d,f))?b+(la("/",f)||f):a+g):A(f=la(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){hd(a,this);this.$$parse=function(c){var e=la(a,c)||la(b,c),f;z(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",z(e)&&(a=c,this.replace())):(f=la(d,e),z(f)&&(f=e));id(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&& +(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Sb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ka(a)==Ka(b)?(this.$$parse(b),!0):!1}}function jd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ka(c)? +f=c:(g=la(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Sb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Gb(a){return function(){return this[a]}}function kd(a,b){return function(d){if(z(d))return this[a];this[a]=b(d);this.$$compose();return this}}function pf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return A(b)?(a=b,this): +a};this.html5Mode=function(a){return Oa(a)?(b.enabled=a,this):J(a)?(Oa(a.enabled)&&(b.enabled=a.enabled),Oa(a.requireBase)&&(b.requireBase=a.requireBase),Oa(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state, +b)}var l,m;m=c.baseHref();var n=c.url(),p;if(b.enabled){if(!m&&b.requireBase)throw Fb("nobase");p=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(m||"/");m=e.history?dc:jd}else p=Ka(n),m=ec;var F=p.substr(0,Ka(p).lastIndexOf("/")+1);l=new m(p,F,"#"+a);l.$$parseLinkUrl(n,n);l.$$state=c.state();var q=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=H(a.target);"a"!==oa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return; +var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=sa(h.animVal).href);q.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});kb(l.absUrl())!=kb(n)&&c.url(l.absUrl(),!0);var x=!0;c.onUrlChange(function(a,b){z(la(F,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=kb(a);l.$$parse(a); +l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(x=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=kb(c.url()),b=kb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(x||m)x=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null: +l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function qf(){var a=!0,b=this;this.debugEnabled=function(b){return A(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||E;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(b))}); +return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Wa(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ca("isecfld",b);return a}function eg(a){return a+""}function ta(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&& +(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function ld(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===fg||a===gg||a===hg)throw ca("isecff",b);}}function Hb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function ig(a,b){return"undefined"!==typeof a?a:b}function md(a,b){return"undefined"===typeof a?b:"undefined"=== +typeof b?a:a+b}function aa(a,b){var d,c;switch(a.type){case s.Program:d=!0;q(a.body,function(a){aa(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:aa(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:aa(a.left, +b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:aa(a.test,b);aa(a.alternate,b);aa(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1;a.toWatch=[a];break;case s.MemberExpression:aa(a.object,b);a.computed&&aa(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d= +a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];q(a.elements,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d= +!0;c=[];q(a.properties,function(a){aa(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1;a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function nd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:u}}function od(a){return a.type===s.Identifier||a.type===s.MemberExpression}function pd(a){if(1===a.body.length&&od(a.body[0].expression))return{type:s.AssignmentExpression, +left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function qd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function rd(a,b){this.astBuilder=a;this.$filter=b}function sd(a,b){this.astBuilder=a;this.$filter=b}function Ib(a){return"constructor"==a}function fc(a){return D(a.valueOf)?a.valueOf():jg.call(a)}function rf(){var a=V(),b=V(),d={"true":!0, +"false":!1,"null":null,undefined:u};this.addLiteral=function(a,b){d[a]=b};this.$get=["$filter",function(c){function e(d,e,g){var p,t,G;g=g||x;switch(typeof d){case "string":G=d=d.trim();var C=g?b:a;p=C[G];if(!p){":"===d.charAt(0)&&":"===d.charAt(1)&&(t=!0,d=d.substring(2));p=g?L:F;var K=new gc(p);p=(new hc(K,c,p)).parse(d);p.constant?p.$$watchDelegate=m:t?p.$$watchDelegate=p.literal?l:k:p.inputs&&(p.$$watchDelegate=h);g&&(p=f(p));C[G]=p}return n(p,e);case "function":return n(d,e);default:return n(E, +e)}}function f(a){function b(c,d,e,f){var g=x;x=!0;try{return a(c,d,e,f)}finally{x=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=f(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&& +d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f +a)for(b in l++,f)va.call(e,b)||(v--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1t&&(z=4-t,A[z]||(A[z]=[]),A[z].push({msg:D(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(H){f(H)}if(!(p=F.$$watchersCount&& +F.$$childHead||F!==this&&F.$$nextSibling))for(;F!==this&&!(p=F.$$nextSibling);)F=F.$parent}while(F=p);if((q||v.length)&&!t--)throw w.$$phase=null,d("infdig",b,A);}while(q||v.length);for(w.$$phase=null;u.length;)try{u.shift()()}catch(J){f(J)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===w&&h.$$applicationDestroyed();p(this,-this.$$watchersCount);for(var b in this.$$listenerCount)F(this,this.$$listenerCount[b],b);a&&a.$$childHead== +this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=E;this.$on=this.$watch=this.$watchGroup=function(){return E};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){w.$$phase|| +v.length||h.defer(function(){v.length&&w.$digest()});v.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){u.push(a)},$apply:function(a){try{n("$apply");try{return this.$eval(a)}finally{w.$$phase=null}}catch(b){f(b)}finally{try{w.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&t.push(b);a=g(a);r()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]= +0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,F(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=cb([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;lDa)throw ua("iequirks");var c=ia(ma);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b}, +c.valueOf=$a);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;q(ma,function(a,b){var d=N(b);c[fb("parse_as_"+d)]=function(b){return e(a,b)};c[fb("get_trusted_"+d)]=function(b){return f(a,b)};c[fb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function xf(){this.$get=["$window","$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState, +e=Y((/android (\d+)/.exec(N((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,m=!1,n=!1;if(l){for(var p in l)if(m=k.exec(p)){h=m[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in l);!e||m&&n||(m=y(l.webkitTransition),n=y(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"=== +a&&11>=Da)return!1;if(z(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ga(),vendorPrefix:h,transitions:m,animations:n,android:e}}]}function zf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;y(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;M(k)?k=k.filter(function(a){return a!==ac}):k===ac&&(k=null);return d.get(g, +S({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw lg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Af(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var c=ea.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+ +ud(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Ed&&(d=d.splice(0,Ed-1),b=c-1,c=1);return{d:d,e:b,i:c}}function tg(a,b,d,c){var e=a.d,f=e.length-a.i;b=z(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;fh;)k.unshift(0),h++;0=b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Jb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length-d)f+=d;0===f&&-12==d&&(f=12);return Jb(f,b,c,e)}}function lb(a,b,d){return function(c,e){var f=c["get"+a](),g=vb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Fd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Gd(a){return function(b){var d=Fd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Jb(b,a)}}function kc(a,b){return 0>=a.getFullYear()? +b.ERAS[0]:b.ERAS[1]}function zd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Y(b[9]+b[10]),g=Y(b[9]+b[11]));h.call(a,Y(b[1]),Y(b[2])-1,Y(b[3]));f=Y(b[4]||0)-f;g=Y(b[5]||0)-g;h=Y(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h= +[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;y(c)&&(c=ug.test(c)?Y(c):b(c));R(c)&&(c=new Date(c));if(!fa(c)||!isFinite(c.getTime()))return c;for(;d;)(l=vg.exec(d))?(h=cb(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=vc(f,m),c=Rb(c,f,!0));q(h,function(b){k=wg[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ng(){return function(a,b){z(b)&&(b=2);return db(a,b)}}function og(){return function(a,b,d){b=Infinity=== +Math.abs(Number(b))?Number(b):Y(b);if(isNaN(b))return a;R(a)&&(a=a.toString());if(!M(a)&&!y(a))return a;d=!d||isNaN(d)?0:Y(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Bd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=$a;if(D(b))h=b;else if(y(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h, +descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!za(a))throw O("orderBy")("notarray",a);M(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"=== +c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b|| +m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",l);if(Jd[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Mb(a,b){return function(d,c){var e,f;if(fa(d))return d;if(y(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length- +1)&&(d=d.substring(1,d.length-1));if(xg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c=x};g.$observe("min",function(a){x= +p(a);h.$validate()})}if(A(g.max)||g.ngMax){var r;h.$validators.max=function(a){return!n(a)||z(r)||d(a)<=r};g.$observe("max",function(a){r=p(a);h.$validate()})}}}function Kd(a,b,d,c){(c.$$hasNativeValidators=J(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?u:a})}function Ld(a,b,d,c,e){if(A(c)){a=a(c);if(!a.constant)throw ob("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c= +[],d=0;a:for(;d(?:<\/\1>|)$/,Ub=/<|&#?\w+;/,Jf=/<([\w:-]+)/,Kf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ha={option:[1,'"],thead:[1,"","
"],col:[2, +"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ha.optgroup=ha.option;ha.tbody=ha.tfoot=ha.colgroup=ha.caption=ha.thead;ha.th=ha.td;var Rf=Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Ra=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===P.readyState?setTimeout(b):(this.on("DOMContentLoaded",b),U(T).on("load",b))},toString:function(){var a= +[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?H(this[a]):H(this[this.length+a])},length:0,push:zg,sort:[].sort,splice:[].splice},Eb={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){Eb[N(a)]=a});var Sc={};q("input select option textarea button form details".split(" "),function(a){Sc[a]=!0});var $c={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Xb,removeData:gb, +hasData:function(a){for(var b in hb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/,Uf=/^[^\(]*\(\s*([^\)]*)\)/m,Ag=/,/,Bg=/^\s*(_?)(\S+?)\1\s*$/,Sf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ia=O("$injector");eb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw y(d)&&d||(d=a.name||Vf(a)),Ia("strictdi",d);b=Tc(a);q(b[1].split(Ag),function(a){a.replace(Bg,function(a,b,d){c.push(d)})})}a.$inject=c}}else M(a)? +(b=a.length-1,Sa(a[b],"fn"),c=a.slice(0,b)):Sa(a,"fn",!0);return c};var Pd=O("$animate"),Ye=function(){this.$get=E},Ze=function(){var a=new Ua,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=y(b)?b.split(" "):M(b)?b:[],q(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){q(b,function(b){var c=a.get(b);if(c){var d=Wf(b.attr("class")),e="",f="";q(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});q(b,function(a){e&&Cb(a, +e);f&&Bb(a,f)});a.remove(b)}});b.length=0}return{enabled:E,on:E,off:E,pin:E,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},We=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Pd("notcsel", +d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Pd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Nb[a]=!0});var Fg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens= +[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"=== +a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=A(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:s.BinaryExpression, +operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}: +this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=pa(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:s.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression", +this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:s.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression()); +return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]"); +return{type:s.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:s.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text, +this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1}, +expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:s.ThisExpression},$locals:{type:s.LocalsExpression}}};rd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};aa(c,d.$filter);var e="",f;this.stage="assign";if(f=pd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+ +this.generateFunction("assign","s,v,l");f=nd(c.body);d.stage="inputs";q(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject", +"ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Wa,ta,ld,eg,Hb,ig,md,a);this.state=this.stage=u;e.literal=qd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;q(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+ +"};"},filterPrefix:function(){var a=[],b=this;q(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,m;c=c||E;if(!f&&A(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d, +c,e,!0));else switch(a.type){case s.Program:q(a.body,function(b,c){k.recurse(b.expression,u,u,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case s.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case s.UnaryExpression:this.recurse(a.argument,u,u,function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case s.BinaryExpression:this.recurse(a.left,u,u,function(a){g=a});this.recurse(a.right,u,u,function(a){h=a});m="+"=== +a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case s.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage? +"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Wa(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Ib(a.name))&&k.addEnsureSafeObject(b);c(b); +break;case s.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,u,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Wa(a.property.name);e&& +1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Ib(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],q(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+ +l.join(",")+")",k.assign(b,m),c(b)):(h=k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);q(a.arguments,function(a){k.recurse(a,k.nextId(),u,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case s.AssignmentExpression:h= +this.nextId();g={};if(!od(a.left))throw ca("lval");this.recurse(a.left,u,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case s.ArrayExpression:l=[];q(a.elements,function(a){k.recurse(a,k.nextId(),u,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case s.ObjectExpression:l= +[];q(a.properties,function(a){k.recurse(a.value,k.nextId(),u,function(b){l.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+b)})});m="{"+l.join(",")+"}";this.assign(b,m);c(m);break;case s.ThisExpression:this.assign(b,"s");c("s");break;case s.LocalsExpression:this.assign(b,"l");c("l");break;case s.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+ +a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}"); +d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){return a+"."+b},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a), +";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g= +this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(y(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(R(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a, +b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;aa(c,d.$filter);var e,f;if(e=pd(c))f=this.recurse(e);e=nd(c.body);var g;e&&(g=[],q(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];q(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?E:1=== +c.body.length?h[0]:function(a,b){var c;q(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=qd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right), +this["binary"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Wa(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Ib(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Wa(a.property.name,f.expression), +e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],q(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var n=[],p=0;p":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f, +g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:u, +name:u,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:u;b&&ta(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m+="",Wa(m,e),c&&1!==c&&(Hb(l),l&&!l[m]&&(l[m]={})),n=l[m],ta(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Hb(g),g&&!g[b]&& +(g[b]={}));h=null!=g?g[b]:u;(d||Ib(b))&&ta(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(a,d);this.astCompiler=d.csp?new sd(this.ast,b):new rd(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var jg=Object.prototype.valueOf,ua=O("$sce"),ma={HTML:"html",CSS:"css",URL:"url", +RESOURCE_URL:"resourceUrl",JS:"js"},lg=O("$compile"),Z=P.createElement("a"),wd=sa(T.location.href);xd.$inject=["$document"];Jc.$inject=["$provide"];var Ed=22,Dd=".",jc="0";yd.$inject=["$locale"];Ad.$inject=["$locale"];var wg={yyyy:X("FullYear",4,0,!1,!0),yy:X("FullYear",2,0,!0,!0),y:X("FullYear",1,0,!1,!0),MMMM:lb("Month"),MMM:lb("Month",!0),MM:X("Month",2,1),M:X("Month",1,1),LLLL:lb("Month",!1,!0),dd:X("Date",2),d:X("Date",1),HH:X("Hours",2),H:X("Hours",1),hh:X("Hours",2,-12),h:X("Hours",1,-12), +mm:X("Minutes",2),m:X("Minutes",1),ss:X("Seconds",2),s:X("Seconds",1),sss:X("Milliseconds",3),EEEE:lb("Day"),EEE:lb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Jb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},vg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, +ug=/^\-?\d+$/;zd.$inject=["$locale"];var pg=da(N),qg=da(vb);Bd.$inject=["$parse"];var me=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ka.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),wb={};q(Eb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=ya("ng-"+b),e=d;"checked"===a&&(e=function(a, +b,e){e.ngModel!==e[c]&&d(a,b,e)});wb[c]=function(){return{restrict:"A",priority:100,link:e}}}});q($c,function(a,b){wb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(yg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});q(["src","srcset","href"],function(a){var b=ya("ng-"+a);wb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"=== +ka.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Da&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Kb={$addControl:E,$$renameControl:function(a,b){a.$name=b},$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E,$setSubmitted:E};Hd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Qd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||E}return{name:"form", +restrict:a?"EAC":"E",require:["form","^^?form"],controller:Hd,compile:function(d,f){d.addClass(Xa).addClass(pb);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var p=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",p,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",p,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var q=g?c(n.$name):E;g&& +(q(a,n),e.$observe(g,function(b){n.$name!==b&&(q(a,u),n.$$parentForm.$$renameControl(n,b),q=c(n.$name),q(a,n))}));d.on("$destroy",function(){n.$$parentForm.$removeControl(n);q(a,u);S(n,Kb)})}}}}}]},ne=Qd(),Ae=Qd(!0),xg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Gg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Hg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i, +Ig=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Rd=/^(\d{4,})-(\d{2})-(\d{2})$/,Sd=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,nc=/^(\d{4,})-W(\d\d)$/,Td=/^(\d{4,})-(\d\d)$/,Ud=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Jd=V();q(["date","datetime-local","month","time","week"],function(a){Jd[a]=!0});var Vd={text:function(a,b,d,c,e,f){mb(a,b,d,c,e,f);lc(c)},date:nb("date",Rd,Mb(Rd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":nb("datetimelocal",Sd,Mb(Sd,"yyyy MM dd HH mm ss sss".split(" ")), +"yyyy-MM-ddTHH:mm:ss.sss"),time:nb("time",Ud,Mb(Ud,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:nb("week",nc,function(a,b){if(fa(a))return a;if(y(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Fd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:nb("month",Td,Mb(Td,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Kd(a,b,d,c);mb(a,b,d,c,e,f);c.$$parserName= +"number";c.$parsers.push(function(a){return c.$isEmpty(a)?null:Ig.test(a)?parseFloat(a):u});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!R(a))throw ob("numfmt",a);a=a.toString()}return a});if(A(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||z(g)||a>=g};d.$observe("min",function(a){A(a)&&!R(a)&&(a=parseFloat(a,10));g=R(a)&&!isNaN(a)?a:u;c.$validate()})}if(A(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||z(h)||a<=h};d.$observe("max",function(a){A(a)&& +!R(a)&&(a=parseFloat(a,10));h=R(a)&&!isNaN(a)?a:u;c.$validate()})}},url:function(a,b,d,c,e,f){mb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Gg.test(d)}},email:function(a,b,d,c,e,f){mb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Hg.test(d)}},radio:function(a,b,d,c){z(d.name)&&b.attr("name",++qb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render= +function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Ld(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Ld(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return na(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:E,button:E,submit:E,reset:E,file:E},Dc=["$browser", +"$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Vd[N(g.type)]||Vd.text)(e,f,g,h[0],b,a,d,c)}}}}],Jg=/^(true|false|\d+)$/,Se=function(){return{restrict:"A",priority:100,compile:function(a,b){return Jg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},se=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b); +return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=z(a)?"":a})}}}}],ue=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=z(a)?"":a})}}}}],te=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g= +b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Re=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ve=mc("",!0),xe=mc("Odd",0),we=mc("Even",1),ye=Na({compile:function(a,b){b.$set("ngCloak",u);a.removeClass("ng-cloak")}}),ze=[function(){return{restrict:"A",scope:!0,controller:"@", +priority:500}}],Ic={},Kg={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=ya("ng-"+a);Ic[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Kg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Ce=["$animate","$compile",function(a, +b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=ub(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],De=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0, +transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,p){var q=0,s,x,r,w=function(){x&&(x.remove(),x=null);s&&(s.$destroy(),s=null);r&&(d.leave(r).then(function(){x=null}),x=r,r=null)};c.$watch(f,function(f){var m=function(){!A(h)||h&&!c.$eval(h)||b()},t=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&t===q){var b=c.$new();n.template=a;a=p(b,function(a){w();d.enter(a,null,e).then(m)});s=b;r=a;s.$emit("$includeContentLoaded", +f);c.$eval(g)}},function(){c.$$destroyed||t!==q||(w(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(w(),n.template=null)})}}}}],Ue=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ka.call(d[0]).match(/SVG/)?(d.empty(),a(Lc(e.template,P).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Ee=Na({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}), +Qe=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?W(e):e;c.$parsers.push(function(a){if(!z(a)){var b=[];a&&q(a.split(g),function(a){a&&b.push(f?W(a):a)});return b}});c.$formatters.push(function(a){return M(a)?a.join(e):u});c.$isEmpty=function(a){return!a||!a.length}}}},pb="ng-valid",Md="ng-invalid",Xa="ng-pristine",Lb="ng-dirty",Od="ng-pending",ob=O("ngModel"),Lg=["$scope","$exceptionHandler","$attrs", +"$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=u;this.$name=l(d.name||"",!1)(a);this.$$parentForm=Kb;var m=e(d.ngModel), +n=m.assign,p=m,s=n,y=null,x,r=this;this.$$setOptions=function(a){if((r.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");p=function(a){var c=m(a);D(c)&&(c=b(a));return c};s=function(a,b){D(m(a))?f(a,{$$$p:b}):n(a,b)}}else if(!m.assign)throw ob("nonassign",d.ngModel,wa(c));};this.$render=E;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){r.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),f.addClass(c,"ng-empty")):(f.removeClass(c, +"ng-empty"),f.addClass(c,"ng-not-empty"))};var w=0;Id({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){r.$dirty=!1;r.$pristine=!0;f.removeClass(c,Lb);f.addClass(c,Xa)};this.$setDirty=function(){r.$dirty=!0;r.$pristine=!1;f.removeClass(c,Xa);f.addClass(c,Lb);r.$$parentForm.$setDirty()};this.$setUntouched=function(){r.$touched=!1;r.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};this.$setTouched=function(){r.$touched= +!0;r.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(y);r.$viewValue=r.$$lastCommittedViewValue;r.$render()};this.$validate=function(){if(!R(r.$modelValue)||!isNaN(r.$modelValue)){var a=r.$$rawModelValue,b=r.$valid,c=r.$modelValue,d=r.$options&&r.$options.allowInvalid;r.$$runValidators(a,r.$$lastCommittedViewValue,function(e){d||b===e||(r.$modelValue=e?a:u,r.$modelValue!==c&&r.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c= +!0;q(r.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(q(r.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;q(r.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!D(h.then))throw ob("nopromise",h);f(g,u);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},E):g(!0)}function f(a,b){h===w&&r.$setValidity(a,b)}function g(a){h===w&&c(a)}w++;var h=w;(function(){var a=r.$$parserName||"parse";if(z(x))f(a,null); +else return x||(q(r.$validators,function(a,b){f(b,null)}),q(r.$asyncValidators,function(a,b){f(b,null)})),f(a,x),x;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=r.$viewValue;g.cancel(y);if(r.$$lastCommittedViewValue!==a||""===a&&r.$$hasNativeValidators)r.$$updateEmptyClasses(a),r.$$lastCommittedViewValue=a,r.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=r.$$lastCommittedViewValue;if(x=z(b)?u:!0)for(var c=0;ce||c.$isEmpty(b)|| +b.length<=e}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=Y(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};T.angular.bootstrap?T.console&&console.log("WARNING: Tried to load angular more than once."):(he(),je(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM", +"PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),WEEKENDRANGE:[5, +6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a, +c){var e=a|0,f=c;u===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),H(P).ready(function(){de(P,yc)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +//# sourceMappingURL=angular.min.js.map diff --git a/STM32F746G Discovery board/html/js/app.js b/STM32F746G Discovery board/html/js/app.js new file mode 100644 index 0000000..e9497c3 --- /dev/null +++ b/STM32F746G Discovery board/html/js/app.js @@ -0,0 +1,7 @@ +$(document).foundation() + +//$(document).bind("contextmenu",function(){ return false; }); + +var AupCourse = angular.module('AupCourse', [ + 'AupControllers' +]); \ No newline at end of file diff --git a/STM32F746G Discovery board/html/js/config.js b/STM32F746G Discovery board/html/js/config.js new file mode 100644 index 0000000..99ebc0d --- /dev/null +++ b/STM32F746G Discovery board/html/js/config.js @@ -0,0 +1,198 @@ +var index = +{ + "titles": { + "title": "Arm Education Kit", + "libname": "STM32F7-Discovery Board Edition", + "libtype": "Arm-based Digital Signal Processing Education Kit" + }, + "headers": [ + { + "name": "Lecture Presentation", + "column": "modules" + }, + { + "name": "Lab Exercises", + "column": "exercises" + } + ], + "modules": [ + [ + { + "column": "modules", + "name": "Module 1: Discrete-Time Signals and Systems - Convolution and Correlation", + "link": "contents/Module_1/ConvolutionAndCorrelation_lec.pptx" + }, + { + "column": "exercises", + "name": "Getting Started and Project Source Files", + "link": "contents/Module_1/Lab/Getting_Started.zip" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_1/Lab/IntroductionLab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Lab Exercise MATLAB data files", + "link": "contents/Module_1/Lab/IntroductionLab/Matlab_Lab_Files.zip" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_1/Lab/IntroductionLab/Solution.zip" + } + ], + [ + { + "column": "modules", + "name": "Module 2: Sampling, Reconstruction and Aliasing - Review of Complex Exponentials and Fourier Analysis", + "link": "contents/Module_2/SamplingReconstructionAndAliasing1_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 3: Sampling, Reconstruction and Aliasing - Time and Frequency Domains", + "link": "contents/Module_3/SamplingReconstructionAndAliasing2_lec.pptx" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_3/Lab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_3/Lab/Solution.zip" + } + + ], + [ + { + "column": "modules", + "name": "Module 4: Time and Frequency Domains - z-transform", + "link": "contents/Module_4/Z-Transform_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 5: FIR Filters - Moving Average Filters", + "link": "contents/Module_5/FIR1_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 6: FIR Filters - Window Method of Design", + "link": "contents/Module_6/FIR2_lec.pptx" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_6/Lab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Lab Exercise files", + "link": "contents/Module_6/Lab/Lab_Files.zip" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_6/Lab/Solution.zip" + } + + ], + [ + { + "column": "modules", + "name": "Module 7: IIR Filters - Impulse Invariant and Bilinear Transform Methods of Design", + "link": "contents/Module_7/IIR1_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 8: IIR Filters - Simple IIR Filter Design Example", + "link": "contents/Module_8/IIR2_lec.pptx" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_8/Lab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Lab Exercise files", + "link": "contents/Module_8/Lab/Lab_Files.zip" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_8/Lab/Solution.zip" + } + ], + [ + { + "column": "modules", + "name": "Module 9: Fast Fourier Transform - Review of Fourier Analysis", + "link": "contents/Module_9/FFT1_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 10: Fast Fourier Transform - Derivation of Radix-2 FFT", + "link": "contents/Module_10/FFT2_lec.pptx" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_10/Lab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_10/Lab/Solution.zip" + } + ], + [ + { + "column": "modules", + "name": "Module 11: Adaptive Filters - Prediction and System Identification", + "link": "contents/Module_11/AdaptiveFilters1_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 12: Adaptive Filters - Equalisation and Noise Cancellation", + "link": "contents/Module_12/AdaptiveFilters2_lec.pptx" + } + ], + [ + { + "column": "modules", + "name": "Module 13: Adaptive Filters - Adaptive FIR Filter and the LMS Algorithm", + "link": "contents/Module_13/AdaptiveFilters3_lec.pptx" + }, + { + "column": "exercises", + "name": "Lab Manual", + "link": "contents/Module_13/Lab/DSP_Lab_Manual.docx" + }, + { + "column": "exercises", + "name": "Lab Exercise file", + "link": "contents/Module_13/Lab/Lab_File.zip" + }, + { + "column": "exercises", + "name": "Solutions", + "link": "contents/Module_13/Lab/Solution.zip" + } + ] + ] +} \ No newline at end of file diff --git a/STM32F746G Discovery board/html/js/controllers.js b/STM32F746G Discovery board/html/js/controllers.js new file mode 100644 index 0000000..d7ede36 --- /dev/null +++ b/STM32F746G Discovery board/html/js/controllers.js @@ -0,0 +1,17 @@ +var AupControllers = angular.module('AupControllers', []); + +AupControllers.controller('IndexController', ['$scope', function($scope) { + $scope.title = index.titles.title; + $scope.libname = index.titles.libname; + $scope.libtype = index.titles.libtype; + + console.log("Number of headers: "+ index.headers.length); + $scope.headers = index.headers; + $scope.modules = index.modules; + + console.log("Number of modules: "+ index.modules.length); + for(i=0; i1?i[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function i(t){return/true/.test(t)?!0:/false/.test(t)?!1:isNaN(1*t)?t:parseFloat(t)}function n(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var s="6.2.0",o={version:s,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,i){var s=i||e(t),o=n(s);this._plugins[o]=this[s]=t},registerPlugin:function(t,i){var s=i?n(i):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,s),t.$element.attr("data-"+s)||t.$element.attr("data-"+s,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+s),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var i=n(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+i).removeData("zfPlugin").trigger("destroyed.zf."+i);for(var s in t)t[s]=null},reInit:function(e){var i=e instanceof t;try{if(i)e.each(function(){t(this).data("zfPlugin")._init()});else{var s=typeof e,o=this,a={object:function(e){e.forEach(function(e){e=n(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=n(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(o._plugins))}};a[s](e)}}catch(r){console.error(r)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,n){"undefined"==typeof n?n=Object.keys(this._plugins):"string"==typeof n&&(n=[n]);var s=this;t.each(n,function(n,o){var a=s._plugins[o],r=t(e).find("[data-"+o+"]").addBack("[data-"+o+"]");r.each(function(){var e=t(this),n={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+o+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var s=t.split(":").map(function(t){return t.trim()});s[0]&&(n[s[0]]=i(s[1]))})}try{e.data("zfPlugin",new a(t(this),n))}catch(s){console.error(s)}finally{return}})})},getFnName:e,transitionend:function(t){var e,i={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},n=document.createElement("div");for(var s in i)"undefined"!=typeof n.style[s]&&(e=i[s]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};o.util={throttle:function(t,e){var i=null;return function(){var n=this,s=arguments;null===i&&(i=setTimeout(function(){t.apply(n,s),i=null},e))}}};var a=function(i){var n=typeof i,s=t("meta.foundation-mq"),a=t(".no-js");if(s.length||t('').appendTo(document.head),a.length&&a.removeClass("no-js"),"undefined"===n)o.MediaQuery._init(),o.reflow(this);else{if("string"!==n)throw new TypeError("We're sorry, "+n+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var r=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[i])throw new ReferenceError("We're sorry, '"+i+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[i].apply(l,r):this.each(function(e,n){l[i].apply(t(n).data("zfPlugin"),r)})}return this};window.Foundation=o,t.fn.foundation=a,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;eo?s=window.requestAnimationFrame(n,e):(window.cancelAnimationFrame(s),e.trigger("finished.zf.animate",[e]).triggerHandler("finished.zf.animate",[e]))}var s,o,a=null;s=window.requestAnimationFrame(n)}function i(e,i,o,a){function r(){e||i.hide(),l(),a&&a.apply(i)}function l(){i[0].style.transitionDuration=0,i.removeClass(u+" "+d+" "+o)}if(i=t(i).eq(0),i.length){var u=e?n[0]:n[1],d=e?s[0]:s[1];l(),i.addClass(o).css("transition","none"),requestAnimationFrame(function(){i.addClass(u),e&&i.show()}),requestAnimationFrame(function(){i[0].offsetWidth,i.css("transition","").addClass(d)}),i.one(Foundation.transitionend(i),r)}}var n=["mui-enter","mui-leave"],s=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){i(!0,t,e,n)},animateOut:function(t,e,n){i(!1,t,e,n)}};Foundation.Move=e,Foundation.Motion=o}(jQuery),!function(t){var e={Feather:function(e){var i=arguments.length<=1||void 0===arguments[1]?"zf":arguments[1];e.attr("role","menubar");var n=e.find("li").attr({role:"menuitem"}),s="is-"+i+"-submenu",o=s+"-item",a="is-"+i+"-submenu-parent";e.find("a:first").attr("tabindex",0),n.each(function(){var e=t(this),i=e.children("ul");i.length&&(e.addClass(a).attr({"aria-haspopup":!0,"aria-expanded":!1,"aria-label":e.children("a:first").text()}),i.addClass("submenu "+s).attr({"data-submenu":"","aria-hidden":!0,role:"menu"})),e.parent("[data-submenu]").length&&e.addClass("is-submenu-item "+o)})},Burn:function(t,e){var i=(t.find("li").removeAttr("tabindex"),"is-"+e+"-submenu"),n=i+"-item",s="is-"+e+"-submenu-parent";t.find("*").removeClass(i+" "+n+" "+s+" is-submenu-item submenu is-active").removeAttr("data-submenu").css("display","")}};Foundation.Nest=e}(jQuery),!function(t){function e(t,e,n,s){var o,a,r,l,u=i(t);if(e){var d=i(e);a=u.offset.top+u.height<=d.height+d.offset.top,o=u.offset.top>=d.offset.top,r=u.offset.left>=d.offset.left,l=u.offset.left+u.width<=d.width}else a=u.offset.top+u.height<=u.windowDims.height+u.windowDims.offset.top,o=u.offset.top>=u.windowDims.offset.top,r=u.offset.left>=u.windowDims.offset.left,l=u.offset.left+u.width<=u.windowDims.width;var h=[a,o,r,l];return n?r===l==!0:s?o===a==!0:-1===h.indexOf(!1)}function i(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var i=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),s=document.body.getBoundingClientRect(),o=window.pageYOffset,a=window.pageXOffset;return{width:i.width,height:i.height,offset:{top:i.top+o,left:i.left+a},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+a}},windowDims:{width:s.width,height:s.height,offset:{top:o,left:a}}}}function n(t,e,n,s,o,a){var r=i(t),l=e?i(e):null;switch(n){case"top":return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top-(r.height+s)};case"left":return{left:l.offset.left-(r.width+o),top:l.offset.top};case"right":return{left:l.offset.left+l.width+o,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-r.width/2,top:l.offset.top-(r.height+s)};case"center bottom":return{left:a?o:l.offset.left+l.width/2-r.width/2,top:l.offset.top+l.height+s};case"center left":return{left:l.offset.left-(r.width+o),top:l.offset.top+l.height/2-r.height/2};case"center right":return{left:l.offset.left+l.width+o+1,top:l.offset.top+l.height/2-r.height/2};case"center":return{left:r.windowDims.offset.left+r.windowDims.width/2-r.width/2,top:r.windowDims.offset.top+r.windowDims.height/2-r.height/2};case"reveal":return{left:(r.windowDims.width-r.width)/2,top:r.windowDims.offset.top+s};case"reveal full":return{left:r.windowDims.offset.left,top:r.windowDims.offset.top};default:return{left:Foundation.rtl()?l.offset.left-r.width+l.width:l.offset.left,top:l.offset.top+l.height+s}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:i,GetOffsets:n}}(jQuery),!function(t){function e(){o(),n(),s(),i()}function i(e){var i=t("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(e&&("string"==typeof e?n.push(e):"object"==typeof e&&"string"==typeof e[0]?n.concat(e):console.error("Plugin names must be strings")),i.length){var s=n.map(function(t){return"closeme.zf."+t}).join(" ");t(window).off(s).on(s,function(e,i){var n=e.namespace.split(".")[0],s=t("[data-"+n+"]").not('[data-yeti-box="'+i+'"]');s.each(function(){var e=t(this);e.triggerHandler("close.zf.trigger",[e])})})}}function n(e){var i=void 0,n=t("[data-resize]");n.length&&t(window).off("resize.zf.trigger").on("resize.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("resizeme.zf.trigger")}),n.attr("data-events","resize")},e||10)})}function s(e){var i=void 0,n=t("[data-scroll]");n.length&&t(window).off("scroll.zf.trigger").on("scroll.zf.trigger",function(s){i&&clearTimeout(i),i=setTimeout(function(){a||n.each(function(){t(this).triggerHandler("scrollme.zf.trigger")}),n.attr("data-events","scroll")},e||10)})}function o(){if(!a)return!1;var e=document.querySelectorAll("[data-resize], [data-scroll], [data-mutate]"),i=function(e){var i=t(e[0].target);switch(i.attr("data-events")){case"resize":i.triggerHandler("resizeme.zf.trigger",[i]);break;case"scroll":i.triggerHandler("scrollme.zf.trigger",[i,window.pageYOffset]);break;default:return!1}};if(e.length)for(var n=0;n<=e.length-1;n++){var s=new a(i);s.observe(e[n],{attributes:!0,childList:!1,characterData:!1,subtree:!1,attributeFilter:["data-events"]})}}var a=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e=l?a:l,t.data("paused",!1),n=Date.now(),s=setTimeout(function(){e.infinite&&o.restart(),i()},l),t.trigger("timerstart.zf."+r)},this.pause=function(){this.isPaused=!0,clearTimeout(s),t.data("paused",!0);var e=Date.now();l-=e-n,t.trigger("timerpaused.zf."+r)}}function i(e,i){function n(){s--,0===s&&i()}var s=e.length;0===s&&i(),e.each(function(){this.complete?n():"undefined"!=typeof this.naturalWidth&&this.naturalWidth>0?n():t(this).one("load",function(){n()})})}Foundation.Timer=e,Foundation.onImagesLoaded=i}(jQuery),function(t){function e(){this.removeEventListener("touchmove",i),this.removeEventListener("touchend",e),u=!1}function i(i){if(t.spotSwipe.preventDefault&&i.preventDefault(),u){var n,s=i.touches[0].pageX,a=(i.touches[0].pageY,o-s);l=(new Date).getTime()-r,Math.abs(a)>=t.spotSwipe.moveThreshold&&l<=t.spotSwipe.timeThreshold&&(n=a>0?"left":"right"),n&&(i.preventDefault(),e.call(this),t(this).trigger("swipe",n).trigger("swipe"+n))}}function n(t){1==t.touches.length&&(o=t.touches[0].pageX,a=t.touches[0].pageY,u=!0,r=(new Date).getTime(),this.addEventListener("touchmove",i,!1),this.addEventListener("touchend",e,!1))}function s(){this.addEventListener&&this.addEventListener("touchstart",n,!1)}t.spotSwipe={version:"1.0.0",enabled:"ontouchstart"in document.documentElement,preventDefault:!1,moveThreshold:75,timeThreshold:200};var o,a,r,l,u=!1;t.event.special.swipe={setup:s},t.each(["left","up","down","right"],function(){t.event.special["swipe"+this]={setup:function(){t(this).on("swipe",t.noop)}}})}(jQuery),!function(t){t.fn.addTouch=function(){this.each(function(i,n){t(n).bind("touchstart touchmove touchend touchcancel",function(){e(event)})});var e=function(t){var e,i=t.changedTouches,n=i[0],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"},o=s[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=window.MouseEvent(o,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent"),e.initMouseEvent(o,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null)),n.target.dispatchEvent(e)}}}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i'),n.data("savedHref",n.attr("href")).removeAttr("href"),i.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"menu"}),e._events(i)}),this.$submenus.each(function(){var i=t(this),n=i.find(".js-drilldown-back");n.length||i.prepend(e.options.backButton),e._back(i)}),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=t(this.options.wrapper).addClass("is-drilldown").css(this._getMaxDims()),this.$element.wrap(this.$wrapper))}},{key:"_events",value:function(e){var i=this;e.off("click.zf.drilldown").on("click.zf.drilldown",function(n){if(t(n.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&(n.stopImmediatePropagation(),n.preventDefault()),i._show(e),i.options.closeOnClick){var s=t("body").not(i.$wrapper);s.off(".zf.drilldown").on("click.zf.drilldown",function(t){t.preventDefault(),i._hideAll(),s.off(".zf.drilldown")})}})}},{key:"_keyboardEvents",value:function(){var e=this;this.$menuItems.add(this.$element.find(".js-drilldown-back")).on("keydown.zf.drilldown",function(i){var n,s,o=t(this),a=o.parent("ul").children("li");a.each(function(e){return t(this).is(o)?(n=a.eq(Math.max(0,e-1)),void(s=a.eq(Math.min(e+1,a.length-1)))):void 0}),Foundation.Keyboard.handleKey(i,"Drilldown",{next:function(){o.is(e.$submenuAnchors)&&(e._show(o),o.on(Foundation.transitionend(o),function(){o.find("ul li").filter(e.$menuItems).first().focus()}))},previous:function(){e._hide(o.parent("ul")),o.parent("ul").on(Foundation.transitionend(o),function(){setTimeout(function(){o.parent("ul").parent("li").focus()},1)})},up:function(){n.focus()},down:function(){s.focus()},close:function(){e._back()},open:function(){o.is(e.$menuItems)?o.is(e.$submenuAnchors)&&(e._show(o),setTimeout(function(){o.find("ul li").filter(e.$menuItems).first().focus()},1)):(e._hide(o.parent("ul")),setTimeout(function(){o.parent("ul").parent("li").focus()},1))},handled:function(){i.preventDefault(),i.stopImmediatePropagation()}})})}},{key:"_hideAll",value:function(){var t=this.$element.find(".is-drilldown-submenu.is-active").addClass("is-closing");t.one(Foundation.transitionend(t),function(e){t.removeClass("is-active is-closing")}),this.$element.trigger("closed.zf.drilldown")}},{key:"_back",value:function(t){var e=this;t.off("click.zf.drilldown"),t.children(".js-drilldown-back").on("click.zf.drilldown",function(i){i.stopImmediatePropagation(),e._hide(t)})}},{key:"_menuLinkEvents",value:function(){var t=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",function(e){setTimeout(function(){t._hideAll()},0)})}},{key:"_show",value:function(t){t.children("[data-submenu]").addClass("is-active"),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){t.addClass("is-closing").one(Foundation.transitionend(t),function(){t.removeClass("is-active is-closing"),t.blur()}),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var e=0,i={};return this.$submenus.add(this.$element).each(function(){var i=t(this).children("li").length;e=i>e?i:e}),i["min-height"]=e*this.$menuItems[0].getBoundingClientRect().height+"px",i["max-width"]=this.$element[0].getBoundingClientRect().width+"px",i}},{key:"destroy",value:function(){this._hideAll(),Foundation.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role").off(".zf.drilldown").end().off("zf.drilldown"),this.$element.find("a").each(function(){var e=t(this);e.data("savedHref")&&e.attr("href",e.data("savedHref")).removeData("savedHref")}),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={backButton:'
  • Back
  • ',wrapper:"
    ",parentLink:!1,closeOnClick:!1},Foundation.plugin(e,"Drilldown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i-1&&this.usedPositions.indexOf("left")<0?this.$element.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.$element.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.$element.removeClass(t):this.$element.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){if("false"===this.$anchor.attr("aria-expanded"))return!1;var t=this.getPositionClass(),e=Foundation.Box.GetDimensions(this.$element),i=(Foundation.Box.GetDimensions(this.$anchor),"left"===t?"left":"right"===t?"left":"top"),n="top"===i?"height":"width";"height"===n?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.$element))return this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:e.windowDims.width-2*this.options.hOffset,height:"auto"}),this.classChanged=!0,!1;for(this.$element.offset(Foundation.Box.GetOffsets(this.$element,this.$anchor,t,this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.$element,!1,!0)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"_events",value:function(){var e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":this._setPosition.bind(this)}),this.options.hover&&(this.$anchor.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.open(),e.$anchor.data("hover",!0)},e.options.hoverDelay)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)}),this.options.hoverPane&&this.$element.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(e.timeout)}).on("mouseleave.zf.dropdown",function(){clearTimeout(e.timeout),e.timeout=setTimeout(function(){e.close(),e.$anchor.data("hover",!1)},e.options.hoverDelay)})),this.$anchor.add(this.$element).on("keydown.zf.dropdown",function(i){var n=t(this),s=Foundation.Keyboard.findFocusable(e.$element);Foundation.Keyboard.handleKey(i,"Dropdown",{tab_forward:function(){e.$element.find(":focus").is(s.eq(-1))&&(e.options.trapFocus?(s.eq(0).focus(),i.preventDefault()):e.close())},tab_backward:function(){(e.$element.find(":focus").is(s.eq(0))||e.$element.is(":focus"))&&(e.options.trapFocus?(s.eq(-1).focus(),i.preventDefault()):e.close())},open:function(){n.is(e.$anchor)&&(e.open(),e.$element.attr("tabindex",-1).focus(),i.preventDefault())},close:function(){e.close(),e.$anchor.focus()}})})}},{key:"_addBodyHandler",value:function(){var e=t(document.body).not(this.$element),i=this;e.off("click.zf.dropdown").on("click.zf.dropdown",function(t){i.$anchor.is(t.target)||i.$anchor.find(t.target).length||i.$element.find(t.target).length||(i.close(),e.off("click.zf.dropdown"))})}},{key:"open",value:function(){if(this.$element.trigger("closeme.zf.dropdown",this.$element.attr("id")),this.$anchor.addClass("hover").attr({"aria-expanded":!0}),this._setPosition(),this.$element.addClass("is-open").attr({"aria-hidden":!1}),this.options.autoFocus){var t=Foundation.Keyboard.findFocusable(this.$element);t.length&&t.eq(0).focus()}this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdown",[this.$element])}},{key:"close",value:function(){if(!this.$element.hasClass("is-open"))return!1;if(this.$element.removeClass("is-open").attr({"aria-hidden":!0}),this.$anchor.removeClass("hover").attr("aria-expanded",!1),this.classChanged){var t=this.getPositionClass();t&&this.$element.removeClass(t),this.$element.addClass(this.options.positionClass).css({height:"",width:""}),this.classChanged=!1,this.counter=4,this.usedPositions.length=0}this.$element.trigger("hide.zf.dropdown",[this.$element])}},{key:"toggle",value:function(){if(this.$element.hasClass("is-open")){if(this.$anchor.data("hover"))return;this.close()}else this.open()}},{key:"destroy",value:function(){this.$element.off(".zf.trigger").hide(),this.$anchor.off(".zf.dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={hoverDelay:250,hover:!1,hoverPane:!1,vOffset:1,hOffset:1,positionClass:"",trapFocus:!1,autoFocus:!1,closeOnClick:!1},Foundation.plugin(e,"Dropdown")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i-1,r=a?e.$tabs:o.siblings("li").add(o);r.each(function(e){return t(this).is(o)?(n=r.eq(e-1),void(s=r.eq(e+1))):void 0});var l=function(){o.is(":last-child")||s.children("a:first").focus()},u=function(){n.children("a:first").focus()},d=function(){var t=o.children("ul.is-dropdown-submenu");t.length&&(e._show(t),o.find("li > a:first").focus())},h=function(){var t=o.parent("ul").parent("li");t.children("a:first").focus(),e._hide(t)},c={open:d,close:function(){e._hide(e.$element),e.$menuItems.find("a:first").focus()},handled:function(){i.preventDefault(),i.stopImmediatePropagation()}};a?e.vertical?"left"===e.options.alignment?t.extend(c,{down:l,up:u,next:d,previous:h}):t.extend(c,{down:l,up:u,next:h,previous:d}):t.extend(c,{next:l,previous:u,down:d,up:h}):"left"===e.options.alignment?t.extend(c,{next:d,previous:h,down:l,up:u}):t.extend(c,{next:h,previous:d,down:l,up:u}),Foundation.Keyboard.handleKey(i,"DropdownMenu",c)})}},{key:"_addBodyHandler",value:function(){var e=t(document.body),i=this;e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu").on("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu",function(t){var n=i.$element.find(t.target);n.length||(i._hide(),e.off("mouseup.zf.dropdownmenu touchend.zf.dropdownmenu"))})}},{key:"_show",value:function(e){var i=this.$tabs.index(this.$tabs.filter(function(i,n){return t(n).find(e).length>0})),n=e.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(n,i),e.css("visibility","hidden").addClass("js-dropdown-active").attr({"aria-hidden":!1}).parent("li.is-dropdown-submenu-parent").addClass("is-active").attr({"aria-expanded":!0});var s=Foundation.Box.ImNotTouchingYou(e,null,!0);if(!s){var o="left"===this.options.alignment?"-right":"-left",a=e.parent(".is-dropdown-submenu-parent");a.removeClass("opens"+o).addClass("opens-"+this.options.alignment),s=Foundation.Box.ImNotTouchingYou(e,null,!0),s||a.removeClass("opens-"+this.options.alignment).addClass("opens-inner"),this.changed=!0}e.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownmenu",[e])}},{key:"_hide",value:function(t,e){var i;i=t&&t.length?t:void 0!==e?this.$tabs.not(function(t,i){return t===e}):this.$element;var n=i.hasClass("is-active")||i.find(".is-active").length>0;if(n){if(i.find("li.is-active").add(i).attr({"aria-expanded":!1,"data-is-click":!1}).removeClass("is-active"),i.find("ul.js-dropdown-active").attr({"aria-hidden":!0}).removeClass("js-dropdown-active"),this.changed||i.find("opens-inner").length){var s="left"===this.options.alignment?"right":"left";i.find("li.is-dropdown-submenu-parent").add(i).removeClass("opens-inner opens-"+this.options.alignment).addClass("opens-"+s),this.changed=!1}this.$element.trigger("hide.zf.dropdownmenu",[i])}}},{key:"destroy",value:function(){this.$menuItems.off(".zf.dropdownmenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),t(document.body).off(".zf.dropdownmenu"),Foundation.Nest.Burn(this.$element,"dropdown"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableHover:!1,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"left",closeOnClick:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0},Foundation.plugin(e,"DropdownMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i0,this.isNested=this.$element.parentsUntil(document.body,"[data-equalizer]").length>0,this.isOn=!1;var n,s=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),t(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&n===!1||void 0===n)&&(s.length?Foundation.onImagesLoaded(s,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off(".zf.equalizer resizeme.zf.trigger")}},{key:"_events",value:function(){var t=this;this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",function(e){e.target!==t.$element[0]&&t._reflow()}):this.$element.on("resizeme.zf.trigger",this._reflow.bind(this)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!Foundation.MediaQuery.atLeast(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){return!this.options.equalizeOnStack&&this._isStacked()?(this.$watched.css("height","auto"),!1):void(this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this)))}},{key:"_isStacked",value:function(){return this.$watched[0].offsetTop!==this.$watched[1].offsetTop}},{key:"getHeights",value:function(t){for(var e=[],i=0,n=this.$watched.length;n>i;i++)this.$watched[i].style.height="auto",e.push(this.$watched[i].offsetHeight);t(e)}},{key:"getHeightsByRow",value:function(e){var i=this.$watched.first().offset().top,n=[],s=0;n[s]=[];for(var o=0,a=this.$watched.length;a>o;o++){this.$watched[o].style.height="auto";var r=t(this.$watched[o]).offset().top;r!=i&&(s++,n[s]=[],i=r),n[s].push([this.$watched[o],this.$watched[o].offsetHeight])}for(var l=0,u=n.length;u>l;l++){var d=t(n[l]).map(function(){return this[1]}).get(),h=Math.max.apply(null,d);n[l].push(h)}e(n)}},{key:"applyHeight",value:function(t){var e=Math.max.apply(null,t);this.$element.trigger("preequalized.zf.equalizer"),this.$watched.css("height",e),this.$element.trigger("postequalized.zf.equalizer")}},{key:"applyHeightByRow",value:function(e){this.$element.trigger("preequalized.zf.equalizer");for(var i=0,n=e.length;n>i;i++){var s=e[i].length,o=e[i][s-1];if(2>=s)t(e[i][0][0]).css({height:"auto"});else{this.$element.trigger("preequalizedrow.zf.equalizer");for(var a=0,r=s-1;r>a;a++)t(e[i][a][0]).css({height:o});this.$element.trigger("postequalizedrow.zf.equalizer")}}this.$element.trigger("postequalized.zf.equalizer")}},{key:"destroy",value:function(){this._pauseEvents(),this.$watched.css("height","auto"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={equalizeOnStack:!0,equalizeByRow:!1,equalizeOn:""},Foundation.plugin(e,"Equalizer")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i=t:t-n.options.threshold<=e});t=s.length?s.length-1:0}if(this.$active.removeClass(this.options.activeClass),this.$active=this.$links.eq(t).addClass(this.options.activeClass),this.options.deepLinking){var o=this.$active[0].getAttribute("href");window.history.pushState?window.history.pushState(null,null,o):window.location.hash=o}this.scrollPos=e,this.$element.trigger("update.zf.magellan",[this.$active])}},{key:"destroy",value:function(){if(this.$element.off(".zf.trigger .zf.magellan").find("."+this.options.activeClass).removeClass(this.options.activeClass),this.options.deepLinking){var t=this.$active[0].getAttribute("href");window.location.hash.replace(t,"")}Foundation.unregisterPlugin(this)}}]),e}();e.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"active",deepLinking:!1,barOffset:0},Foundation.plugin(e,"Magellan")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i1&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find("."+this.options.boxOfBullets).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new Foundation.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},function(){t.changeSlide(!0)}),this.timer.start()}},{key:"_prepareForOrbit",value:function(){var t=this;this._setWrapperHeight(function(e){t._setSlideHeight(e)})}},{key:"_setWrapperHeight",value:function(e){var i,n=0,s=0;this.$slides.each(function(){i=this.getBoundingClientRect().height,t(this).attr("data-slide",s),s&&t(this).css({position:"relative",display:"none"}),n=i>n?i:n,s++}),s===this.$slides.length&&(this.$wrapper.css({height:n}),e(n))}},{key:"_setSlideHeight",value:function(e){this.$slides.each(function(){t(this).css("max-height",e)})}},{key:"_events",value:function(){var e=this;if(this.$slides.length>1){if(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!0)}).on("swiperight.zf.orbit",function(t){t.preventDefault(),e.changeSlide(!1)}),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",function(){e.$element.data("clickedOn",!e.$element.data("clickedOn")),e.timer[e.$element.data("clickedOn")?"pause":"start"]()}),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",function(){e.timer.pause()}).on("mouseleave.zf.orbit",function(){e.$element.data("clickedOn")||e.timer.start()})),this.options.navButtons){var i=this.$element.find("."+this.options.nextClass+", ."+this.options.prevClass);i.attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",function(){e.changeSlide(t(this).hasClass(e.options.nextClass))})}this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",function(){if(/is-active/g.test(this.className))return!1;var i=t(this).data("slide"),n=i>e.$slides.filter(".is-active").data("slide"),s=e.$slides.eq(i);e.changeSlide(n,s,i)}),this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",function(i){Foundation.Keyboard.handleKey(i,"Orbit",{next:function(){e.changeSlide(!0)},previous:function(){e.changeSlide(!1)},handled:function(){t(i.target).is(e.$bullets)&&e.$bullets.filter(".is-active").focus()}})})}}},{key:"changeSlide",value:function(t,e,i){var n=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(n[0].className))return!1;var s,o=this.$slides.first(),a=this.$slides.last(),r=t?"Right":"Left",l=t?"Left":"Right",u=this;s=e?e:t?this.options.infiniteWrap?n.next("."+this.options.slideClass).length?n.next("."+this.options.slideClass):o:n.next("."+this.options.slideClass):this.options.infiniteWrap?n.prev("."+this.options.slideClass).length?n.prev("."+this.options.slideClass):a:n.prev("."+this.options.slideClass),s.length&&(this.options.bullets&&(i=i||this.$slides.index(s),this._updateBullets(i)),this.options.useMUI?(Foundation.Motion.animateIn(s.addClass("is-active").css({position:"absolute",top:0}),this.options["animInFrom"+r],function(){s.css({position:"relative",display:"block"}).attr("aria-live","polite")}),Foundation.Motion.animateOut(n.removeClass("is-active"),this.options["animOutTo"+l],function(){n.removeAttr("aria-live"),u.options.autoPlay&&!u.timer.isPaused&&u.timer.restart()})):(n.removeClass("is-active is-in").removeAttr("aria-live").hide(),s.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[s]))}},{key:"_updateBullets",value:function(t){var e=this.$element.find("."+this.options.boxOfBullets).find(".is-active").removeClass("is-active").blur(),i=e.find("span:last").detach();this.$bullets.eq(t).addClass("is-active").append(i)}},{key:"destroy",value:function(){this.$element.off(".zf.orbit").find("*").off(".zf.orbit").end().hide(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={bullets:!0,navButtons:!0,animInFromRight:"slide-in-right",animOutToRight:"slide-out-right",animInFromLeft:"slide-in-left",animOutToLeft:"slide-out-left",autoPlay:!0,timerDelay:5e3,infiniteWrap:!0,swipe:!0,pauseOnHover:!0,accessible:!0,containerClass:"orbit-container",slideClass:"orbit-slide",boxOfBullets:"orbit-bullets",nextClass:"orbit-next",prevClass:"orbit-previous",useMUI:!0},Foundation.plugin(e,"Orbit")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i1?o[0]:"small",r=o.length>1?o[1]:o[0];null!==i[r]&&(e[a]=i[r])}this.rules=e}t.isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_events",value:function(){var e=this;t(window).on("changed.zf.mediaquery",function(){e._checkMediaQueries()})}},{key:"_checkMediaQueries",value:function(){var e,n=this;t.each(this.rules,function(t){Foundation.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(t.each(i,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[e].plugin(this.$element,{})))}},{key:"destroy",value:function(){this.currentPlugin.destroy(),t(window).off(".zf.ResponsiveMenu"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={};var i={dropdown:{cssClass:"dropdown",plugin:Foundation._plugins["dropdown-menu"]||null},drilldown:{cssClass:"drilldown",plugin:Foundation._plugins.drilldown||null},accordion:{cssClass:"accordion-menu",plugin:Foundation._plugins["accordion-menu"]||null}};Foundation.plugin(e,"ResponsiveMenu")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i").addClass("reveal-overlay").attr({tabindex:-1,"aria-hidden":!0}).appendTo("body");return i}},{key:"_updatePosition",value:function(){var e,i=this.$element.outerWidth(),n=t(window).width(),s=this.$element.outerHeight(),o=t(window).height(),a=parseInt((n-i)/2,10);e=s>o?parseInt(Math.min(100,o/10),10):parseInt((o-s)/4,10),this.$element.css({top:e+"px"}),this.$overlay||this.$element.css({left:a+"px"})}},{key:"_events",value:function(){var e=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){e._updatePosition()}}),this.$anchor.length&&this.$anchor.on("keydown.zf.reveal",function(t){13!==t.which&&32!==t.which||(t.stopPropagation(),t.preventDefault(),e.open())}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.reveal",function(i){i.target===e.$element[0]||t.contains(e.$element[0],i.target)||e.close()}),this.options.deepLink&&t(window).on("popstate.zf.reveal:"+this.id,this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"open",value:function(){var e=this;if(this.options.deepLink){var i="#"+this.id;window.history.pushState?window.history.pushState(null,null,i):window.location.hash=i}if(this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&this.$overlay.css({visibility:""}).hide(),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),this.options.animationIn?(this.options.overlay&&Foundation.Motion.animateIn(this.$overlay,"fade-in"),Foundation.Motion.animateIn(this.$element,this.options.animationIn,function(){e.focusableElements=Foundation.Keyboard.findFocusable(e.$element)})):(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),this.$element.trigger("open.zf.reveal"),this.isiOS){var n=window.pageYOffset;t("html, body").addClass("is-reveal-open").scrollTop(n)}else t("body").addClass("is-reveal-open");t("body").addClass("is-reveal-open").attr("aria-hidden",!(!this.options.overlay&&!this.options.fullScreen)),setTimeout(function(){e._extraHandlers()},0)}},{key:"_extraHandlers",value:function(){var e=this;this.focusableElements=Foundation.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||t("body").on("click.zf.reveal",function(i){i.target===e.$element[0]||t.contains(e.$element[0],i.target)||e.close()}),this.options.closeOnEsc&&t(window).on("keydown.zf.reveal",function(t){Foundation.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())}}),0===e.focusableElements.length&&t.preventDefault()}),this.$element.on("keydown.zf.reveal",function(i){var n=t(this);Foundation.Keyboard.handleKey(i,"Reveal",{tab_forward:function(){e.$element.find(":focus").is(e.focusableElements.eq(-1))&&(e.focusableElements.eq(0).focus(),i.preventDefault())},tab_backward:function(){(e.$element.find(":focus").is(e.focusableElements.eq(0))||e.$element.is(":focus"))&&(e.focusableElements.eq(-1).focus(),i.preventDefault())},open:function(){e.$element.find(":focus").is(e.$element.find("[data-close]"))?setTimeout(function(){e.$anchor.focus()},1):n.is(e.focusableElements)&&e.open()},close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())}})})}},{key:"close",value:function(){function e(){i.isiOS?t("html, body").removeClass("is-reveal-open"):t("body").removeClass("is-reveal-open"),t("body").attr({"aria-hidden":!1,tabindex:""}),i.$element.attr("aria-hidden",!0),i.$element.trigger("closed.zf.reveal")}if(!this.isActive||!this.$element.is(":visible"))return!1;var i=this;this.options.animationOut?(this.options.overlay?Foundation.Motion.animateOut(this.$overlay,"fade-out",e):e(),Foundation.Motion.animateOut(this.$element,this.options.animationOut)):(this.options.overlay?this.$overlay.hide(0,e):e(),this.$element.hide(this.options.hideDelay)),this.options.closeOnEsc&&t(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&t("body").off("click.zf.reveal"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,i.options.deepLink&&(window.history.replaceState?window.history.replaceState("",document.title,window.location.pathname):window.location.hash="")}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"destroy",value:function(){this.options.overlay&&this.$overlay.hide().off().remove(),this.$element.hide().off(),this.$anchor.off(".zf"),t(window).off(".zf.reveal:"+this.id),Foundation.unregisterPlugin(this)}}]),i}();i.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:100,hOffset:0,fullScreen:!1,btmOffsetPct:10,overlay:!0,resetOnClose:!1,deepLink:!1},Foundation.plugin(i,"Reveal")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;i1?this.inputs.eq(1):t("#"+this.$handle2.attr("aria-controls")),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),e=!0,this._setHandlePos(this.$handle,this.options.initialStart,!0,function(){i._setHandlePos(i.$handle2,i.options.initialEnd,!0)}),this._setInitAttr(1),this._events(this.$handle2)),e||this._setHandlePos(this.$handle,this.options.initialStart,!0)}},{key:"_setHandlePos",value:function(t,i,n,s){i=parseFloat(i),ithis.options.end&&(i=this.options.end);var o=this.options.doubleSided;if(o)if(0===this.handles.index(t)){var a=parseFloat(this.$handle2.attr("aria-valuenow"));i=i>=a?a-this.options.step:i}else{var r=parseFloat(this.$handle.attr("aria-valuenow"));i=r>=i?r+this.options.step:i}this.options.vertical&&!n&&(i=this.options.end-i);var l=this,u=this.options.vertical,d=u?"height":"width",h=u?"top":"left",c=t[0].getBoundingClientRect()[d],f=this.$element[0].getBoundingClientRect()[d],p=e(i,this.options.end).toFixed(2),m=(f-c)*p,v=(100*e(m,f)).toFixed(this.options.decimal);i=parseFloat(i.toFixed(this.options.decimal));var g={};if(this._setValues(t,i),o){var w,y=0===this.handles.index(t),b=~~(100*e(c,f));if(y)g[h]=v+"%",w=parseFloat(this.$handle2[0].style[h])-v+b,s&&"function"==typeof s&&s();else{var $=parseFloat(this.$handle[0].style[h]);w=v-(isNaN($)?this.options.initialStart/((this.options.end-this.options.start)/100):$)+b}g["min-"+d]=w+"%"}this.$element.one("finished.zf.animate",function(){l.$element.trigger("moved.zf.slider",[t])});var C=this.$element.data("dragging")?1e3/60:this.options.moveTime;Foundation.Move(C,t,function(){t.css(h,v+"%"),l.options.doubleSided?l.$fill.css(g):l.$fill.css(d,100*p+"%")}),clearTimeout(l.timeout),l.timeout=setTimeout(function(){l.$element.trigger("changed.zf.slider",[t])},l.options.changedDelay)}},{key:"_setInitAttr",value:function(t){var e=this.inputs.eq(t).attr("id")||Foundation.GetYoDigits(6,"slider");this.inputs.eq(t).attr({id:e,max:this.options.end,min:this.options.start,step:this.options.step}),this.handles.eq(t).attr({role:"slider","aria-controls":e,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":0===t?this.options.initialStart:this.options.initialEnd,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var i=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(i).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,n,s){var o,a;if(s)o=this._adjustValue(null,s),a=!0;else{t.preventDefault();var r=this,l=this.options.vertical,u=l?"height":"width",d=l?"top":"left",h=l?t.pageY:t.pageX,c=this.$handle[0].getBoundingClientRect()[u]/2,f=this.$element[0].getBoundingClientRect()[u],p=this.$element.offset()[d]-h,m=p>0?-c:-f>p-c?f:Math.abs(p),v=e(m,f);if(o=(this.options.end-this.options.start)*v,Foundation.rtl()&&!this.options.vertical&&(o=this.options.end-o),o=r._adjustValue(null,o),a=!1,!n){var g=i(this.$handle,d,m,u),w=i(this.$handle2,d,m,u);n=w>=g?this.$handle:this.$handle2}}this._setHandlePos(n,o,a)}},{key:"_adjustValue",value:function(t,e){var i,n,s,o,a=this.options.step,r=parseFloat(a/2);return i=t?parseFloat(t.attr("aria-valuenow")):e,n=i%a,s=i-n,o=s+a,0===n?i:i=i>=s+r?o:s}},{key:"_events",value:function(e){if(this.options.disabled)return!1;var i,n=this;if(this.inputs.off("change.zf.slider").on("change.zf.slider",function(e){var i=n.inputs.index(t(this));n._handleEvent(e,n.handles.eq(i),t(this).val())}),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",function(e){return n.$element.data("dragging")?!1:void(t(e.target).is("[data-slider-handle]")||(n.options.doubleSided?n._handleEvent(e):n._handleEvent(e,n.$handle)))}),this.options.draggable){this.handles.addTouch();var s=t("body");e.off("mousedown.zf.slider").on("mousedown.zf.slider",function(o){e.addClass("is-dragging"),n.$fill.addClass("is-dragging"),n.$element.data("dragging",!0),i=t(o.currentTarget),s.on("mousemove.zf.slider",function(t){t.preventDefault(),n._handleEvent(t,i)}).on("mouseup.zf.slider",function(t){n._handleEvent(t,i),e.removeClass("is-dragging"),n.$fill.removeClass("is-dragging"),n.$element.data("dragging",!1),s.off("mousemove.zf.slider mouseup.zf.slider")})})}e.off("keydown.zf.slider").on("keydown.zf.slider",function(e){var i,s=t(this),o=n.options.doubleSided?n.handles.index(s):0,a=parseFloat(n.inputs.eq(o).val());Foundation.Keyboard.handleKey(e,"Slider",{decrease:function(){i=a-n.options.step},increase:function(){i=a+n.options.step},decrease_fast:function(){i=a-10*n.options.step},increase_fast:function(){i=a+10*n.options.step},handled:function(){e.preventDefault(),n._setHandlePos(s,i,!0)}})})}},{key:"destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),Foundation.unregisterPlugin(this)}}]),n}();n.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500},Foundation.plugin(n,"Slider")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;io&&n[o];o++){var r;if("number"==typeof n[o])r=n[o];else{var l=n[o].split(":"),u=t("#"+l[0]);r=u.offset().top,l[1]&&"bottom"===l[1].toLowerCase()&&(r+=u[0].getBoundingClientRect().height)}s[o]=r}else s={0:1,1:document.documentElement.scrollHeight};this.points=s}},{key:"_events",value:function(e){var i=this,n=this.scrollListener="scroll.zf."+e;this.isOn||(this.canStick&&(this.isOn=!0,t(window).off(n).on(n,function(t){0===i.scrollCount?(i.scrollCount=i.options.checkEvery,i._setSizes(function(){i._calc(!1,window.pageYOffset)})):(i.scrollCount--,i._calc(!1,window.pageYOffset))})),this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(t,s){i._setSizes(function(){i._calc(!1),i.canStick?i.isOn||i._events(e):i.isOn&&i._pauseListeners(n)})}))}},{key:"_pauseListeners",value:function(e){this.isOn=!1,t(window).off(e),this.$element.trigger("pause.zf.sticky")}},{key:"_calc",value:function(t,e){return t&&this._setSizes(),this.canStick?(e||(e=window.pageYOffset),void(e>=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0))):(this.isStuck&&this._removeSticky(!0),!1)}},{key:"_setSticky",value:function(){var t=this.options.stickTo,e="top"===t?"marginTop":"marginBottom",i="top"===t?"bottom":"top",n={};n[e]=this.options[e]+"em",n[t]=0,n[i]="auto",n.left=this.$container.offset().left+parseInt(window.getComputedStyle(this.$container[0])["padding-left"],10),this.isStuck=!0,this.$element.removeClass("is-anchored is-at-"+i).addClass("is-stuck is-at-"+t).css(n).trigger("sticky.zf.stuckto:"+t)}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,i="top"===e,n={},s=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,o=i?"marginTop":"marginBottom",a=i?"bottom":"top",r=t?"top":"bottom";n[o]=0,t&&!i||i&&!t?(n[e]=s,n[a]=0):(n[e]=0,n[a]=s),n.left="",this.isStuck=!1,this.$element.removeClass("is-stuck is-at-"+e).addClass("is-anchored is-at-"+r).css(n).trigger("sticky.zf.unstuckfrom:"+r)}},{key:"_setSizes",value:function(t){this.canStick=Foundation.MediaQuery.atLeast(this.options.stickyOn),this.canStick||t();var e=this.$container[0].getBoundingClientRect().width,i=window.getComputedStyle(this.$container[0]),n=parseInt(i["padding-right"],10);this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":e-n+"px"});var s=this.$element[0].getBoundingClientRect().height||this.containerHeight;this.containerHeight=s,this.$container.css({height:s}),this.elemHeight=s,this.isStuck&&this.$element.css({left:this.$container.offset().left+parseInt(i["padding-left"],10)}),this._setBreakPoints(s,function(){t&&t()})}},{key:"_setBreakPoints",value:function(t,i){if(!this.canStick){if(!i)return!1;i()}var n=e(this.options.marginTop),s=e(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,a=this.points?this.points[1]:o+this.anchorHeight,r=window.innerHeight;"top"===this.options.stickTo?(o-=n,a-=t+n):"bottom"===this.options.stickTo&&(o-=r-(t+s),a-=r-s),this.topPoint=o,this.bottomPoint=a,i&&i()}},{key:"destroy",value:function(){this._removeSticky(!0),this.$element.removeClass(this.options.stickyClass+" is-anchored is-at-top").css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger"),this.$anchor.off("change.zf.sticky"),t(window).off(this.scrollListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""}),Foundation.unregisterPlugin(this)}}]),i}();i.defaults={container:"
    ",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",checkEvery:-1},Foundation.plugin(i,"Sticky")}(jQuery);var _createClass=function(){function t(t,e){for(var i=0;ie?s:e}).css("height",e+"px")}},{key:"destroy",value:function(){this.$element.find("."+this.options.linkClass).off(".zf.tabs").hide().end().find("."+this.options.panelClass).hide(),this.options.matchHeight&&t(window).off("changed.zf.mediaquery"),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,linkClass:"tabs-title",panelClass:"tabs-panel"},Foundation.plugin(e,"Tabs")}(jQuery);var _createClass=function(){function t(t,e){ +for(var i=0;i").addClass(i).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:e});return n}},{key:"_reposition",value:function(t){this.usedPositions.push(t?t:"bottom"),!t&&this.usedPositions.indexOf("top")<0?this.template.addClass("top"):"top"===t&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"left"===t&&this.usedPositions.indexOf("right")<0?this.template.removeClass(t).addClass("right"):"right"===t&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):!t&&this.usedPositions.indexOf("top")>-1&&this.usedPositions.indexOf("left")<0?this.template.addClass("left"):"top"===t&&this.usedPositions.indexOf("bottom")>-1&&this.usedPositions.indexOf("left")<0?this.template.removeClass(t).addClass("left"):"left"===t&&this.usedPositions.indexOf("right")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):"right"===t&&this.usedPositions.indexOf("left")>-1&&this.usedPositions.indexOf("bottom")<0?this.template.removeClass(t):this.template.removeClass(t),this.classChanged=!0,this.counter--}},{key:"_setPosition",value:function(){var t=this._getPositionClass(this.template),e=Foundation.Box.GetDimensions(this.template),i=Foundation.Box.GetDimensions(this.$element),n="left"===t?"left":"right"===t?"left":"top",s="top"===n?"height":"width";"height"===s?this.options.vOffset:this.options.hOffset;if(e.width>=e.windowDims.width||!this.counter&&!Foundation.Box.ImNotTouchingYou(this.template))return this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center bottom",this.options.vOffset,this.options.hOffset,!0)).css({width:i.windowDims.width-2*this.options.hOffset,height:"auto"}),!1;for(this.template.offset(Foundation.Box.GetOffsets(this.template,this.$element,"center "+(t||"bottom"),this.options.vOffset,this.options.hOffset));!Foundation.Box.ImNotTouchingYou(this.template)&&this.counter;)this._reposition(t),this._setPosition()}},{key:"show",value:function(){if("all"!==this.options.showOn&&!Foundation.MediaQuery.atLeast(this.options.showOn))return!1;var t=this;this.template.css("visibility","hidden").show(),this._setPosition(),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),t.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1,t.classChanged&&(t.template.removeClass(t._getPositionClass(t.template)).addClass(t.options.positionClass),t.usedPositions=[],t.counter=4,t.classChanged=!1)}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var t=this,e=(this.template,!1);this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(e){t.isActive||(t.timeout=setTimeout(function(){t.show()},t.options.hoverDelay))}).on("mouseleave.zf.tooltip",function(i){clearTimeout(t.timeout),(!e||!t.isClick&&t.options.clickOpen)&&t.hide()}),this.options.clickOpen&&this.$element.on("mousedown.zf.tooltip",function(e){e.stopImmediatePropagation(),t.isClick?t.hide():(t.isClick=!0,!t.options.disableHover&&t.$element.attr("tabindex")||t.isActive||t.show())}),this.options.disableForTouch||this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(e){t.isActive?t.hide():t.show()}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(i){return e=!0,t.isClick?!1:void t.show()}).on("focusout.zf.tooltip",function(i){e=!1,t.isClick=!1,t.hide()}).on("resizeme.zf.trigger",function(){t.isActive&&t._setPosition()})}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tootip").removeAttr("aria-describedby").removeAttr("data-yeti-box").removeAttr("data-toggle").removeAttr("data-resize"),this.template.remove(),Foundation.unregisterPlugin(this)}}]),e}();e.defaults={disableForTouch:!1,hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,positionClass:"",vOffset:10,hOffset:12},Foundation.plugin(e,"Tooltip")}(jQuery); \ No newline at end of file diff --git a/STM32F746G Discovery board/html/js/vendor/jquery.js b/STM32F746G Discovery board/html/js/vendor/jquery.js new file mode 100644 index 0000000..f942984 --- /dev/null +++ b/STM32F746G Discovery board/html/js/vendor/jquery.js @@ -0,0 +1,9842 @@ +/*! + * jQuery JavaScript Library v2.2.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-03-17T17:51Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var arr = []; + +var document = window.document; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "2.2.2", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isPlainObject: function( obj ) { + var key; + + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf( "use strict" ) === 1 ) { + script = document.createElement( "script" ); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Support: Blackberry 4.6 + // gEBID returns nodes no longer in the document (#6963) + if ( elem && elem.parentNode ) { + + // Inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // Add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // If we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE9-10 only + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + register: function( owner, initial ) { + var value = initial || {}; + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable, non-writable property + // configurability must be true to allow the property to be + // deleted with the delete operator + } else { + Object.defineProperty( owner, this.expando, { + value: value, + writable: true, + configurable: true + } ); + } + return owner[ this.expando ]; + }, + cache: function( owner ) { + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( !acceptData( owner ) ) { + return {}; + } + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + owner[ this.expando ] && owner[ this.expando ][ key ]; + }, + access: function( owner, key, value ) { + var stored; + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase( key ) ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key === undefined ) { + this.register( owner ); + + } else { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <= 35-45+ + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data, camelKey; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = dataUser.get( elem, key ) || + + // Try to find dashed key if it exists (gh-2779) + // This is for 2.2.x only + dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); + + if ( data !== undefined ) { + return data; + } + + camelKey = jQuery.camelCase( key ); + + // Attempt to get data from the cache + // with the key camelized + data = dataUser.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + camelKey = jQuery.camelCase( key ); + this.each( function() { + + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = dataUser.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + dataUser.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf( "-" ) > -1 && data !== undefined ) { + dataUser.set( this, key, value ); + } + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE9-11+ + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0-4.3, Safari<=5.1 + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari<=5.1, Android<4.2 + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<=11+ + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + + "screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome<28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android<4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "