Explorar el Código

Merge branch 'develop'

Jonatan Antoni hace 3 años
padre
commit
2b7495b853
Se han modificado 100 ficheros con 27526 adiciones y 11517 borrados
  1. 3 0
      .gitattributes
  2. 16 0
      .github/fileheader.json
  3. 16 0
      .github/linkchecker.json
  4. 11 2
      .github/workflows/codeql-analysis.yml
  5. 37 0
      .github/workflows/fileheader.yml
  6. 24 2
      .github/workflows/gh-pages.yaml
  7. 30 0
      .github/workflows/packdesc.yml
  8. 1 1
      .github/workflows/release.yaml
  9. 16 0
      .github/xmllint.json
  10. 5 0
      .gitignore
  11. 85 889
      ARM.CMSIS.pdsc
  12. 4 4
      CMSIS/Core/Include/cmsis_version.h
  13. 20 9
      CMSIS/Core/Include/core_armv81mml.h
  14. 16 4
      CMSIS/Core/Include/core_armv8mml.h
  15. 16 4
      CMSIS/Core/Include/core_cm33.h
  16. 16 4
      CMSIS/Core/Include/core_cm35p.h
  17. 571 32
      CMSIS/Core/Include/core_cm55.h
  18. 4672 0
      CMSIS/Core/Include/core_cm85.h
  19. 3592 0
      CMSIS/Core/Include/core_starmc1.h
  20. 206 0
      CMSIS/Core/Include/pac_armv81.h
  21. 4 4
      CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.sct
  22. 4 4
      CMSIS/CoreValidation/Tests/config/core_m/rtebuild.sct
  23. 4 4
      CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ac5.sct
  24. 4 4
      CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.sct
  25. 4 4
      CMSIS/CoreValidation/Tests/config/core_m/rtebuild_s.sct
  26. 3 19
      CMSIS/Core_A/Include/cmsis_gcc.h
  27. 22 22
      CMSIS/DAP/Firmware/Config/DAP_config.h
  28. 1 1
      CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvguix
  29. 7 7
      CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvoptx
  30. 16 16
      CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvprojx
  31. 20 20
      CMSIS/DAP/Firmware/Examples/LPC-Link2/DAP_config.h
  32. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/DebugConfig/LPC-Link2_LPC4370_Cortex-M4.dbgconf
  33. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/DebugConfig/LPC-Link2_on-board_LPC4322_Cortex-M4.dbgconf
  34. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/Objects/CMSIS_DAP.hex
  35. 8 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/README.md
  36. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/CMSIS/RTX_Config.c
  37. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/CMSIS/RTX_Config.h
  38. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/RTE_Device.h
  39. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/startup_LPC43xx.s
  40. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/system_LPC43xx.c
  41. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/RTE_Device.h
  42. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/startup_LPC43xx.s
  43. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/system_LPC43xx.c
  44. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_0.c
  45. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_CDC_0.h
  46. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_CustomClass_0.h
  47. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/USBD_User_CDC_ACM_UART_0.c
  48. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/USBD_User_CustomClass_0.c
  49. 0 4
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/Abstract.txt
  50. 0 1801
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/CMSIS_DAP.uvguix
  51. 0 664
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/CMSIS_DAP.uvprojx
  52. 0 3459
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/Objects/CMSIS_DAP.hex
  53. 0 2483
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/Device/LPC4370_Cortex-M4/RTE_Device.h
  54. 0 167
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/USB/USBD_Config_HID_0.h
  55. 0 246
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/USBD_User_HID_0.c
  56. 0 8
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/Abstract.txt
  57. 0 43
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/DebugConfig/LPC-Link2_LPC4370_Cortex-M4.dbgconf
  58. 0 333
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4370_Cortex-M4/startup_LPC43xx.s
  59. 0 938
      CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4370_Cortex-M4/system_LPC43xx.c
  60. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/main.c
  61. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/osObjects.h
  62. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/ser_num.c
  63. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/ser_num.h
  64. 0 0
      CMSIS/DAP/Firmware/Examples/LPC-Link2/target.c
  65. 1801 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvguix
  66. 180 31
      CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvoptx
  67. 955 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvprojx
  68. 133 170
      CMSIS/DAP/Firmware/Examples/MCU-LINK/DAP_config.h
  69. 18 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/DebugConfig/MCU-Link_LPC55S69JBD64_cm33_core0.dbgconf
  70. 743 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/MCU-Link.mex
  71. 4356 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/Objects/CMSIS_DAP.hex
  72. 13 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/README.md
  73. 4 3
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/CMSIS/RTX_Config.c
  74. 52 52
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/CMSIS/RTX_Config.h
  75. 105 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash.scf
  76. 107 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash_ns.scf
  77. 116 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash_s.scf
  78. 105 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_ram.scf
  79. 215 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/RTE_Device.h
  80. 801 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/startup_LPC55S69_cm33_core0.S
  81. 5 5
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_0.c
  82. 364 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_CDC_0.h
  83. 3771 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_CustomClass_0.h
  84. 984 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD1_LPC55xxx.c
  85. 381 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD_User_CDC_ACM_UART_0.c
  86. 358 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD_User_CustomClass_0.c
  87. 70 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/USB_LPC55xxx.h
  88. 150 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/clock_config.c
  89. 62 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/clock_config.h
  90. 77 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/peripherals.c
  91. 33 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/peripherals.h
  92. 337 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/pin_mux.c
  93. 276 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/board/pin_mux.h
  94. 1284 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/fsl_usart.c
  95. 32 4
      CMSIS/DAP/Firmware/Examples/MCU-LINK/main.c
  96. 13 3
      CMSIS/DAP/Firmware/Examples/MCU-LINK/osObjects.h
  97. 86 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/ser_num.c
  98. 33 0
      CMSIS/DAP/Firmware/Examples/MCU-LINK/ser_num.h
  99. 4 4
      CMSIS/DAP/Firmware/Include/DAP.h
  100. 48 43
      CMSIS/DAP/Firmware/Source/DAP.c

+ 3 - 0
.gitattributes

@@ -15,3 +15,6 @@
 # Denote all files that are truly binary and should not be modified.
 *.png binary
 *.jpg binary
+# Script files
+*.py text eol=lf
+*.sh text eol=lf

+ 16 - 0
.github/fileheader.json

@@ -0,0 +1,16 @@
+{
+	"problemMatcher": [
+		{
+			"owner": "fileheader",
+			"severity": "error",
+			"pattern": [
+				{
+					"regexp": "^(.*):(\\d+):(.*)$",
+					"file": 1,
+					"line": 2,
+					"message": 3
+				}
+			]
+		}
+	]
+}

+ 16 - 0
.github/linkchecker.json

@@ -0,0 +1,16 @@
+{
+	"problemMatcher": [
+		{
+			"owner": "fileheader",
+			"severity": "error",
+			"pattern": [
+				{
+					"regexp": "^(.*):(\\d+);(.*);(.*)$",
+					"file": 1,
+					"line": 2,
+					"message": 4
+				}
+			]
+		}
+	]
+}

+ 11 - 2
.github/workflows/codeql-analysis.yml

@@ -4,10 +4,19 @@ on:
   workflow_dispatch:
   push:
     branches: [ develop ]
+    paths:
+      - 'CMSIS/Core/**'
+      - 'CMSIS/Core_A/**'
+      - 'CMSIS/CoreValidation/**'
+      - 'Device/ARM/**'
   pull_request:
-    # The branches below must be a subset of the branches above
     branches: [ develop ]
-
+    paths:
+      - '.github/workflows/codeql-analysis.yml'
+      - 'CMSIS/Core/**'
+      - 'CMSIS/Core_A/**'
+      - 'CMSIS/CoreValidation/**'
+      - 'Device/ARM/**'
 jobs:
   analyze:
     name: Analyze

+ 37 - 0
.github/workflows/fileheader.yml

@@ -0,0 +1,37 @@
+name: File header
+
+on:
+  pull_request:
+    branches: [ develop ]
+    paths:
+      - 'CMSIS/Core/**'
+      - 'CMSIS/Core_A/**'
+      - 'CMSIS/RTOS2/Include/**'
+      - 'CMSIS/RTOS2/Source/**'
+      - 'Device/**'
+
+permissions:
+  contents: read
+  pull-requests: write
+
+jobs:
+  check:
+    name: Check file header
+    runs-on: ubuntu-latest
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v2
+      with:
+        ref: ${{ github.event.pull_request.head.sha }}
+        fetch-depth: ${{ github.event.pull_request.commits }}
+    - id: files
+      uses: jitterbit/get-changed-files@v1
+    - name: Check changed files
+      run: |
+        echo "::add-matcher::.github/fileheader.json"
+        RC=0
+        for changed_file in ${{ steps.files.outputs.added_modified }}; do
+          ./CMSIS/Utilities/check_header.sh ${changed_file} || RC=1
+        done
+        echo "::remove-matcher owner=fileheader::"
+        exit $RC

+ 24 - 2
.github/workflows/gh-pages.yaml

@@ -1,10 +1,17 @@
 name: Publish Documentation
 on:
   workflow_dispatch:
+  pull_request:
+    branches: [ develop ]
+    paths:
+      - '.github/workflows/gh-pages.yaml'
+      - 'CMSIS/Utilities/check_links.sh'
+      - 'CMSIS/DoxyGen/**'
   push:
-    branches:
-      - develop
+    branches: [ develop ]
     paths:
+      - '.github/workflows/gh-pages.yaml'
+      - 'CMSIS/Utilities/check_links.sh'
       - 'CMSIS/DoxyGen/**'
 jobs:
   docs:
@@ -21,16 +28,31 @@ jobs:
         run: |
           sudo apt-get update
           sudo apt-get install --no-install-recommends -y mscgen=0.20-12
+      - name: Install linkchecker
+        run: |
+          sudo pip install LinkChecker
       - name: Generate doxygen
         run: CMSIS/DoxyGen/gen_doc.sh
+      - name: Run linkchecker
+        run: |
+          echo "::add-matcher::.github/linkchecker.json"
+          CMSIS/Utilities/check_links.sh CMSIS/Documentation/index.html
+      - name: Upload documentation
+        if: ${{ github.event_name == 'pull_request' }}
+        uses: actions/upload-artifact@v2
+        with:
+          path: CMSIS/Documentation/**
       - name: Archive documentation
+        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
         run: |
           cd CMSIS/Documentation
           tar -cvjf /tmp/doc.tbz2 .
       - uses: actions/checkout@v2
+        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
         with:
           ref: gh-pages
       - name: Publish documentation
+        if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
         run: |
           rm -r develop
           mkdir develop

+ 30 - 0
.github/workflows/packdesc.yml

@@ -0,0 +1,30 @@
+name: Pack Description
+
+on:
+  pull_request:
+    branches: [ develop ]
+    paths:
+      - 'ARM.CMSIS.pdsc'
+
+permissions:
+  contents: read
+  pull-requests: write
+
+jobs:
+  check:
+    name: Check pack description schema
+    runs-on: ubuntu-latest
+    steps:
+    - name: Install xmllint
+      run: |
+        sudo apt-get install libxml2-utils
+    - name: Checkout repository
+      uses: actions/checkout@v2
+      with:
+        ref: ${{ github.event.pull_request.head.sha }}
+    - name: Run xmllint
+      run: |
+        curl https://raw.githubusercontent.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/main/schema/PACK.xsd -o CMSIS/Utilities/PACK.xsd
+        echo "::add-matcher::.github/xmllint.json"
+        xmllint --noout --schema "$(realpath -m ./CMSIS/Utilities/PACK.xsd)" "ARM.CMSIS.pdsc"
+        echo "::remove-matcher owner=xmllint::"

+ 1 - 1
.github/workflows/release.yaml

@@ -32,7 +32,7 @@ jobs:
           mkdir ${RELEASE}
           rm latest
           ln -s ${RELEASE} latest
-          cd RELEASE
+          cd ${RELEASE}
           tar -xvjf /tmp/doc.tbz2
           git config user.name github-actions
           git config user.email github-actions@github.com

+ 16 - 0
.github/xmllint.json

@@ -0,0 +1,16 @@
+{
+  "problemMatcher": [
+    {
+      "owner": "xmllint",
+      "severity": "error",
+      "pattern": [
+        {
+          "regexp": "^(.*):(\\d+):(.*)$",
+          "file": 1,
+          "line": 2,
+          "message": 3
+        }
+      ]
+    }
+  ]
+}

+ 5 - 0
.gitignore

@@ -15,3 +15,8 @@ CMSIS/RTOS/RTX/LIB/**/*.lib
 CMSIS/RTOS2/RTX/Library/**/*.a
 CMSIS/RTOS2/RTX/Library/**/*.lib
 output
+.DS_Store
+internal.cp310-win_amd64.pyd
+CMSIS/Utilities/Darwin64
+CMSIS/Utilities/Linux64
+CMSIS/Utilities/Win32

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 85 - 889
ARM.CMSIS.pdsc


+ 4 - 4
CMSIS/Core/Include/cmsis_version.h

@@ -1,11 +1,11 @@
 /**************************************************************************//**
  * @file     cmsis_version.h
  * @brief    CMSIS Core(M) Version definitions
- * @version  V5.0.4
- * @date     23. July 2019
+ * @version  V5.0.5
+ * @date     02. February 2022
  ******************************************************************************/
 /*
- * Copyright (c) 2009-2019 ARM Limited. All rights reserved.
+ * Copyright (c) 2009-2022 ARM Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -33,7 +33,7 @@
 
 /*  CMSIS Version definitions */
 #define __CM_CMSIS_VERSION_MAIN  ( 5U)                                      /*!< [31:16] CMSIS Core(M) main version */
-#define __CM_CMSIS_VERSION_SUB   ( 4U)                                      /*!< [15:0]  CMSIS Core(M) sub version */
+#define __CM_CMSIS_VERSION_SUB   ( 6U)                                      /*!< [15:0]  CMSIS Core(M) sub version */
 #define __CM_CMSIS_VERSION       ((__CM_CMSIS_VERSION_MAIN << 16U) | \
                                    __CM_CMSIS_VERSION_SUB           )       /*!< CMSIS Core(M) version number */
 #endif

+ 20 - 9
CMSIS/Core/Include/core_armv81mml.h

@@ -1,8 +1,8 @@
 /**************************************************************************//**
  * @file     core_armv81mml.h
  * @brief    CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File
- * @version  V1.4.1
- * @date     04. June 2021
+ * @version  V1.4.2
+ * @date     13. October 2021
  ******************************************************************************/
 /*
  * Copyright (c) 2018-2021 Arm Limited. All rights reserved.
@@ -526,7 +526,7 @@ typedef struct
   __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
   __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
   __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
-  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
   __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
   __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
   __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
@@ -535,7 +535,10 @@ typedef struct
   __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
   __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
   __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
-        uint32_t RESERVED3[92U];
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
   __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
   __IOM uint32_t RFSR;                   /*!< Offset: 0x204 (R/W)  RAS Fault Status Register */
         uint32_t RESERVED4[14U];
@@ -1490,15 +1493,14 @@ typedef struct
         uint32_t RESERVED11[108];
   __IOM uint32_t AUTHSTATUS;                        /*!< Offset: 0xFB8 (R/W)  PMU Authentication Status Register */
   __IOM uint32_t DEVARCH;                           /*!< Offset: 0xFBC (R/W)  PMU Device Architecture Register */
-        uint32_t RESERVED12[4];
+        uint32_t RESERVED12[3];
   __IOM uint32_t DEVTYPE;                           /*!< Offset: 0xFCC (R/W)  PMU Device Type Register */
   __IOM uint32_t PIDR4;                             /*!< Offset: 0xFD0 (R/W)  PMU Peripheral Identification Register 4 */
         uint32_t RESERVED13[3];
   __IOM uint32_t PIDR0;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 0 */
-  __IOM uint32_t PIDR1;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 1 */
-  __IOM uint32_t PIDR2;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 2 */
-  __IOM uint32_t PIDR3;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 3 */
-        uint32_t RESERVED14[3];
+  __IOM uint32_t PIDR1;                             /*!< Offset: 0xFE4 (R/W)  PMU Peripheral Identification Register 1 */
+  __IOM uint32_t PIDR2;                             /*!< Offset: 0xFE8 (R/W)  PMU Peripheral Identification Register 2 */
+  __IOM uint32_t PIDR3;                             /*!< Offset: 0xFEC (R/W)  PMU Peripheral Identification Register 3 */
   __IOM uint32_t CIDR0;                             /*!< Offset: 0xFF0 (R/W)  PMU Component Identification Register 0 */
   __IOM uint32_t CIDR1;                             /*!< Offset: 0xFF4 (R/W)  PMU Component Identification Register 1 */
   __IOM uint32_t CIDR2;                             /*!< Offset: 0xFF8 (R/W)  PMU Component Identification Register 2 */
@@ -3158,6 +3160,15 @@ typedef struct
 /*@} */
 
 
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+#define ID_ADR  (ID_AFR)    /*!< SCB Auxiliary Feature Register */
+/*@} */
+
 
 /*******************************************************************************
  *                Hardware Abstraction Layer

+ 16 - 4
CMSIS/Core/Include/core_armv8mml.h

@@ -1,8 +1,8 @@
 /**************************************************************************//**
  * @file     core_armv8mml.h
  * @brief    CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File
- * @version  V5.2.2
- * @date     04. June 2021
+ * @version  V5.2.3
+ * @date     13. October 2021
  ******************************************************************************/
 /*
  * Copyright (c) 2009-2021 Arm Limited. All rights reserved.
@@ -519,7 +519,7 @@ typedef struct
   __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
   __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
   __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
-  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
   __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
   __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
   __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
@@ -528,7 +528,10 @@ typedef struct
   __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
   __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
   __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
-        uint32_t RESERVED3[92U];
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
   __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
         uint32_t RESERVED4[15U];
   __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
@@ -2182,6 +2185,15 @@ typedef struct
 /*@} */
 
 
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+#define ID_ADR  (ID_AFR)    /*!< SCB Auxiliary Feature Register */
+/*@} */
+
 
 /*******************************************************************************
  *                Hardware Abstraction Layer

+ 16 - 4
CMSIS/Core/Include/core_cm33.h

@@ -1,8 +1,8 @@
 /**************************************************************************//**
  * @file     core_cm33.h
  * @brief    CMSIS Cortex-M33 Core Peripheral Access Layer Header File
- * @version  V5.2.2
- * @date     04. June 2021
+ * @version  V5.2.3
+ * @date     13. October 2021
  ******************************************************************************/
 /*
  * Copyright (c) 2009-2021 Arm Limited. All rights reserved.
@@ -519,7 +519,7 @@ typedef struct
   __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
   __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
   __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
-  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
   __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
   __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
   __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
@@ -528,7 +528,10 @@ typedef struct
   __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
   __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
   __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
-        uint32_t RESERVED3[92U];
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
   __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
         uint32_t RESERVED4[15U];
   __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
@@ -2257,6 +2260,15 @@ typedef struct
 /*@} */
 
 
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+#define ID_ADR  (ID_AFR)    /*!< SCB Auxiliary Feature Register */
+/*@} */
+
 
 /*******************************************************************************
  *                Hardware Abstraction Layer

+ 16 - 4
CMSIS/Core/Include/core_cm35p.h

@@ -1,8 +1,8 @@
 /**************************************************************************//**
  * @file     core_cm35p.h
  * @brief    CMSIS Cortex-M35P Core Peripheral Access Layer Header File
- * @version  V1.1.2
- * @date     04. June 2021
+ * @version  V1.1.3
+ * @date     13. October 2021
  ******************************************************************************/
 /*
  * Copyright (c) 2018-2021 Arm Limited. All rights reserved.
@@ -519,7 +519,7 @@ typedef struct
   __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
   __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
   __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
-  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
   __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
   __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
   __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
@@ -528,7 +528,10 @@ typedef struct
   __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
   __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
   __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
-        uint32_t RESERVED3[92U];
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
   __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
         uint32_t RESERVED4[15U];
   __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
@@ -2257,6 +2260,15 @@ typedef struct
 /*@} */
 
 
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+#define ID_ADR  (ID_AFR)    /*!< SCB Auxiliary Feature Register */
+/*@} */
+
 
 /*******************************************************************************
  *                Hardware Abstraction Layer

+ 571 - 32
CMSIS/Core/Include/core_cm55.h

@@ -1,11 +1,11 @@
 /**************************************************************************//**
  * @file     core_cm55.h
  * @brief    CMSIS Cortex-M55 Core Peripheral Access Layer Header File
- * @version  V1.2.1
- * @date     04. June 2021
+ * @version  V1.2.4
+ * @date     21. April 2022
  ******************************************************************************/
 /*
- * Copyright (c) 2018-2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2022 Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -58,7 +58,7 @@
  *                 CMSIS definitions
  ******************************************************************************/
 /**
-  \ingroup Cortex_CM55
+  \ingroup Cortex_M55
   @{
  */
 
@@ -303,9 +303,11 @@
   Core Register contain:
   - Core Register
   - Core NVIC Register
+  - Core EWIC Register
   - Core SCB Register
   - Core SysTick Register
   - Core Debug Register
+  - Core PMU Register
   - Core MPU Register
   - Core SAU Register
   - Core FPU Register
@@ -526,7 +528,7 @@ typedef struct
   __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
   __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
   __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
-  __IM  uint32_t ID_ADR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
   __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
   __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
   __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
@@ -535,7 +537,10 @@ typedef struct
   __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
   __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
   __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
-        uint32_t RESERVED3[92U];
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
   __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
   __IOM uint32_t RFSR;                   /*!< Offset: 0x204 (R/W)  RAS Fault Status Register */
         uint32_t RESERVED4[14U];
@@ -987,13 +992,13 @@ typedef struct
 
 /**
   \ingroup  CMSIS_core_register
-  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
-  \brief    Type definitions for the System Control and ID Register not in the SCB
+  \defgroup CMSIS_ICB Implementation Control Block register (ICB)
+  \brief    Type definitions for the Implementation Control Block Register
   @{
  */
 
 /**
-  \brief  Structure type to access the System Control and ID Register not in the SCB.
+  \brief  Structure type to access the Implementation Control Block (ICB).
  */
 typedef struct
 {
@@ -1001,13 +1006,56 @@ typedef struct
   __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
   __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
   __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */
-} SCnSCB_Type;
+} ICB_Type;
+
+/* Auxiliary Control Register Definitions */
+#define ICB_ACTLR_DISCRITAXIRUW_Pos     27U                                               /*!< ACTLR: DISCRITAXIRUW Position */
+#define ICB_ACTLR_DISCRITAXIRUW_Msk     (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos)              /*!< ACTLR: DISCRITAXIRUW Mask */
+
+#define ICB_ACTLR_DISDI_Pos             16U                                               /*!< ACTLR: DISDI Position */
+#define ICB_ACTLR_DISDI_Msk             (3UL << ICB_ACTLR_DISDI_Pos)                      /*!< ACTLR: DISDI Mask */
+
+#define ICB_ACTLR_DISCRITAXIRUR_Pos     15U                                               /*!< ACTLR: DISCRITAXIRUR Position */
+#define ICB_ACTLR_DISCRITAXIRUR_Msk     (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos)              /*!< ACTLR: DISCRITAXIRUR Mask */
+
+#define ICB_ACTLR_EVENTBUSEN_Pos        14U                                               /*!< ACTLR: EVENTBUSEN Position */
+#define ICB_ACTLR_EVENTBUSEN_Msk        (1UL << ICB_ACTLR_EVENTBUSEN_Pos)                 /*!< ACTLR: EVENTBUSEN Mask */
+
+#define ICB_ACTLR_EVENTBUSEN_S_Pos      13U                                               /*!< ACTLR: EVENTBUSEN_S Position */
+#define ICB_ACTLR_EVENTBUSEN_S_Msk      (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos)               /*!< ACTLR: EVENTBUSEN_S Mask */
+
+#define ICB_ACTLR_DISITMATBFLUSH_Pos    12U                                               /*!< ACTLR: DISITMATBFLUSH Position */
+#define ICB_ACTLR_DISITMATBFLUSH_Msk    (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos)             /*!< ACTLR: DISITMATBFLUSH Mask */
+
+#define ICB_ACTLR_DISNWAMODE_Pos        11U                                               /*!< ACTLR: DISNWAMODE Position */
+#define ICB_ACTLR_DISNWAMODE_Msk        (1UL << ICB_ACTLR_DISNWAMODE_Pos)                 /*!< ACTLR: DISNWAMODE Mask */
+
+#define ICB_ACTLR_FPEXCODIS_Pos         10U                                               /*!< ACTLR: FPEXCODIS Position */
+#define ICB_ACTLR_FPEXCODIS_Msk         (1UL << ICB_ACTLR_FPEXCODIS_Pos)                  /*!< ACTLR: FPEXCODIS Mask */
+
+#define ICB_ACTLR_DISOLAP_Pos            7U                                               /*!< ACTLR: DISOLAP Position */
+#define ICB_ACTLR_DISOLAP_Msk           (1UL << ICB_ACTLR_DISOLAP_Pos)                    /*!< ACTLR: DISOLAP Mask */
+
+#define ICB_ACTLR_DISOLAPS_Pos           6U                                               /*!< ACTLR: DISOLAPS Position */
+#define ICB_ACTLR_DISOLAPS_Msk          (1UL << ICB_ACTLR_DISOLAPS_Pos)                   /*!< ACTLR: DISOLAPS Mask */
+
+#define ICB_ACTLR_DISLOBR_Pos            5U                                               /*!< ACTLR: DISLOBR Position */
+#define ICB_ACTLR_DISLOBR_Msk           (1UL << ICB_ACTLR_DISLOBR_Pos)                    /*!< ACTLR: DISLOBR Mask */
+
+#define ICB_ACTLR_DISLO_Pos              4U                                               /*!< ACTLR: DISLO Position */
+#define ICB_ACTLR_DISLO_Msk             (1UL << ICB_ACTLR_DISLO_Pos)                      /*!< ACTLR: DISLO Mask */
+
+#define ICB_ACTLR_DISLOLEP_Pos           3U                                               /*!< ACTLR: DISLOLEP Position */
+#define ICB_ACTLR_DISLOLEP_Msk          (1UL << ICB_ACTLR_DISLOLEP_Pos)                   /*!< ACTLR: DISLOLEP Mask */
+
+#define ICB_ACTLR_DISFOLD_Pos            2U                                               /*!< ACTLR: DISFOLD Position */
+#define ICB_ACTLR_DISFOLD_Msk           (1UL << ICB_ACTLR_DISFOLD_Pos)                    /*!< ACTLR: DISFOLD Mask */
 
 /* Interrupt Controller Type Register Definitions */
-#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
-#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+#define ICB_ICTR_INTLINESNUM_Pos         0U                                               /*!< ICTR: INTLINESNUM Position */
+#define ICB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/)           /*!< ICTR: INTLINESNUM Mask */
 
-/*@} end of group CMSIS_SCnotSCB */
+/*@} end of group CMSIS_ICB */
 
 
 /**
@@ -1349,6 +1397,133 @@ typedef struct
 /*@}*/ /* end of group CMSIS_DWT */
 
 
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup MemSysCtl_Type     Memory System Control Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Memory System Control Registers (MEMSYSCTL)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory System Control Registers (MEMSYSCTL).
+ */
+typedef struct
+{
+  __IOM uint32_t MSCR;                   /*!< Offset: 0x000 (R/W)  Memory System Control Register */
+  __IOM uint32_t PFCR;                   /*!< Offset: 0x004 (R/W)  Prefetcher Control Register */
+        uint32_t RESERVED1[2U];
+  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x010 (R/W)  ITCM Control Register */
+  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x014 (R/W)  DTCM Control Register */
+  __IOM uint32_t PAHBCR;                 /*!< Offset: 0x018 (R/W)  P-AHB Control Register */
+        uint32_t RESERVED2[313U];
+  __IOM uint32_t ITGU_CTRL;              /*!< Offset: 0x500 (R/W)  ITGU Control Register */
+  __IOM uint32_t ITGU_CFG;               /*!< Offset: 0x504 (R/W)  ITGU Configuration Register */
+        uint32_t RESERVED3[2U];
+  __IOM uint32_t ITGU_LUT[16U];          /*!< Offset: 0x510 (R/W)  ITGU Look Up Table Register */
+        uint32_t RESERVED4[44U];
+  __IOM uint32_t DTGU_CTRL;              /*!< Offset: 0x600 (R/W)  DTGU Control Registers */
+  __IOM uint32_t DTGU_CFG;               /*!< Offset: 0x604 (R/W)  DTGU Configuration Register */
+        uint32_t RESERVED5[2U];
+  __IOM uint32_t DTGU_LUT[16U];          /*!< Offset: 0x610 (R/W)  DTGU Look Up Table Register */
+} MemSysCtl_Type;
+
+/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */
+#define MEMSYSCTL_MSCR_CPWRDN_Pos          17U                                         /*!< MEMSYSCTL MSCR: CPWRDN Position */
+#define MEMSYSCTL_MSCR_CPWRDN_Msk          (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos)        /*!< MEMSYSCTL MSCR: CPWRDN Mask */
+
+#define MEMSYSCTL_MSCR_DCCLEAN_Pos         16U                                         /*!< MEMSYSCTL MSCR: DCCLEAN Position */
+#define MEMSYSCTL_MSCR_DCCLEAN_Msk         (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos)       /*!< MEMSYSCTL MSCR: DCCLEAN Mask */
+
+#define MEMSYSCTL_MSCR_ICACTIVE_Pos        13U                                         /*!< MEMSYSCTL MSCR: ICACTIVE Position */
+#define MEMSYSCTL_MSCR_ICACTIVE_Msk        (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos)      /*!< MEMSYSCTL MSCR: ICACTIVE Mask */
+
+#define MEMSYSCTL_MSCR_DCACTIVE_Pos        12U                                         /*!< MEMSYSCTL MSCR: DCACTIVE Position */
+#define MEMSYSCTL_MSCR_DCACTIVE_Msk        (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos)      /*!< MEMSYSCTL MSCR: DCACTIVE Mask */
+
+#define MEMSYSCTL_MSCR_TECCCHKDIS_Pos       4U                                         /*!< MEMSYSCTL MSCR: TECCCHKDIS Position */
+#define MEMSYSCTL_MSCR_TECCCHKDIS_Msk      (0x1UL << MEMSYSCTL_MSCR_TECCCHKDIS_Pos)    /*!< MEMSYSCTL MSCR: TECCCHKDIS Mask */
+
+#define MEMSYSCTL_MSCR_EVECCFAULT_Pos       3U                                         /*!< MEMSYSCTL MSCR: EVECCFAULT Position */
+#define MEMSYSCTL_MSCR_EVECCFAULT_Msk      (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos)    /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */
+
+#define MEMSYSCTL_MSCR_FORCEWT_Pos          2U                                         /*!< MEMSYSCTL MSCR: FORCEWT Position */
+#define MEMSYSCTL_MSCR_FORCEWT_Msk         (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos)       /*!< MEMSYSCTL MSCR: FORCEWT Mask */
+
+#define MEMSYSCTL_MSCR_ECCEN_Pos            1U                                         /*!< MEMSYSCTL MSCR: ECCEN Position */
+#define MEMSYSCTL_MSCR_ECCEN_Msk           (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos)         /*!< MEMSYSCTL MSCR: ECCEN Mask */
+
+/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */
+#define MEMSYSCTL_PFCR_MAX_OS_Pos           7U                                         /*!< MEMSYSCTL PFCR: MAX_OS Position */
+#define MEMSYSCTL_PFCR_MAX_OS_Msk          (0x7UL << MEMSYSCTL_PFCR_MAX_OS_Pos)        /*!< MEMSYSCTL PFCR: MAX_OS Mask */
+
+#define MEMSYSCTL_PFCR_MAX_LA_Pos           4U                                         /*!< MEMSYSCTL PFCR: MAX_LA Position */
+#define MEMSYSCTL_PFCR_MAX_LA_Msk          (0x7UL << MEMSYSCTL_PFCR_MAX_LA_Pos)        /*!< MEMSYSCTL PFCR: MAX_LA Mask */
+
+#define MEMSYSCTL_PFCR_MIN_LA_Pos           1U                                         /*!< MEMSYSCTL PFCR: MIN_LA Position */
+#define MEMSYSCTL_PFCR_MIN_LA_Msk          (0x7UL << MEMSYSCTL_PFCR_MIN_LA_Pos)        /*!< MEMSYSCTL PFCR: MIN_LA Mask */
+
+#define MEMSYSCTL_PFCR_ENABLE_Pos           0U                                         /*!< MEMSYSCTL PFCR: ENABLE Position */
+#define MEMSYSCTL_PFCR_ENABLE_Msk          (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/)    /*!< MEMSYSCTL PFCR: ENABLE Mask */
+
+/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */
+#define MEMSYSCTL_ITCMCR_SZ_Pos             3U                                         /*!< MEMSYSCTL ITCMCR: SZ Position */
+#define MEMSYSCTL_ITCMCR_SZ_Msk            (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos)          /*!< MEMSYSCTL ITCMCR: SZ Mask */
+
+#define MEMSYSCTL_ITCMCR_EN_Pos             0U                                         /*!< MEMSYSCTL ITCMCR: EN Position */
+#define MEMSYSCTL_ITCMCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/)      /*!< MEMSYSCTL ITCMCR: EN Mask */
+
+/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */
+#define MEMSYSCTL_DTCMCR_SZ_Pos             3U                                         /*!< MEMSYSCTL DTCMCR: SZ Position */
+#define MEMSYSCTL_DTCMCR_SZ_Msk            (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos)          /*!< MEMSYSCTL DTCMCR: SZ Mask */
+
+#define MEMSYSCTL_DTCMCR_EN_Pos             0U                                         /*!< MEMSYSCTL DTCMCR: EN Position */
+#define MEMSYSCTL_DTCMCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/)      /*!< MEMSYSCTL DTCMCR: EN Mask */
+
+/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */
+#define MEMSYSCTL_PAHBCR_SZ_Pos             1U                                         /*!< MEMSYSCTL PAHBCR: SZ Position */
+#define MEMSYSCTL_PAHBCR_SZ_Msk            (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos)          /*!< MEMSYSCTL PAHBCR: SZ Mask */
+
+#define MEMSYSCTL_PAHBCR_EN_Pos             0U                                         /*!< MEMSYSCTL PAHBCR: EN Position */
+#define MEMSYSCTL_PAHBCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/)      /*!< MEMSYSCTL PAHBCR: EN Mask */
+
+/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */
+#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos       1U                                         /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */
+#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk      (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos)    /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */
+
+#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos       0U                                         /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */
+#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk      (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */
+
+/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */
+#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos     31U                                         /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */
+#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk     (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos)   /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */
+
+#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos      8U                                         /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */
+#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk     (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos)   /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */
+
+#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos        0U                                         /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */
+#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk       (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */
+
+/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */
+#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos       1U                                         /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */
+#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk      (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos)    /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */
+
+#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos       0U                                         /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */
+#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk      (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */
+
+/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */
+#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos     31U                                         /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */
+#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk     (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos)   /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */
+
+#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos      8U                                         /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */
+#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk     (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos)   /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */
+
+#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos        0U                                         /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */
+#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk       (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */
+
+
+/*@}*/ /* end of group MemSysCtl_Type */
+
+
 /**
   \ingroup  CMSIS_core_register
   \defgroup PwrModCtl_Type     Power Mode Control Registers
@@ -1361,26 +1536,315 @@ typedef struct
  */
 typedef struct
 {
-  __IOM uint32_t CPDLPSTATE;
-  __IOM uint32_t DPDLPSTATE;
+  __IOM uint32_t CPDLPSTATE;             /*!< Offset: 0x000 (R/W)  Core Power Domain Low Power State Register */
+  __IOM uint32_t DPDLPSTATE;             /*!< Offset: 0x004 (R/W)  Debug Power Domain Low Power State Register */
 } PwrModCtl_Type;
 
-
 /* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */
-#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos                 0U                           /*!< PWRMODCTL CPDLPSTATE CLPSTATE Position */
-#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk                 3UL                          /*!< PWRMODCTL CPDLPSTATE CLPSTATE Mask */
+#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos   8U                                              /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk  (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos)     /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */
 
-#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos                 4U                           /*!< PWRMODCTL CPDLPSTATE ELPSTATE Position */
-#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk                 3UL                          /*!< PWRMODCTL CPDLPSTATE ELPSTATE Mask */
+#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos   4U                                              /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk  (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos)     /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */
 
-#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos                 8U                           /*!< PWRMODCTL CPDLPSTATE RLPSTATE Position */
-#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk                 3UL                          /*!< PWRMODCTL CPDLPSTATE RLPSTATE Mask */
+#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos   0U                                              /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk  (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */
 
 /* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */
-#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos                 0U                           /*!< PWRMODCTL DPDLPSTATE DLPSTATE Position */
-#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk                 3UL                          /*!< PWRMODCTL DPDLPSTATE DLPSTATE Mask */
+#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos   0U                                              /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */
+#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk  (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */
 
-/*@}*/ /* end of group CMSIS_PWRMODCTL */
+/*@}*/ /* end of group PwrModCtl_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup EWIC_Type     External Wakeup Interrupt Controller Registers
+  \brief    Type definitions for the External Wakeup Interrupt Controller Registers (EWIC)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the External Wakeup Interrupt Controller Registers (EWIC).
+ */
+typedef struct
+{
+  __OM  uint32_t EVENTSPR;               /*!< Offset: 0x000 ( /W)  Event Set Pending Register */
+        uint32_t RESERVED0[31U];
+  __IM  uint32_t EVENTMASKA;             /*!< Offset: 0x080 (R/W)  Event Mask A Register */
+  __IM  uint32_t EVENTMASK[15];          /*!< Offset: 0x084 (R/W)  Event Mask Register */
+} EWIC_Type;
+
+/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */
+#define EWIC_EVENTSPR_EDBGREQ_Pos   2U                                                 /*!< EWIC EVENTSPR: EDBGREQ Position */
+#define EWIC_EVENTSPR_EDBGREQ_Msk  (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos)                /*!< EWIC EVENTSPR: EDBGREQ Mask */
+
+#define EWIC_EVENTSPR_NMI_Pos   1U                                                     /*!< EWIC EVENTSPR: NMI Position */
+#define EWIC_EVENTSPR_NMI_Msk  (0x1UL << EWIC_EVENTSPR_NMI_Pos)                        /*!< EWIC EVENTSPR: NMI Mask */
+
+#define EWIC_EVENTSPR_EVENT_Pos   0U                                                   /*!< EWIC EVENTSPR: EVENT Position */
+#define EWIC_EVENTSPR_EVENT_Msk  (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/)                /*!< EWIC EVENTSPR: EVENT Mask */
+
+/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */
+#define EWIC_EVENTMASKA_EDBGREQ_Pos   2U                                               /*!< EWIC EVENTMASKA: EDBGREQ Position */
+#define EWIC_EVENTMASKA_EDBGREQ_Msk  (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos)            /*!< EWIC EVENTMASKA: EDBGREQ Mask */
+
+#define EWIC_EVENTMASKA_NMI_Pos   1U                                                   /*!< EWIC EVENTMASKA: NMI Position */
+#define EWIC_EVENTMASKA_NMI_Msk  (0x1UL << EWIC_EVENTMASKA_NMI_Pos)                    /*!< EWIC EVENTMASKA: NMI Mask */
+
+#define EWIC_EVENTMASKA_EVENT_Pos   0U                                                 /*!< EWIC EVENTMASKA: EVENT Position */
+#define EWIC_EVENTMASKA_EVENT_Msk  (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/)            /*!< EWIC EVENTMASKA: EVENT Mask */
+
+/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */
+#define EWIC_EVENTMASK_IRQ_Pos   0U                                                    /*!< EWIC EVENTMASKA: IRQ Position */
+#define EWIC_EVENTMASK_IRQ_Msk  (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/)          /*!< EWIC EVENTMASKA: IRQ Mask */
+
+/*@}*/ /* end of group EWIC_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup ErrBnk_Type     Error Banking Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Error Banking Registers (ERRBNK)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Error Banking Registers (ERRBNK).
+ */
+typedef struct
+{
+  __IOM uint32_t IEBR0;                  /*!< Offset: 0x000 (R/W)  Instruction Cache Error Bank Register 0 */
+  __IOM uint32_t IEBR1;                  /*!< Offset: 0x004 (R/W)  Instruction Cache Error Bank Register 1 */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t DEBR0;                  /*!< Offset: 0x010 (R/W)  Data Cache Error Bank Register 0 */
+  __IOM uint32_t DEBR1;                  /*!< Offset: 0x014 (R/W)  Data Cache Error Bank Register 1 */
+        uint32_t RESERVED1[2U];
+  __IOM uint32_t TEBR0;                  /*!< Offset: 0x020 (R/W)  TCM Error Bank Register 0 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t TEBR1;                  /*!< Offset: 0x028 (R/W)  TCM Error Bank Register 1 */
+} ErrBnk_Type;
+
+/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */
+#define ERRBNK_IEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK IEBR0: SWDEF Position */
+#define ERRBNK_IEBR0_SWDEF_Msk             (0x3UL << ERRBNK_IEBR0_SWDEF_Pos)           /*!< ERRBNK IEBR0: SWDEF Mask */
+
+#define ERRBNK_IEBR0_BANK_Pos              16U                                         /*!< ERRBNK IEBR0: BANK Position */
+#define ERRBNK_IEBR0_BANK_Msk              (0x1UL << ERRBNK_IEBR0_BANK_Pos)            /*!< ERRBNK IEBR0: BANK Mask */
+
+#define ERRBNK_IEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK IEBR0: LOCATION Position */
+#define ERRBNK_IEBR0_LOCATION_Msk          (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos)     /*!< ERRBNK IEBR0: LOCATION Mask */
+
+#define ERRBNK_IEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK IEBR0: LOCKED Position */
+#define ERRBNK_IEBR0_LOCKED_Msk            (0x1UL << ERRBNK_IEBR0_LOCKED_Pos)          /*!< ERRBNK IEBR0: LOCKED Mask */
+
+#define ERRBNK_IEBR0_VALID_Pos              0U                                         /*!< ERRBNK IEBR0: VALID Position */
+#define ERRBNK_IEBR0_VALID_Msk             (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/)       /*!< ERRBNK IEBR0: VALID Mask */
+
+/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */
+#define ERRBNK_IEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK IEBR1: SWDEF Position */
+#define ERRBNK_IEBR1_SWDEF_Msk             (0x3UL << ERRBNK_IEBR1_SWDEF_Pos)           /*!< ERRBNK IEBR1: SWDEF Mask */
+
+#define ERRBNK_IEBR1_BANK_Pos              16U                                         /*!< ERRBNK IEBR1: BANK Position */
+#define ERRBNK_IEBR1_BANK_Msk              (0x1UL << ERRBNK_IEBR1_BANK_Pos)            /*!< ERRBNK IEBR1: BANK Mask */
+
+#define ERRBNK_IEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK IEBR1: LOCATION Position */
+#define ERRBNK_IEBR1_LOCATION_Msk          (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos)     /*!< ERRBNK IEBR1: LOCATION Mask */
+
+#define ERRBNK_IEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK IEBR1: LOCKED Position */
+#define ERRBNK_IEBR1_LOCKED_Msk            (0x1UL << ERRBNK_IEBR1_LOCKED_Pos)          /*!< ERRBNK IEBR1: LOCKED Mask */
+
+#define ERRBNK_IEBR1_VALID_Pos              0U                                         /*!< ERRBNK IEBR1: VALID Position */
+#define ERRBNK_IEBR1_VALID_Msk             (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/)       /*!< ERRBNK IEBR1: VALID Mask */
+
+/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */
+#define ERRBNK_DEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK DEBR0: SWDEF Position */
+#define ERRBNK_DEBR0_SWDEF_Msk             (0x3UL << ERRBNK_DEBR0_SWDEF_Pos)           /*!< ERRBNK DEBR0: SWDEF Mask */
+
+#define ERRBNK_DEBR0_TYPE_Pos              17U                                         /*!< ERRBNK DEBR0: TYPE Position */
+#define ERRBNK_DEBR0_TYPE_Msk              (0x1UL << ERRBNK_DEBR0_TYPE_Pos)            /*!< ERRBNK DEBR0: TYPE Mask */
+
+#define ERRBNK_DEBR0_BANK_Pos              16U                                         /*!< ERRBNK DEBR0: BANK Position */
+#define ERRBNK_DEBR0_BANK_Msk              (0x1UL << ERRBNK_DEBR0_BANK_Pos)            /*!< ERRBNK DEBR0: BANK Mask */
+
+#define ERRBNK_DEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK DEBR0: LOCATION Position */
+#define ERRBNK_DEBR0_LOCATION_Msk          (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos)     /*!< ERRBNK DEBR0: LOCATION Mask */
+
+#define ERRBNK_DEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK DEBR0: LOCKED Position */
+#define ERRBNK_DEBR0_LOCKED_Msk            (0x1UL << ERRBNK_DEBR0_LOCKED_Pos)          /*!< ERRBNK DEBR0: LOCKED Mask */
+
+#define ERRBNK_DEBR0_VALID_Pos              0U                                         /*!< ERRBNK DEBR0: VALID Position */
+#define ERRBNK_DEBR0_VALID_Msk             (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/)       /*!< ERRBNK DEBR0: VALID Mask */
+
+/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */
+#define ERRBNK_DEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK DEBR1: SWDEF Position */
+#define ERRBNK_DEBR1_SWDEF_Msk             (0x3UL << ERRBNK_DEBR1_SWDEF_Pos)           /*!< ERRBNK DEBR1: SWDEF Mask */
+
+#define ERRBNK_DEBR1_TYPE_Pos              17U                                         /*!< ERRBNK DEBR1: TYPE Position */
+#define ERRBNK_DEBR1_TYPE_Msk              (0x1UL << ERRBNK_DEBR1_TYPE_Pos)            /*!< ERRBNK DEBR1: TYPE Mask */
+
+#define ERRBNK_DEBR1_BANK_Pos              16U                                         /*!< ERRBNK DEBR1: BANK Position */
+#define ERRBNK_DEBR1_BANK_Msk              (0x1UL << ERRBNK_DEBR1_BANK_Pos)            /*!< ERRBNK DEBR1: BANK Mask */
+
+#define ERRBNK_DEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK DEBR1: LOCATION Position */
+#define ERRBNK_DEBR1_LOCATION_Msk          (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos)     /*!< ERRBNK DEBR1: LOCATION Mask */
+
+#define ERRBNK_DEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK DEBR1: LOCKED Position */
+#define ERRBNK_DEBR1_LOCKED_Msk            (0x1UL << ERRBNK_DEBR1_LOCKED_Pos)          /*!< ERRBNK DEBR1: LOCKED Mask */
+
+#define ERRBNK_DEBR1_VALID_Pos              0U                                         /*!< ERRBNK DEBR1: VALID Position */
+#define ERRBNK_DEBR1_VALID_Msk             (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/)       /*!< ERRBNK DEBR1: VALID Mask */
+
+/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */
+#define ERRBNK_TEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK TEBR0: SWDEF Position */
+#define ERRBNK_TEBR0_SWDEF_Msk             (0x3UL << ERRBNK_TEBR0_SWDEF_Pos)           /*!< ERRBNK TEBR0: SWDEF Mask */
+
+#define ERRBNK_TEBR0_POISON_Pos            28U                                         /*!< ERRBNK TEBR0: POISON Position */
+#define ERRBNK_TEBR0_POISON_Msk            (0x1UL << ERRBNK_TEBR0_POISON_Pos)          /*!< ERRBNK TEBR0: POISON Mask */
+
+#define ERRBNK_TEBR0_TYPE_Pos              27U                                         /*!< ERRBNK TEBR0: TYPE Position */
+#define ERRBNK_TEBR0_TYPE_Msk              (0x1UL << ERRBNK_TEBR0_TYPE_Pos)            /*!< ERRBNK TEBR0: TYPE Mask */
+
+#define ERRBNK_TEBR0_BANK_Pos              24U                                         /*!< ERRBNK TEBR0: BANK Position */
+#define ERRBNK_TEBR0_BANK_Msk              (0x3UL << ERRBNK_TEBR0_BANK_Pos)            /*!< ERRBNK TEBR0: BANK Mask */
+
+#define ERRBNK_TEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK TEBR0: LOCATION Position */
+#define ERRBNK_TEBR0_LOCATION_Msk          (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos)   /*!< ERRBNK TEBR0: LOCATION Mask */
+
+#define ERRBNK_TEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK TEBR0: LOCKED Position */
+#define ERRBNK_TEBR0_LOCKED_Msk            (0x1UL << ERRBNK_TEBR0_LOCKED_Pos)          /*!< ERRBNK TEBR0: LOCKED Mask */
+
+#define ERRBNK_TEBR0_VALID_Pos              0U                                         /*!< ERRBNK TEBR0: VALID Position */
+#define ERRBNK_TEBR0_VALID_Msk             (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/)       /*!< ERRBNK TEBR0: VALID Mask */
+
+/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */
+#define ERRBNK_TEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK TEBR1: SWDEF Position */
+#define ERRBNK_TEBR1_SWDEF_Msk             (0x3UL << ERRBNK_TEBR1_SWDEF_Pos)           /*!< ERRBNK TEBR1: SWDEF Mask */
+
+#define ERRBNK_TEBR1_POISON_Pos            28U                                         /*!< ERRBNK TEBR1: POISON Position */
+#define ERRBNK_TEBR1_POISON_Msk            (0x1UL << ERRBNK_TEBR1_POISON_Pos)          /*!< ERRBNK TEBR1: POISON Mask */
+
+#define ERRBNK_TEBR1_TYPE_Pos              27U                                         /*!< ERRBNK TEBR1: TYPE Position */
+#define ERRBNK_TEBR1_TYPE_Msk              (0x1UL << ERRBNK_TEBR1_TYPE_Pos)            /*!< ERRBNK TEBR1: TYPE Mask */
+
+#define ERRBNK_TEBR1_BANK_Pos              24U                                         /*!< ERRBNK TEBR1: BANK Position */
+#define ERRBNK_TEBR1_BANK_Msk              (0x3UL << ERRBNK_TEBR1_BANK_Pos)            /*!< ERRBNK TEBR1: BANK Mask */
+
+#define ERRBNK_TEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK TEBR1: LOCATION Position */
+#define ERRBNK_TEBR1_LOCATION_Msk          (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos)   /*!< ERRBNK TEBR1: LOCATION Mask */
+
+#define ERRBNK_TEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK TEBR1: LOCKED Position */
+#define ERRBNK_TEBR1_LOCKED_Msk            (0x1UL << ERRBNK_TEBR1_LOCKED_Pos)          /*!< ERRBNK TEBR1: LOCKED Mask */
+
+#define ERRBNK_TEBR1_VALID_Pos              0U                                         /*!< ERRBNK TEBR1: VALID Position */
+#define ERRBNK_TEBR1_VALID_Msk             (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/)       /*!< ERRBNK TEBR1: VALID Mask */
+
+/*@}*/ /* end of group ErrBnk_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup PrcCfgInf_Type     Processor Configuration Information Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Processor Configuration Information Registerss (PRCCFGINF)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Processor Configuration Information Registerss (PRCCFGINF).
+ */
+typedef struct
+{
+  __OM  uint32_t CFGINFOSEL;             /*!< Offset: 0x000 ( /W)  Processor Configuration Information Selection Register */
+  __IM  uint32_t CFGINFORD;              /*!< Offset: 0x004 (R/ )  Processor Configuration Information Read Data Register */
+} PrcCfgInf_Type;
+
+/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */
+
+/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */
+
+/*@}*/ /* end of group PrcCfgInf_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup STL_Type     Software Test Library Observation Registers
+  \brief    Type definitions for the Software Test Library Observation Registerss (STL)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Software Test Library Observation Registerss (STL).
+ */
+typedef struct
+{
+  __IM  uint32_t STLNVICPENDOR;          /*!< Offset: 0x000 (R/ )  NVIC Pending Priority Tree Register */
+  __IM  uint32_t STLNVICACTVOR;          /*!< Offset: 0x004 (R/ )  NVIC Active Priority Tree Register */
+        uint32_t RESERVED0[2U];
+  __OM  uint32_t STLIDMPUSR;             /*!< Offset: 0x010 ( /W)  MPU Sanple Register */
+  __IM  uint32_t STLIMPUOR;              /*!< Offset: 0x014 (R/ )  MPU Region Hit Register */
+  __IM  uint32_t STLD0MPUOR;             /*!< Offset: 0x018 (R/ )  MPU Memory Attributes Register 0 */
+  __IM  uint32_t STLD1MPUOR;             /*!< Offset: 0x01C (R/ )  MPU Memory Attributes Register 1 */
+
+} STL_Type;
+
+/* STL Software Test Library Observation Register (STLNVICPENDOR) Definitions */
+#define STL_STLNVICPENDOR_VALID_Pos        18U                                         /*!< STL STLNVICPENDOR: VALID Position */
+#define STL_STLNVICPENDOR_VALID_Msk        (0x1UL << STL_STLNVICPENDOR_VALID_Pos)      /*!< STL STLNVICPENDOR: VALID Mask */
+
+#define STL_STLNVICPENDOR_TARGET_Pos       17U                                         /*!< STL STLNVICPENDOR: TARGET Position */
+#define STL_STLNVICPENDOR_TARGET_Msk       (0x1UL << STL_STLNVICPENDOR_TARGET_Pos)     /*!< STL STLNVICPENDOR: TARGET Mask */
+
+#define STL_STLNVICPENDOR_PRIORITY_Pos      9U                                         /*!< STL STLNVICPENDOR: PRIORITY Position */
+#define STL_STLNVICPENDOR_PRIORITY_Msk     (0xFFUL << STL_STLNVICPENDOR_PRIORITY_Pos)  /*!< STL STLNVICPENDOR: PRIORITY Mask */
+
+#define STL_STLNVICPENDOR_INTNUM_Pos        0U                                         /*!< STL STLNVICPENDOR: INTNUM Position */
+#define STL_STLNVICPENDOR_INTNUM_Msk       (0x1FFUL /*<< STL_STLNVICPENDOR_INTNUM_Pos*/) /*!< STL STLNVICPENDOR: INTNUM Mask */
+
+/* STL Software Test Library Observation Register (STLNVICACTVOR) Definitions */
+#define STL_STLNVICACTVOR_VALID_Pos        18U                                         /*!< STL STLNVICACTVOR: VALID Position */
+#define STL_STLNVICACTVOR_VALID_Msk        (0x1UL << STL_STLNVICACTVOR_VALID_Pos)      /*!< STL STLNVICACTVOR: VALID Mask */
+
+#define STL_STLNVICACTVOR_TARGET_Pos       17U                                         /*!< STL STLNVICACTVOR: TARGET Position */
+#define STL_STLNVICACTVOR_TARGET_Msk       (0x1UL << STL_STLNVICACTVOR_TARGET_Pos)     /*!< STL STLNVICACTVOR: TARGET Mask */
+
+#define STL_STLNVICACTVOR_PRIORITY_Pos      9U                                         /*!< STL STLNVICACTVOR: PRIORITY Position */
+#define STL_STLNVICACTVOR_PRIORITY_Msk     (0xFFUL << STL_STLNVICACTVOR_PRIORITY_Pos)  /*!< STL STLNVICACTVOR: PRIORITY Mask */
+
+#define STL_STLNVICACTVOR_INTNUM_Pos        0U                                         /*!< STL STLNVICACTVOR: INTNUM Position */
+#define STL_STLNVICACTVOR_INTNUM_Msk       (0x1FFUL /*<< STL_STLNVICACTVOR_INTNUM_Pos*/) /*!< STL STLNVICACTVOR: INTNUM Mask */
+
+/* STL Software Test Library Observation Register (STLIDMPUSR) Definitions */
+#define STL_STLIDMPUSR_ADDR_Pos             5U                                         /*!< STL STLIDMPUSR: ADDR Position */
+#define STL_STLIDMPUSR_ADDR_Msk            (0x7FFFFFFUL << STL_STLIDMPUSR_ADDR_Pos)    /*!< STL STLIDMPUSR: ADDR Mask */
+
+#define STL_STLIDMPUSR_INSTR_Pos            2U                                         /*!< STL STLIDMPUSR: INSTR Position */
+#define STL_STLIDMPUSR_INSTR_Msk           (0x1UL << STL_STLIDMPUSR_INSTR_Pos)         /*!< STL STLIDMPUSR: INSTR Mask */
+
+#define STL_STLIDMPUSR_DATA_Pos             1U                                         /*!< STL STLIDMPUSR: DATA Position */
+#define STL_STLIDMPUSR_DATA_Msk            (0x1UL << STL_STLIDMPUSR_DATA_Pos)          /*!< STL STLIDMPUSR: DATA Mask */
+
+/* STL Software Test Library Observation Register (STLIMPUOR) Definitions */
+#define STL_STLIMPUOR_HITREGION_Pos         9U                                         /*!< STL STLIMPUOR: HITREGION Position */
+#define STL_STLIMPUOR_HITREGION_Msk        (0xFFUL << STL_STLIMPUOR_HITREGION_Pos)     /*!< STL STLIMPUOR: HITREGION Mask */
+
+#define STL_STLIMPUOR_ATTR_Pos              0U                                         /*!< STL STLIMPUOR: ATTR Position */
+#define STL_STLIMPUOR_ATTR_Msk             (0x1FFUL /*<< STL_STLIMPUOR_ATTR_Pos*/)     /*!< STL STLIMPUOR: ATTR Mask */
+
+/* STL Software Test Library Observation Register (STLD0MPUOR) Definitions */
+#define STL_STLD0MPUOR_HITREGION_Pos        9U                                         /*!< STL STLD0MPUOR: HITREGION Position */
+#define STL_STLD0MPUOR_HITREGION_Msk       (0xFFUL << STL_STLD0MPUOR_HITREGION_Pos)    /*!< STL STLD0MPUOR: HITREGION Mask */
+
+#define STL_STLD0MPUOR_ATTR_Pos             0U                                         /*!< STL STLD0MPUOR: ATTR Position */
+#define STL_STLD0MPUOR_ATTR_Msk            (0x1FFUL /*<< STL_STLD0MPUOR_ATTR_Pos*/)    /*!< STL STLD0MPUOR: ATTR Mask */
+
+/* STL Software Test Library Observation Register (STLD1MPUOR) Definitions */
+#define STL_STLD1MPUOR_HITREGION_Pos        9U                                         /*!< STL STLD1MPUOR: HITREGION Position */
+#define STL_STLD1MPUOR_HITREGION_Msk       (0xFFUL << STL_STLD1MPUOR_HITREGION_Pos)    /*!< STL STLD1MPUOR: HITREGION Mask */
+
+#define STL_STLD1MPUOR_ATTR_Pos             0U                                         /*!< STL STLD1MPUOR: ATTR Position */
+#define STL_STLD1MPUOR_ATTR_Msk            (0x1FFUL /*<< STL_STLD1MPUOR_ATTR_Pos*/)    /*!< STL STLD1MPUOR: ATTR Mask */
+
+/*@}*/ /* end of group STL_Type */
 
 
 /**
@@ -1524,15 +1988,14 @@ typedef struct
         uint32_t RESERVED11[108];
   __IOM uint32_t AUTHSTATUS;                        /*!< Offset: 0xFB8 (R/W)  PMU Authentication Status Register */
   __IOM uint32_t DEVARCH;                           /*!< Offset: 0xFBC (R/W)  PMU Device Architecture Register */
-        uint32_t RESERVED12[4];
+        uint32_t RESERVED12[3];
   __IOM uint32_t DEVTYPE;                           /*!< Offset: 0xFCC (R/W)  PMU Device Type Register */
   __IOM uint32_t PIDR4;                             /*!< Offset: 0xFD0 (R/W)  PMU Peripheral Identification Register 4 */
         uint32_t RESERVED13[3];
   __IOM uint32_t PIDR0;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 0 */
-  __IOM uint32_t PIDR1;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 1 */
-  __IOM uint32_t PIDR2;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 2 */
-  __IOM uint32_t PIDR3;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 3 */
-        uint32_t RESERVED14[3];
+  __IOM uint32_t PIDR1;                             /*!< Offset: 0xFE4 (R/W)  PMU Peripheral Identification Register 1 */
+  __IOM uint32_t PIDR2;                             /*!< Offset: 0xFE8 (R/W)  PMU Peripheral Identification Register 2 */
+  __IOM uint32_t PIDR3;                             /*!< Offset: 0xFEC (R/W)  PMU Peripheral Identification Register 3 */
   __IOM uint32_t CIDR0;                             /*!< Offset: 0xFF0 (R/W)  PMU Component Identification Register 0 */
   __IOM uint32_t CIDR1;                             /*!< Offset: 0xFF4 (R/W)  PMU Component Identification Register 1 */
   __IOM uint32_t CIDR2;                             /*!< Offset: 0xFF8 (R/W)  PMU Component Identification Register 2 */
@@ -3127,7 +3590,12 @@ typedef struct
   #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */
   #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */
   #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */
+  #define MEMSYSCTL_BASE      (0xE001E000UL)                             /*!< Memory System Control Base Address */
+  #define ERRBNK_BASE         (0xE001E100UL)                             /*!< Error Banking Base Address */
   #define PWRMODCTL_BASE      (0xE001E300UL)                             /*!< Power Mode Control Base Address */
+  #define EWIC_BASE           (0xE001E400UL)                             /*!< External Wakeup Interrupt Controller Base Address */
+  #define PRCCFGINF_BASE      (0xE001E700UL)                             /*!< Processor Configuration Information Base Address */
+  #define STL_BASE            (0xE001E800UL)                             /*!< Software Test Library Base Address */
   #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */
   #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< \deprecated Core Debug Base Address */
   #define DCB_BASE            (0xE000EDF0UL)                             /*!< DCB Base Address */
@@ -3136,14 +3604,19 @@ typedef struct
   #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */
   #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */
 
-  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */
+  #define ICB                 ((ICB_Type       *)     SCS_BASE         ) /*!< System control Register not in SCB */
   #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */
   #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */
   #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */
   #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */
   #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */
   #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */
+  #define MEMSYSCTL           ((MemSysCtl_Type *)     MEMSYSCTL_BASE   ) /*!< Memory System Control configuration struct */
+  #define ERRBNK              ((ErrBnk_Type    *)     ERRBNK_BASE      ) /*!< Error Banking configuration struct */
   #define PWRMODCTL           ((PwrModCtl_Type *)     PWRMODCTL_BASE   ) /*!< Power Mode Control configuration struct */
+  #define EWIC                ((EWIC_Type      *)     EWIC_BASE        ) /*!< EWIC configuration struct */
+  #define PRCCFGINF           ((PrcCfgInf_Type *)     PRCCFGINF_BASE   ) /*!< Processor Configuration Information configuration struct */
+  #define STL                 ((STL_Type       *)     STL_BASE         ) /*!< Software Test Library configuration struct */
   #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< \deprecated Core Debug configuration struct */
   #define DCB                 ((DCB_Type       *)     DCB_BASE         ) /*!< DCB configuration struct */
   #define DIB                 ((DIB_Type       *)     DIB_BASE         ) /*!< DIB configuration struct */
@@ -3175,7 +3648,7 @@ typedef struct
   #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */
   #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */
 
-  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */
+  #define ICB_NS              ((ICB_Type       *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */
   #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */
   #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */
   #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */
@@ -3195,6 +3668,69 @@ typedef struct
 /*@} */
 
 
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+#define ID_ADR  (ID_AFR)    /*!< SCB Auxiliary Feature Register */
+
+/* 'SCnSCB' is deprecated and replaced by 'ICB' */
+typedef ICB_Type SCnSCB_Type;
+
+/* Auxiliary Control Register Definitions */
+#define SCnSCB_ACTLR_DISCRITAXIRUW_Pos   (ICB_ACTLR_DISCRITAXIRUW_Pos)
+#define SCnSCB_ACTLR_DISCRITAXIRUW_Msk   (ICB_ACTLR_DISCRITAXIRUW_Msk)
+
+#define SCnSCB_ACTLR_DISDI_Pos           (ICB_ACTLR_DISDI_Pos)
+#define SCnSCB_ACTLR_DISDI_Msk           (ICB_ACTLR_DISDI_Msk)
+
+#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos   (ICB_ACTLR_DISCRITAXIRUR_Pos)
+#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk   (ICB_ACTLR_DISCRITAXIRUR_Msk)
+
+#define SCnSCB_ACTLR_EVENTBUSEN_Pos      (ICB_ACTLR_EVENTBUSEN_Pos)
+#define SCnSCB_ACTLR_EVENTBUSEN_Msk      (ICB_ACTLR_EVENTBUSEN_Msk)
+
+#define SCnSCB_ACTLR_EVENTBUSEN_S_Pos    (ICB_ACTLR_EVENTBUSEN_S_Pos)
+#define SCnSCB_ACTLR_EVENTBUSEN_S_Msk    (ICB_ACTLR_EVENTBUSEN_S_Msk)
+
+#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos  (ICB_ACTLR_DISITMATBFLUSH_Pos)
+#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk  (ICB_ACTLR_DISITMATBFLUSH_Msk)
+
+#define SCnSCB_ACTLR_DISNWAMODE_Pos      (ICB_ACTLR_DISNWAMODE_Pos)
+#define SCnSCB_ACTLR_DISNWAMODE_Msk      (ICB_ACTLR_DISNWAMODE_Msk)
+
+#define SCnSCB_ACTLR_FPEXCODIS_Pos       (ICB_ACTLR_FPEXCODIS_Pos)
+#define SCnSCB_ACTLR_FPEXCODIS_Msk       (ICB_ACTLR_FPEXCODIS_Msk)
+
+#define SCnSCB_ACTLR_DISOLAP_Pos         (ICB_ACTLR_DISOLAP_Pos)
+#define SCnSCB_ACTLR_DISOLAP_Msk         (ICB_ACTLR_DISOLAP_Msk)
+
+#define SCnSCB_ACTLR_DISOLAPS_Pos        (ICB_ACTLR_DISOLAPS_Pos)
+#define SCnSCB_ACTLR_DISOLAPS_Msk        (ICB_ACTLR_DISOLAPS_Msk)
+
+#define SCnSCB_ACTLR_DISLOBR_Pos         (ICB_ACTLR_DISLOBR_Pos)
+#define SCnSCB_ACTLR_DISLOBR_Msk         (ICB_ACTLR_DISLOBR_Msk)
+
+#define SCnSCB_ACTLR_DISLO_Pos           (ICB_ACTLR_DISLO_Pos)
+#define SCnSCB_ACTLR_DISLO_Msk           (ICB_ACTLR_DISLO_Msk)
+
+#define SCnSCB_ACTLR_DISLOLEP_Pos        (ICB_ACTLR_DISLOLEP_Pos)
+#define SCnSCB_ACTLR_DISLOLEP_Msk        (ICB_ACTLR_DISLOLEP_Msk)
+
+#define SCnSCB_ACTLR_DISFOLD_Pos         (ICB_ACTLR_DISFOLD_Pos)
+#define SCnSCB_ACTLR_DISFOLD_Msk         (ICB_ACTLR_DISFOLD_Msk)
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos      (ICB_ICTR_INTLINESNUM_Pos)
+#define SCnSCB_ICTR_INTLINESNUM_Msk      (ICB_ICTR_INTLINESNUM_Msk)
+
+#define SCnSCB                           (ICB)
+#define SCnSCB_NS                        (ICB_NS)
+
+/*@} */
+
 
 /*******************************************************************************
  *                Hardware Abstraction Layer
@@ -3888,6 +4424,9 @@ __STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)
 #define ARMCM55_PMU_NWAMODE_ENTER                    0xC200             /*!< No write-allocate mode entry */
 #define ARMCM55_PMU_NWAMODE                          0xC201             /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */
 #define ARMCM55_PMU_SAHB_ACCESS                      0xC300             /*!< Read or write access on the S-AHB interface to the TCM */
+#define ARMCM55_PMU_PAHB_ACCESS                      0xC301             /*!< Read or write access to the P-AHB write interface */
+#define ARMCM55_PMU_AXI_WRITE_ACCESS                 0xC302             /*!< Any beat access to M-AXI write interface */
+#define ARMCM55_PMU_AXI_READ_ACCESS                  0xC303             /*!< Any beat access to M-AXI read interface */
 #define ARMCM55_PMU_DOSTIMEOUT_DOUBLE                0xC400             /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */
 #define ARMCM55_PMU_DOSTIMEOUT_TRIPLE                0xC401             /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */
 

+ 4672 - 0
CMSIS/Core/Include/core_cm85.h

@@ -0,0 +1,4672 @@
+/**************************************************************************//**
+ * @file     core_cm85.h
+ * @brief    CMSIS Cortex-M85 Core Peripheral Access Layer Header File
+ * @version  V1.0.4
+ * @date     21. April 2022
+ ******************************************************************************/
+/*
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if   defined ( __ICCARM__ )
+  #pragma system_include                        /* treat file as system include file for MISRA check */
+#elif defined (__clang__)
+  #pragma clang system_header                   /* treat file as system include file */
+#elif defined ( __GNUC__ )
+  #pragma GCC diagnostic ignored "-Wpedantic"   /* disable pedantic warning due to unnamed structs/unions */
+#endif
+
+#ifndef __CORE_CM85_H_GENERIC
+#define __CORE_CM85_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup Cortex_M85
+  @{
+ */
+
+#include "cmsis_version.h"
+
+/*  CMSIS CM85 definitions */
+
+#define __CORTEX_M                      (85U)                                 /*!< Cortex-M Core */
+
+#if defined ( __CC_ARM )
+  #error Legacy Arm Compiler does not support Armv8.1-M target architecture.
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined __ARM_FP
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined(__ARM_FEATURE_DSP)
+    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED       0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined(__ARM_FEATURE_DSP)
+    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined(__ARM_FEATURE_DSP)
+    #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __TI_ARM__ )
+  #if defined __TI_VFP_SUPPORT__
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined __FPU_VFP__
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#endif
+
+#include "cmsis_compiler.h"               /* CMSIS compiler specific defines */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM85_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_CM85_H_DEPENDANT
+#define __CORE_CM85_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __CM85_REV
+    #define __CM85_REV               0x0001U
+    #warning "__CM85_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __FPU_PRESENT
+    #define __FPU_PRESENT             0U
+    #warning "__FPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #if __FPU_PRESENT != 0U
+    #ifndef __FPU_DP
+      #define __FPU_DP             0U
+      #warning "__FPU_DP not defined in device header file; using default!"
+    #endif
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __ICACHE_PRESENT
+    #define __ICACHE_PRESENT          0U
+    #warning "__ICACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DCACHE_PRESENT
+    #define __DCACHE_PRESENT          0U
+    #warning "__DCACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __VTOR_PRESENT
+    #define __VTOR_PRESENT             1U
+    #warning "__VTOR_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __PMU_PRESENT
+    #define __PMU_PRESENT             0U
+    #warning "__PMU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #if __PMU_PRESENT != 0U
+    #ifndef __PMU_NUM_EVENTCNT
+      #define __PMU_NUM_EVENTCNT      8U
+      #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!"
+    #elif (__PMU_NUM_EVENTCNT > 8 || __PMU_NUM_EVENTCNT < 2)
+    #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */
+    #endif
+  #endif
+
+  #ifndef __SAUREGION_PRESENT
+    #define __SAUREGION_PRESENT       0U
+    #warning "__SAUREGION_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DSP_PRESENT
+    #define __DSP_PRESENT             0U
+    #warning "__DSP_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          3U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group Cortex_M85 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core EWIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core PMU Register
+  - Core MPU Register
+  - Core SAU Register
+  - Core FPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for Cortex-M processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */
+#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:1;               /*!< bit:     20  Reserved */
+    uint32_t B:1;                        /*!< bit:     21  BTI active       (read 0) */
+    uint32_t _reserved2:2;               /*!< bit: 22..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_B_Pos                         21U                                            /*!< xPSR: B Position */
+#define xPSR_B_Msk                         (1UL << xPSR_B_Pos)                            /*!< xPSR: B Mask */
+
+#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */
+#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */
+    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */
+    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */
+    uint32_t BTI_EN:1;                   /*!< bit:      4  Privileged branch target identification enable */
+    uint32_t UBTI_EN:1;                  /*!< bit:      5  Unprivileged branch target identification enable */
+    uint32_t PAC_EN:1;                   /*!< bit:      6  Privileged pointer authentication enable */
+    uint32_t UPAC_EN:1;                  /*!< bit:      7  Unprivileged pointer authentication enable */
+    uint32_t _reserved1:24;              /*!< bit:  8..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_UPAC_EN_Pos                 7U                                            /*!< CONTROL: UPAC_EN Position */
+#define CONTROL_UPAC_EN_Msk                (1UL << CONTROL_UPAC_EN_Pos)                   /*!< CONTROL: UPAC_EN Mask */
+
+#define CONTROL_PAC_EN_Pos                  6U                                            /*!< CONTROL: PAC_EN Position */
+#define CONTROL_PAC_EN_Msk                 (1UL << CONTROL_PAC_EN_Pos)                    /*!< CONTROL: PAC_EN Mask */
+
+#define CONTROL_UBTI_EN_Pos                 5U                                            /*!< CONTROL: UBTI_EN Position */
+#define CONTROL_UBTI_EN_Msk                (1UL << CONTROL_UBTI_EN_Pos)                   /*!< CONTROL: UBTI_EN Mask */
+
+#define CONTROL_BTI_EN_Pos                  4U                                            /*!< CONTROL: BTI_EN Position */
+#define CONTROL_BTI_EN_Msk                 (1UL << CONTROL_BTI_EN_Pos)                    /*!< CONTROL: BTI_EN Mask */
+
+#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */
+#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */
+
+#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */
+#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */
+
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[16U];
+  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[16U];
+  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[16U];
+  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[16U];
+  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[16U];
+  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */
+        uint32_t RESERVED5[16U];
+  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED6[580U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ID_ISAR[6U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
+  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */
+  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */
+  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
+        uint32_t RESERVED7[21U];
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0x200 ( /W)  Software Triggered Interrupt Register */
+  __IOM uint32_t RFSR;                   /*!< Offset: 0x204 (R/W)  RAS Fault Status Register */
+        uint32_t RESERVED4[14U];
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */
+        uint32_t RESERVED5[1U];
+  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */
+        uint32_t RESERVED6[1U];
+  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */
+  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */
+  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */
+  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */
+  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */
+  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */
+  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */
+  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */
+  __OM  uint32_t BPIALL;                 /*!< Offset: 0x278 ( /W)  Branch Predictor Invalidate All */
+} SCB_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */
+#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */
+
+#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */
+#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */
+
+#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */
+#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */
+#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */
+#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */
+
+#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */
+#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_IESB_Pos                  5U                                            /*!< SCB AIRCR: Implicit ESB Enable Position */
+#define SCB_AIRCR_IESB_Msk                 (1UL << SCB_AIRCR_IESB_Pos)                    /*!< SCB AIRCR: Implicit ESB Enable Mask */
+
+#define SCB_AIRCR_DIT_Pos                   4U                                            /*!< SCB AIRCR: Data Independent Timing Position */
+#define SCB_AIRCR_DIT_Msk                  (1UL << SCB_AIRCR_DIT_Pos)                     /*!< SCB AIRCR: Data Independent Timing Mask */
+
+#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */
+#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */
+#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_TRD_Pos                    20U                                            /*!< SCB CCR: TRD Position */
+#define SCB_CCR_TRD_Msk                    (1UL << SCB_CCR_TRD_Pos)                       /*!< SCB CCR: TRD Mask */
+
+#define SCB_CCR_LOB_Pos                    19U                                            /*!< SCB CCR: LOB Position */
+#define SCB_CCR_LOB_Msk                    (1UL << SCB_CCR_LOB_Pos)                       /*!< SCB CCR: LOB Mask */
+
+#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */
+#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */
+
+#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */
+#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */
+
+#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */
+#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */
+
+#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */
+#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */
+#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */
+
+#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */
+#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */
+
+#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */
+#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */
+
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */
+#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */
+
+#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */
+#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */
+#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_MMARVALID_Pos             (SCB_CFSR_MEMFAULTSR_Pos + 7U)                 /*!< SCB CFSR (MMFSR): MMARVALID Position */
+#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */
+
+#define SCB_CFSR_MLSPERR_Pos               (SCB_CFSR_MEMFAULTSR_Pos + 5U)                 /*!< SCB CFSR (MMFSR): MLSPERR Position */
+#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */
+
+#define SCB_CFSR_MSTKERR_Pos               (SCB_CFSR_MEMFAULTSR_Pos + 4U)                 /*!< SCB CFSR (MMFSR): MSTKERR Position */
+#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */
+
+#define SCB_CFSR_MUNSTKERR_Pos             (SCB_CFSR_MEMFAULTSR_Pos + 3U)                 /*!< SCB CFSR (MMFSR): MUNSTKERR Position */
+#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */
+
+#define SCB_CFSR_DACCVIOL_Pos              (SCB_CFSR_MEMFAULTSR_Pos + 1U)                 /*!< SCB CFSR (MMFSR): DACCVIOL Position */
+#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */
+
+#define SCB_CFSR_IACCVIOL_Pos              (SCB_CFSR_MEMFAULTSR_Pos + 0U)                 /*!< SCB CFSR (MMFSR): IACCVIOL Position */
+#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */
+
+/* BusFault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */
+#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */
+
+#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */
+#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */
+
+#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */
+#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */
+
+#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */
+#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */
+
+#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */
+#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */
+
+#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */
+#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */
+
+#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */
+#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */
+
+/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */
+#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */
+
+#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */
+#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */
+
+#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */
+#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */
+
+#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */
+#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */
+
+#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */
+#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */
+
+#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */
+#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */
+
+#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */
+#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_PMU_Pos                    5U                                            /*!< SCB DFSR: PMU Position */
+#define SCB_DFSR_PMU_Msk                   (1UL << SCB_DFSR_PMU_Pos)                      /*!< SCB DFSR: PMU Mask */
+
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/* SCB Non-Secure Access Control Register Definitions */
+#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */
+#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */
+
+#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */
+#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */
+
+#define SCB_NSACR_CP7_Pos                   7U                                            /*!< SCB NSACR: CP7 Position */
+#define SCB_NSACR_CP7_Msk                  (1UL << SCB_NSACR_CP7_Pos)                     /*!< SCB NSACR: CP7 Mask */
+
+#define SCB_NSACR_CP6_Pos                   6U                                            /*!< SCB NSACR: CP6 Position */
+#define SCB_NSACR_CP6_Msk                  (1UL << SCB_NSACR_CP6_Pos)                     /*!< SCB NSACR: CP6 Mask */
+
+#define SCB_NSACR_CP5_Pos                   5U                                            /*!< SCB NSACR: CP5 Position */
+#define SCB_NSACR_CP5_Msk                  (1UL << SCB_NSACR_CP5_Pos)                     /*!< SCB NSACR: CP5 Mask */
+
+#define SCB_NSACR_CP4_Pos                   4U                                            /*!< SCB NSACR: CP4 Position */
+#define SCB_NSACR_CP4_Msk                  (1UL << SCB_NSACR_CP4_Pos)                     /*!< SCB NSACR: CP4 Mask */
+
+#define SCB_NSACR_CP3_Pos                   3U                                            /*!< SCB NSACR: CP3 Position */
+#define SCB_NSACR_CP3_Msk                  (1UL << SCB_NSACR_CP3_Pos)                     /*!< SCB NSACR: CP3 Mask */
+
+#define SCB_NSACR_CP2_Pos                   2U                                            /*!< SCB NSACR: CP2 Position */
+#define SCB_NSACR_CP2_Msk                  (1UL << SCB_NSACR_CP2_Pos)                     /*!< SCB NSACR: CP2 Mask */
+
+#define SCB_NSACR_CP1_Pos                   1U                                            /*!< SCB NSACR: CP1 Position */
+#define SCB_NSACR_CP1_Msk                  (1UL << SCB_NSACR_CP1_Pos)                     /*!< SCB NSACR: CP1 Mask */
+
+#define SCB_NSACR_CP0_Pos                   0U                                            /*!< SCB NSACR: CP0 Position */
+#define SCB_NSACR_CP0_Msk                  (1UL /*<< SCB_NSACR_CP0_Pos*/)                 /*!< SCB NSACR: CP0 Mask */
+
+/* SCB Debug Feature Register 0 Definitions */
+#define SCB_ID_DFR_UDE_Pos                 28U                                            /*!< SCB ID_DFR: UDE Position */
+#define SCB_ID_DFR_UDE_Msk                 (0xFUL << SCB_ID_DFR_UDE_Pos)                  /*!< SCB ID_DFR: UDE Mask */
+
+#define SCB_ID_DFR_MProfDbg_Pos            20U                                            /*!< SCB ID_DFR: MProfDbg Position */
+#define SCB_ID_DFR_MProfDbg_Msk            (0xFUL << SCB_ID_DFR_MProfDbg_Pos)             /*!< SCB ID_DFR: MProfDbg Mask */
+
+/* SCB Cache Level ID Register Definitions */
+#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */
+#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */
+
+#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */
+#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */
+
+/* SCB Cache Type Register Definitions */
+#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */
+#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */
+
+#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */
+#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */
+
+#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */
+#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */
+
+#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */
+#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */
+
+#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */
+#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */
+
+/* SCB Cache Size ID Register Definitions */
+#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */
+#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */
+
+#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */
+#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */
+
+#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */
+#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */
+
+#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */
+#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */
+
+#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */
+#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */
+
+#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */
+#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */
+
+#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */
+#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */
+
+/* SCB Cache Size Selection Register Definitions */
+#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */
+#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */
+
+#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */
+#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */
+
+/* SCB Software Triggered Interrupt Register Definitions */
+#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */
+#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */
+
+/* SCB RAS Fault Status Register Definitions */
+#define SCB_RFSR_V_Pos                     31U                                            /*!< SCB RFSR: V Position */
+#define SCB_RFSR_V_Msk                     (1UL << SCB_RFSR_V_Pos)                        /*!< SCB RFSR: V Mask */
+
+#define SCB_RFSR_IS_Pos                    16U                                            /*!< SCB RFSR: IS Position */
+#define SCB_RFSR_IS_Msk                    (0x7FFFUL << SCB_RFSR_IS_Pos)                  /*!< SCB RFSR: IS Mask */
+
+#define SCB_RFSR_UET_Pos                    0U                                            /*!< SCB RFSR: UET Position */
+#define SCB_RFSR_UET_Msk                   (3UL /*<< SCB_RFSR_UET_Pos*/)                  /*!< SCB RFSR: UET Mask */
+
+/* SCB D-Cache Invalidate by Set-way Register Definitions */
+#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */
+#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */
+
+#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */
+#define SCB_DCISW_SET_Msk                  (0x1FFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */
+
+/* SCB D-Cache Clean by Set-way Register Definitions */
+#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */
+#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */
+
+#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */
+#define SCB_DCCSW_SET_Msk                  (0x1FFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */
+
+/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */
+#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */
+#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */
+
+#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */
+#define SCB_DCCISW_SET_Msk                 (0x1FFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ICB Implementation Control Block register (ICB)
+  \brief    Type definitions for the Implementation Control Block Register
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Implementation Control Block (ICB).
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */
+} ICB_Type;
+
+/* Auxiliary Control Register Definitions */
+#define ICB_ACTLR_DISCRITAXIRUW_Pos     27U                                               /*!< ACTLR: DISCRITAXIRUW Position */
+#define ICB_ACTLR_DISCRITAXIRUW_Msk     (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos)              /*!< ACTLR: DISCRITAXIRUW Mask */
+
+#define ICB_ACTLR_DISCRITAXIRUR_Pos     15U                                               /*!< ACTLR: DISCRITAXIRUR Position */
+#define ICB_ACTLR_DISCRITAXIRUR_Msk     (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos)              /*!< ACTLR: DISCRITAXIRUR Mask */
+
+#define ICB_ACTLR_EVENTBUSEN_Pos        14U                                               /*!< ACTLR: EVENTBUSEN Position */
+#define ICB_ACTLR_EVENTBUSEN_Msk        (1UL << ICB_ACTLR_EVENTBUSEN_Pos)                 /*!< ACTLR: EVENTBUSEN Mask */
+
+#define ICB_ACTLR_EVENTBUSEN_S_Pos      13U                                               /*!< ACTLR: EVENTBUSEN_S Position */
+#define ICB_ACTLR_EVENTBUSEN_S_Msk      (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos)               /*!< ACTLR: EVENTBUSEN_S Mask */
+
+#define ICB_ACTLR_DISITMATBFLUSH_Pos    12U                                               /*!< ACTLR: DISITMATBFLUSH Position */
+#define ICB_ACTLR_DISITMATBFLUSH_Msk    (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos)             /*!< ACTLR: DISITMATBFLUSH Mask */
+
+#define ICB_ACTLR_DISNWAMODE_Pos        11U                                               /*!< ACTLR: DISNWAMODE Position */
+#define ICB_ACTLR_DISNWAMODE_Msk        (1UL << ICB_ACTLR_DISNWAMODE_Pos)                 /*!< ACTLR: DISNWAMODE Mask */
+
+#define ICB_ACTLR_FPEXCODIS_Pos         10U                                               /*!< ACTLR: FPEXCODIS Position */
+#define ICB_ACTLR_FPEXCODIS_Msk         (1UL << ICB_ACTLR_FPEXCODIS_Pos)                  /*!< ACTLR: FPEXCODIS Mask */
+
+/* Interrupt Controller Type Register Definitions */
+#define ICB_ICTR_INTLINESNUM_Pos         0U                                               /*!< ICTR: INTLINESNUM Position */
+#define ICB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/)           /*!< ICTR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_ICB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[32U];
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[1U];
+  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */
+        uint32_t RESERVED6[3U];
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  ITM Device Type Register */
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Stimulus Port Register Definitions */
+#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */
+#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */
+
+#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */
+#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/)            /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */
+#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */
+
+#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */
+#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+        uint32_t RESERVED3[1U];
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED4[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+        uint32_t RESERVED5[1U];
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED6[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+        uint32_t RESERVED7[1U];
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+        uint32_t RESERVED8[1U];
+  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */
+        uint32_t RESERVED9[1U];
+  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */
+        uint32_t RESERVED10[1U];
+  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */
+        uint32_t RESERVED11[1U];
+  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */
+        uint32_t RESERVED12[1U];
+  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */
+        uint32_t RESERVED13[1U];
+  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */
+        uint32_t RESERVED14[1U];
+  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */
+        uint32_t RESERVED15[1U];
+  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */
+        uint32_t RESERVED16[1U];
+  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */
+        uint32_t RESERVED17[1U];
+  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */
+        uint32_t RESERVED18[1U];
+  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */
+        uint32_t RESERVED19[1U];
+  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */
+        uint32_t RESERVED20[1U];
+  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */
+        uint32_t RESERVED21[1U];
+  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */
+        uint32_t RESERVED22[1U];
+  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */
+        uint32_t RESERVED23[1U];
+  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */
+        uint32_t RESERVED24[1U];
+  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */
+        uint32_t RESERVED25[1U];
+  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */
+        uint32_t RESERVED26[1U];
+  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */
+        uint32_t RESERVED27[1U];
+  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */
+        uint32_t RESERVED28[1U];
+  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */
+        uint32_t RESERVED29[1U];
+  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */
+        uint32_t RESERVED30[1U];
+  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */
+        uint32_t RESERVED31[1U];
+  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */
+        uint32_t RESERVED32[934U];
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */
+        uint32_t RESERVED33[1U];
+  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */
+#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */
+#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */
+
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */
+#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */
+
+#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */
+#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup MemSysCtl_Type     Memory System Control Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Memory System Control Registers (MEMSYSCTL)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory System Control Registers (MEMSYSCTL).
+ */
+typedef struct
+{
+  __IOM uint32_t MSCR;                   /*!< Offset: 0x000 (R/W)  Memory System Control Register */
+  __IOM uint32_t PFCR;                   /*!< Offset: 0x004 (R/W)  Prefetcher Control Register */
+        uint32_t RESERVED1[2U];
+  __IOM uint32_t ITCMCR;                 /*!< Offset: 0x010 (R/W)  ITCM Control Register */
+  __IOM uint32_t DTCMCR;                 /*!< Offset: 0x014 (R/W)  DTCM Control Register */
+  __IOM uint32_t PAHBCR;                 /*!< Offset: 0x018 (R/W)  P-AHB Control Register */
+        uint32_t RESERVED2[313U];
+  __IOM uint32_t ITGU_CTRL;              /*!< Offset: 0x500 (R/W)  ITGU Control Register */
+  __IOM uint32_t ITGU_CFG;               /*!< Offset: 0x504 (R/W)  ITGU Configuration Register */
+        uint32_t RESERVED3[2U];
+  __IOM uint32_t ITGU_LUT[16U];          /*!< Offset: 0x510 (R/W)  ITGU Look Up Table Register */
+        uint32_t RESERVED4[44U];
+  __IOM uint32_t DTGU_CTRL;              /*!< Offset: 0x600 (R/W)  DTGU Control Registers */
+  __IOM uint32_t DTGU_CFG;               /*!< Offset: 0x604 (R/W)  DTGU Configuration Register */
+        uint32_t RESERVED5[2U];
+  __IOM uint32_t DTGU_LUT[16U];          /*!< Offset: 0x610 (R/W)  DTGU Look Up Table Register */
+} MemSysCtl_Type;
+
+/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */
+#define MEMSYSCTL_MSCR_CPWRDN_Pos          17U                                         /*!< MEMSYSCTL MSCR: CPWRDN Position */
+#define MEMSYSCTL_MSCR_CPWRDN_Msk          (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos)        /*!< MEMSYSCTL MSCR: CPWRDN Mask */
+
+#define MEMSYSCTL_MSCR_DCCLEAN_Pos         16U                                         /*!< MEMSYSCTL MSCR: DCCLEAN Position */
+#define MEMSYSCTL_MSCR_DCCLEAN_Msk         (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos)       /*!< MEMSYSCTL MSCR: DCCLEAN Mask */
+
+#define MEMSYSCTL_MSCR_ICACTIVE_Pos        13U                                         /*!< MEMSYSCTL MSCR: ICACTIVE Position */
+#define MEMSYSCTL_MSCR_ICACTIVE_Msk        (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos)      /*!< MEMSYSCTL MSCR: ICACTIVE Mask */
+
+#define MEMSYSCTL_MSCR_DCACTIVE_Pos        12U                                         /*!< MEMSYSCTL MSCR: DCACTIVE Position */
+#define MEMSYSCTL_MSCR_DCACTIVE_Msk        (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos)      /*!< MEMSYSCTL MSCR: DCACTIVE Mask */
+
+#define MEMSYSCTL_MSCR_EVECCFAULT_Pos       3U                                         /*!< MEMSYSCTL MSCR: EVECCFAULT Position */
+#define MEMSYSCTL_MSCR_EVECCFAULT_Msk      (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos)    /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */
+
+#define MEMSYSCTL_MSCR_FORCEWT_Pos          2U                                         /*!< MEMSYSCTL MSCR: FORCEWT Position */
+#define MEMSYSCTL_MSCR_FORCEWT_Msk         (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos)       /*!< MEMSYSCTL MSCR: FORCEWT Mask */
+
+#define MEMSYSCTL_MSCR_ECCEN_Pos            1U                                         /*!< MEMSYSCTL MSCR: ECCEN Position */
+#define MEMSYSCTL_MSCR_ECCEN_Msk           (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos)         /*!< MEMSYSCTL MSCR: ECCEN Mask */
+
+/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */
+#define MEMSYSCTL_PFCR_DIS_NLP_Pos          7U                                         /*!< MEMSYSCTL PFCR: DIS_NLP Position */
+#define MEMSYSCTL_PFCR_DIS_NLP_Msk         (0x1UL << MEMSYSCTL_PFCR_DIS_NLP_Pos)       /*!< MEMSYSCTL PFCR: DIS_NLP Mask */
+
+#define MEMSYSCTL_PFCR_ENABLE_Pos           0U                                         /*!< MEMSYSCTL PFCR: ENABLE Position */
+#define MEMSYSCTL_PFCR_ENABLE_Msk          (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/)    /*!< MEMSYSCTL PFCR: ENABLE Mask */
+
+/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */
+#define MEMSYSCTL_ITCMCR_SZ_Pos             3U                                         /*!< MEMSYSCTL ITCMCR: SZ Position */
+#define MEMSYSCTL_ITCMCR_SZ_Msk            (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos)          /*!< MEMSYSCTL ITCMCR: SZ Mask */
+
+#define MEMSYSCTL_ITCMCR_EN_Pos             0U                                         /*!< MEMSYSCTL ITCMCR: EN Position */
+#define MEMSYSCTL_ITCMCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/)      /*!< MEMSYSCTL ITCMCR: EN Mask */
+
+/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */
+#define MEMSYSCTL_DTCMCR_SZ_Pos             3U                                         /*!< MEMSYSCTL DTCMCR: SZ Position */
+#define MEMSYSCTL_DTCMCR_SZ_Msk            (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos)          /*!< MEMSYSCTL DTCMCR: SZ Mask */
+
+#define MEMSYSCTL_DTCMCR_EN_Pos             0U                                         /*!< MEMSYSCTL DTCMCR: EN Position */
+#define MEMSYSCTL_DTCMCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/)      /*!< MEMSYSCTL DTCMCR: EN Mask */
+
+/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */
+#define MEMSYSCTL_PAHBCR_SZ_Pos             1U                                         /*!< MEMSYSCTL PAHBCR: SZ Position */
+#define MEMSYSCTL_PAHBCR_SZ_Msk            (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos)          /*!< MEMSYSCTL PAHBCR: SZ Mask */
+
+#define MEMSYSCTL_PAHBCR_EN_Pos             0U                                         /*!< MEMSYSCTL PAHBCR: EN Position */
+#define MEMSYSCTL_PAHBCR_EN_Msk            (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/)      /*!< MEMSYSCTL PAHBCR: EN Mask */
+
+/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */
+#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos       1U                                         /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */
+#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk      (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos)    /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */
+
+#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos       0U                                         /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */
+#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk      (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */
+
+/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */
+#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos     31U                                         /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */
+#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk     (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos)   /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */
+
+#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos      8U                                         /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */
+#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk     (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos)   /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */
+
+#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos        0U                                         /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */
+#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk       (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */
+
+/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */
+#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos       1U                                         /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */
+#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk      (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos)    /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */
+
+#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos       0U                                         /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */
+#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk      (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */
+
+/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */
+#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos     31U                                         /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */
+#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk     (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos)   /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */
+
+#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos      8U                                         /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */
+#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk     (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos)   /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */
+
+#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos        0U                                         /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */
+#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk       (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */
+
+
+/*@}*/ /* end of group MemSysCtl_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup PwrModCtl_Type     Power Mode Control Registers
+  \brief    Type definitions for the Power Mode Control Registers (PWRMODCTL)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Power Mode Control Registers (PWRMODCTL).
+ */
+typedef struct
+{
+  __IOM uint32_t CPDLPSTATE;             /*!< Offset: 0x000 (R/W)  Core Power Domain Low Power State Register */
+  __IOM uint32_t DPDLPSTATE;             /*!< Offset: 0x004 (R/W)  Debug Power Domain Low Power State Register */
+} PwrModCtl_Type;
+
+/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */
+#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos   8U                                              /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk  (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos)     /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */
+
+#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos   4U                                              /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk  (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos)     /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */
+
+#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos   0U                                              /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */
+#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk  (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */
+
+/* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */
+#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos   0U                                              /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */
+#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk  (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */
+
+/*@}*/ /* end of group PwrModCtl_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup EWIC_Type     External Wakeup Interrupt Controller Registers
+  \brief    Type definitions for the External Wakeup Interrupt Controller Registers (EWIC)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the External Wakeup Interrupt Controller Registers (EWIC).
+ */
+typedef struct
+{
+  __OM  uint32_t EVENTSPR;               /*!< Offset: 0x000 ( /W)  Event Set Pending Register */
+        uint32_t RESERVED0[31U];
+  __IM  uint32_t EVENTMASKA;             /*!< Offset: 0x080 (R/W)  Event Mask A Register */
+  __IM  uint32_t EVENTMASK[15];          /*!< Offset: 0x084 (R/W)  Event Mask Register */
+} EWIC_Type;
+
+/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */
+#define EWIC_EVENTSPR_EDBGREQ_Pos   2U                                                 /*!< EWIC EVENTSPR: EDBGREQ Position */
+#define EWIC_EVENTSPR_EDBGREQ_Msk  (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos)                /*!< EWIC EVENTSPR: EDBGREQ Mask */
+
+#define EWIC_EVENTSPR_NMI_Pos   1U                                                     /*!< EWIC EVENTSPR: NMI Position */
+#define EWIC_EVENTSPR_NMI_Msk  (0x1UL << EWIC_EVENTSPR_NMI_Pos)                        /*!< EWIC EVENTSPR: NMI Mask */
+
+#define EWIC_EVENTSPR_EVENT_Pos   0U                                                   /*!< EWIC EVENTSPR: EVENT Position */
+#define EWIC_EVENTSPR_EVENT_Msk  (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/)                /*!< EWIC EVENTSPR: EVENT Mask */
+
+/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */
+#define EWIC_EVENTMASKA_EDBGREQ_Pos   2U                                               /*!< EWIC EVENTMASKA: EDBGREQ Position */
+#define EWIC_EVENTMASKA_EDBGREQ_Msk  (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos)            /*!< EWIC EVENTMASKA: EDBGREQ Mask */
+
+#define EWIC_EVENTMASKA_NMI_Pos   1U                                                   /*!< EWIC EVENTMASKA: NMI Position */
+#define EWIC_EVENTMASKA_NMI_Msk  (0x1UL << EWIC_EVENTMASKA_NMI_Pos)                    /*!< EWIC EVENTMASKA: NMI Mask */
+
+#define EWIC_EVENTMASKA_EVENT_Pos   0U                                                 /*!< EWIC EVENTMASKA: EVENT Position */
+#define EWIC_EVENTMASKA_EVENT_Msk  (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/)            /*!< EWIC EVENTMASKA: EVENT Mask */
+
+/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */
+#define EWIC_EVENTMASK_IRQ_Pos   0U                                                    /*!< EWIC EVENTMASKA: IRQ Position */
+#define EWIC_EVENTMASK_IRQ_Msk  (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/)          /*!< EWIC EVENTMASKA: IRQ Mask */
+
+/*@}*/ /* end of group EWIC_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup ErrBnk_Type     Error Banking Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Error Banking Registers (ERRBNK)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Error Banking Registers (ERRBNK).
+ */
+typedef struct
+{
+  __IOM uint32_t IEBR0;                  /*!< Offset: 0x000 (R/W)  Instruction Cache Error Bank Register 0 */
+  __IOM uint32_t IEBR1;                  /*!< Offset: 0x004 (R/W)  Instruction Cache Error Bank Register 1 */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t DEBR0;                  /*!< Offset: 0x010 (R/W)  Data Cache Error Bank Register 0 */
+  __IOM uint32_t DEBR1;                  /*!< Offset: 0x014 (R/W)  Data Cache Error Bank Register 1 */
+        uint32_t RESERVED1[2U];
+  __IOM uint32_t TEBR0;                  /*!< Offset: 0x020 (R/W)  TCM Error Bank Register 0 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t TEBR1;                  /*!< Offset: 0x028 (R/W)  TCM Error Bank Register 1 */
+} ErrBnk_Type;
+
+/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */
+#define ERRBNK_IEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK IEBR0: SWDEF Position */
+#define ERRBNK_IEBR0_SWDEF_Msk             (0x3UL << ERRBNK_IEBR0_SWDEF_Pos)           /*!< ERRBNK IEBR0: SWDEF Mask */
+
+#define ERRBNK_IEBR0_BANK_Pos              16U                                         /*!< ERRBNK IEBR0: BANK Position */
+#define ERRBNK_IEBR0_BANK_Msk              (0x1UL << ERRBNK_IEBR0_BANK_Pos)            /*!< ERRBNK IEBR0: BANK Mask */
+
+#define ERRBNK_IEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK IEBR0: LOCATION Position */
+#define ERRBNK_IEBR0_LOCATION_Msk          (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos)     /*!< ERRBNK IEBR0: LOCATION Mask */
+
+#define ERRBNK_IEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK IEBR0: LOCKED Position */
+#define ERRBNK_IEBR0_LOCKED_Msk            (0x1UL << ERRBNK_IEBR0_LOCKED_Pos)          /*!< ERRBNK IEBR0: LOCKED Mask */
+
+#define ERRBNK_IEBR0_VALID_Pos              0U                                         /*!< ERRBNK IEBR0: VALID Position */
+#define ERRBNK_IEBR0_VALID_Msk             (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/)       /*!< ERRBNK IEBR0: VALID Mask */
+
+/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */
+#define ERRBNK_IEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK IEBR1: SWDEF Position */
+#define ERRBNK_IEBR1_SWDEF_Msk             (0x3UL << ERRBNK_IEBR1_SWDEF_Pos)           /*!< ERRBNK IEBR1: SWDEF Mask */
+
+#define ERRBNK_IEBR1_BANK_Pos              16U                                         /*!< ERRBNK IEBR1: BANK Position */
+#define ERRBNK_IEBR1_BANK_Msk              (0x1UL << ERRBNK_IEBR1_BANK_Pos)            /*!< ERRBNK IEBR1: BANK Mask */
+
+#define ERRBNK_IEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK IEBR1: LOCATION Position */
+#define ERRBNK_IEBR1_LOCATION_Msk          (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos)     /*!< ERRBNK IEBR1: LOCATION Mask */
+
+#define ERRBNK_IEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK IEBR1: LOCKED Position */
+#define ERRBNK_IEBR1_LOCKED_Msk            (0x1UL << ERRBNK_IEBR1_LOCKED_Pos)          /*!< ERRBNK IEBR1: LOCKED Mask */
+
+#define ERRBNK_IEBR1_VALID_Pos              0U                                         /*!< ERRBNK IEBR1: VALID Position */
+#define ERRBNK_IEBR1_VALID_Msk             (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/)       /*!< ERRBNK IEBR1: VALID Mask */
+
+/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */
+#define ERRBNK_DEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK DEBR0: SWDEF Position */
+#define ERRBNK_DEBR0_SWDEF_Msk             (0x3UL << ERRBNK_DEBR0_SWDEF_Pos)           /*!< ERRBNK DEBR0: SWDEF Mask */
+
+#define ERRBNK_DEBR0_TYPE_Pos              17U                                         /*!< ERRBNK DEBR0: TYPE Position */
+#define ERRBNK_DEBR0_TYPE_Msk              (0x1UL << ERRBNK_DEBR0_TYPE_Pos)            /*!< ERRBNK DEBR0: TYPE Mask */
+
+#define ERRBNK_DEBR0_BANK_Pos              16U                                         /*!< ERRBNK DEBR0: BANK Position */
+#define ERRBNK_DEBR0_BANK_Msk              (0x1UL << ERRBNK_DEBR0_BANK_Pos)            /*!< ERRBNK DEBR0: BANK Mask */
+
+#define ERRBNK_DEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK DEBR0: LOCATION Position */
+#define ERRBNK_DEBR0_LOCATION_Msk          (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos)     /*!< ERRBNK DEBR0: LOCATION Mask */
+
+#define ERRBNK_DEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK DEBR0: LOCKED Position */
+#define ERRBNK_DEBR0_LOCKED_Msk            (0x1UL << ERRBNK_DEBR0_LOCKED_Pos)          /*!< ERRBNK DEBR0: LOCKED Mask */
+
+#define ERRBNK_DEBR0_VALID_Pos              0U                                         /*!< ERRBNK DEBR0: VALID Position */
+#define ERRBNK_DEBR0_VALID_Msk             (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/)       /*!< ERRBNK DEBR0: VALID Mask */
+
+/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */
+#define ERRBNK_DEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK DEBR1: SWDEF Position */
+#define ERRBNK_DEBR1_SWDEF_Msk             (0x3UL << ERRBNK_DEBR1_SWDEF_Pos)           /*!< ERRBNK DEBR1: SWDEF Mask */
+
+#define ERRBNK_DEBR1_TYPE_Pos              17U                                         /*!< ERRBNK DEBR1: TYPE Position */
+#define ERRBNK_DEBR1_TYPE_Msk              (0x1UL << ERRBNK_DEBR1_TYPE_Pos)            /*!< ERRBNK DEBR1: TYPE Mask */
+
+#define ERRBNK_DEBR1_BANK_Pos              16U                                         /*!< ERRBNK DEBR1: BANK Position */
+#define ERRBNK_DEBR1_BANK_Msk              (0x1UL << ERRBNK_DEBR1_BANK_Pos)            /*!< ERRBNK DEBR1: BANK Mask */
+
+#define ERRBNK_DEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK DEBR1: LOCATION Position */
+#define ERRBNK_DEBR1_LOCATION_Msk          (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos)     /*!< ERRBNK DEBR1: LOCATION Mask */
+
+#define ERRBNK_DEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK DEBR1: LOCKED Position */
+#define ERRBNK_DEBR1_LOCKED_Msk            (0x1UL << ERRBNK_DEBR1_LOCKED_Pos)          /*!< ERRBNK DEBR1: LOCKED Mask */
+
+#define ERRBNK_DEBR1_VALID_Pos              0U                                         /*!< ERRBNK DEBR1: VALID Position */
+#define ERRBNK_DEBR1_VALID_Msk             (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/)       /*!< ERRBNK DEBR1: VALID Mask */
+
+/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */
+#define ERRBNK_TEBR0_SWDEF_Pos             30U                                         /*!< ERRBNK TEBR0: SWDEF Position */
+#define ERRBNK_TEBR0_SWDEF_Msk             (0x3UL << ERRBNK_TEBR0_SWDEF_Pos)           /*!< ERRBNK TEBR0: SWDEF Mask */
+
+#define ERRBNK_TEBR0_POISON_Pos            28U                                         /*!< ERRBNK TEBR0: POISON Position */
+#define ERRBNK_TEBR0_POISON_Msk            (0x1UL << ERRBNK_TEBR0_POISON_Pos)          /*!< ERRBNK TEBR0: POISON Mask */
+
+#define ERRBNK_TEBR0_TYPE_Pos              27U                                         /*!< ERRBNK TEBR0: TYPE Position */
+#define ERRBNK_TEBR0_TYPE_Msk              (0x1UL << ERRBNK_TEBR0_TYPE_Pos)            /*!< ERRBNK TEBR0: TYPE Mask */
+
+#define ERRBNK_TEBR0_BANK_Pos              24U                                         /*!< ERRBNK TEBR0: BANK Position */
+#define ERRBNK_TEBR0_BANK_Msk              (0x3UL << ERRBNK_TEBR0_BANK_Pos)            /*!< ERRBNK TEBR0: BANK Mask */
+
+#define ERRBNK_TEBR0_LOCATION_Pos           2U                                         /*!< ERRBNK TEBR0: LOCATION Position */
+#define ERRBNK_TEBR0_LOCATION_Msk          (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos)   /*!< ERRBNK TEBR0: LOCATION Mask */
+
+#define ERRBNK_TEBR0_LOCKED_Pos             1U                                         /*!< ERRBNK TEBR0: LOCKED Position */
+#define ERRBNK_TEBR0_LOCKED_Msk            (0x1UL << ERRBNK_TEBR0_LOCKED_Pos)          /*!< ERRBNK TEBR0: LOCKED Mask */
+
+#define ERRBNK_TEBR0_VALID_Pos              0U                                         /*!< ERRBNK TEBR0: VALID Position */
+#define ERRBNK_TEBR0_VALID_Msk             (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/)       /*!< ERRBNK TEBR0: VALID Mask */
+
+/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */
+#define ERRBNK_TEBR1_SWDEF_Pos             30U                                         /*!< ERRBNK TEBR1: SWDEF Position */
+#define ERRBNK_TEBR1_SWDEF_Msk             (0x3UL << ERRBNK_TEBR1_SWDEF_Pos)           /*!< ERRBNK TEBR1: SWDEF Mask */
+
+#define ERRBNK_TEBR1_POISON_Pos            28U                                         /*!< ERRBNK TEBR1: POISON Position */
+#define ERRBNK_TEBR1_POISON_Msk            (0x1UL << ERRBNK_TEBR1_POISON_Pos)          /*!< ERRBNK TEBR1: POISON Mask */
+
+#define ERRBNK_TEBR1_TYPE_Pos              27U                                         /*!< ERRBNK TEBR1: TYPE Position */
+#define ERRBNK_TEBR1_TYPE_Msk              (0x1UL << ERRBNK_TEBR1_TYPE_Pos)            /*!< ERRBNK TEBR1: TYPE Mask */
+
+#define ERRBNK_TEBR1_BANK_Pos              24U                                         /*!< ERRBNK TEBR1: BANK Position */
+#define ERRBNK_TEBR1_BANK_Msk              (0x3UL << ERRBNK_TEBR1_BANK_Pos)            /*!< ERRBNK TEBR1: BANK Mask */
+
+#define ERRBNK_TEBR1_LOCATION_Pos           2U                                         /*!< ERRBNK TEBR1: LOCATION Position */
+#define ERRBNK_TEBR1_LOCATION_Msk          (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos)   /*!< ERRBNK TEBR1: LOCATION Mask */
+
+#define ERRBNK_TEBR1_LOCKED_Pos             1U                                         /*!< ERRBNK TEBR1: LOCKED Position */
+#define ERRBNK_TEBR1_LOCKED_Msk            (0x1UL << ERRBNK_TEBR1_LOCKED_Pos)          /*!< ERRBNK TEBR1: LOCKED Mask */
+
+#define ERRBNK_TEBR1_VALID_Pos              0U                                         /*!< ERRBNK TEBR1: VALID Position */
+#define ERRBNK_TEBR1_VALID_Msk             (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/)       /*!< ERRBNK TEBR1: VALID Mask */
+
+/*@}*/ /* end of group ErrBnk_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup PrcCfgInf_Type     Processor Configuration Information Registers (IMPLEMENTATION DEFINED)
+  \brief    Type definitions for the Processor Configuration Information Registerss (PRCCFGINF)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Processor Configuration Information Registerss (PRCCFGINF).
+ */
+typedef struct
+{
+  __OM  uint32_t CFGINFOSEL;             /*!< Offset: 0x000 ( /W)  Processor Configuration Information Selection Register */
+  __IM  uint32_t CFGINFORD;              /*!< Offset: 0x004 (R/ )  Processor Configuration Information Read Data Register */
+} PrcCfgInf_Type;
+
+/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */
+
+/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */
+
+/*@}*/ /* end of group PrcCfgInf_Type */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Sizes Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Sizes Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */
+        uint32_t RESERVED3[809U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  Software Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  Software Lock Status Register */
+        uint32_t RESERVED4[4U];
+  __IM  uint32_t TYPE;                   /*!< Offset: 0xFC8 (R/ )  Device Identifier Register */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Register */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_SWOSCALER_Pos              0U                                         /*!< TPI ACPR: SWOSCALER Position */
+#define TPI_ACPR_SWOSCALER_Msk             (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/)    /*!< TPI ACPR: SWOSCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */
+#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */
+
+#define TPI_FFCR_EnFmt_Pos                  0U                                         /*!< TPI FFCR: EnFmt Position */
+#define TPI_FFCR_EnFmt_Msk                 (0x3UL << /*TPI_FFCR_EnFmt_Pos*/)           /*!< TPI FFCR: EnFmt Mask */
+
+/* TPI Periodic Synchronization Control Register Definitions */
+#define TPI_PSCR_PSCount_Pos                0U                                         /*!< TPI PSCR: PSCount Position */
+#define TPI_PSCR_PSCount_Msk               (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/)        /*!< TPI PSCR: TPSCount Mask */
+
+/* TPI Software Lock Status Register Definitions */
+#define TPI_LSR_nTT_Pos                     1U                                         /*!< TPI LSR: Not thirty-two bit. Position */
+#define TPI_LSR_nTT_Msk                    (0x1UL << TPI_LSR_nTT_Pos)                  /*!< TPI LSR: Not thirty-two bit. Mask */
+
+#define TPI_LSR_SLK_Pos                     1U                                         /*!< TPI LSR: Software Lock status Position */
+#define TPI_LSR_SLK_Msk                    (0x1UL << TPI_LSR_SLK_Pos)                  /*!< TPI LSR: Software Lock status Mask */
+
+#define TPI_LSR_SLI_Pos                     0U                                         /*!< TPI LSR: Software Lock implemented Position */
+#define TPI_LSR_SLI_Msk                    (0x1UL /*<< TPI_LSR_SLI_Pos*/)              /*!< TPI LSR: Software Lock implemented Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFO depth Position */
+#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFO depth Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_PMU     Performance Monitoring Unit (PMU)
+  \brief    Type definitions for the Performance Monitoring Unit (PMU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Performance Monitoring Unit (PMU).
+ */
+typedef struct
+{
+  __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT];        /*!< Offset: 0x0 (R/W)    PMU Event Counter Registers */
+#if __PMU_NUM_EVENTCNT<31
+        uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT];
+#endif
+  __IOM uint32_t CCNTR;                             /*!< Offset: 0x7C (R/W)   PMU Cycle Counter Register */
+        uint32_t RESERVED1[224];
+  __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT];       /*!< Offset: 0x400 (R/W)  PMU Event Type and Filter Registers */
+#if __PMU_NUM_EVENTCNT<31
+        uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT];
+#endif
+  __IOM uint32_t CCFILTR;                           /*!< Offset: 0x47C (R/W)  PMU Cycle Counter Filter Register */
+        uint32_t RESERVED3[480];
+  __IOM uint32_t CNTENSET;                          /*!< Offset: 0xC00 (R/W)  PMU Count Enable Set Register */
+        uint32_t RESERVED4[7];
+  __IOM uint32_t CNTENCLR;                          /*!< Offset: 0xC20 (R/W)  PMU Count Enable Clear Register */
+        uint32_t RESERVED5[7];
+  __IOM uint32_t INTENSET;                          /*!< Offset: 0xC40 (R/W)  PMU Interrupt Enable Set Register */
+        uint32_t RESERVED6[7];
+  __IOM uint32_t INTENCLR;                          /*!< Offset: 0xC60 (R/W)  PMU Interrupt Enable Clear Register */
+        uint32_t RESERVED7[7];
+  __IOM uint32_t OVSCLR;                            /*!< Offset: 0xC80 (R/W)  PMU Overflow Flag Status Clear Register */
+        uint32_t RESERVED8[7];
+  __IOM uint32_t SWINC;                             /*!< Offset: 0xCA0 (R/W)  PMU Software Increment Register */
+        uint32_t RESERVED9[7];
+  __IOM uint32_t OVSSET;                            /*!< Offset: 0xCC0 (R/W)  PMU Overflow Flag Status Set Register */
+        uint32_t RESERVED10[79];
+  __IOM uint32_t TYPE;                              /*!< Offset: 0xE00 (R/W)  PMU Type Register */
+  __IOM uint32_t CTRL;                              /*!< Offset: 0xE04 (R/W)  PMU Control Register */
+        uint32_t RESERVED11[108];
+  __IOM uint32_t AUTHSTATUS;                        /*!< Offset: 0xFB8 (R/W)  PMU Authentication Status Register */
+  __IOM uint32_t DEVARCH;                           /*!< Offset: 0xFBC (R/W)  PMU Device Architecture Register */
+        uint32_t RESERVED12[3];
+  __IOM uint32_t DEVTYPE;                           /*!< Offset: 0xFCC (R/W)  PMU Device Type Register */
+  __IOM uint32_t PIDR4;                             /*!< Offset: 0xFD0 (R/W)  PMU Peripheral Identification Register 4 */
+        uint32_t RESERVED13[3];
+  __IOM uint32_t PIDR0;                             /*!< Offset: 0xFE0 (R/W)  PMU Peripheral Identification Register 0 */
+  __IOM uint32_t PIDR1;                             /*!< Offset: 0xFE4 (R/W)  PMU Peripheral Identification Register 1 */
+  __IOM uint32_t PIDR2;                             /*!< Offset: 0xFE8 (R/W)  PMU Peripheral Identification Register 2 */
+  __IOM uint32_t PIDR3;                             /*!< Offset: 0xFEC (R/W)  PMU Peripheral Identification Register 3 */
+  __IOM uint32_t CIDR0;                             /*!< Offset: 0xFF0 (R/W)  PMU Component Identification Register 0 */
+  __IOM uint32_t CIDR1;                             /*!< Offset: 0xFF4 (R/W)  PMU Component Identification Register 1 */
+  __IOM uint32_t CIDR2;                             /*!< Offset: 0xFF8 (R/W)  PMU Component Identification Register 2 */
+  __IOM uint32_t CIDR3;                             /*!< Offset: 0xFFC (R/W)  PMU Component Identification Register 3 */
+} PMU_Type;
+
+/** \brief PMU Event Counter Registers (0-30) Definitions  */
+
+#define PMU_EVCNTR_CNT_Pos                    0U                                           /*!< PMU EVCNTR: Counter Position */
+#define PMU_EVCNTR_CNT_Msk                   (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/)         /*!< PMU EVCNTR: Counter Mask */
+
+/** \brief PMU Event Type and Filter Registers (0-30) Definitions  */
+
+#define PMU_EVTYPER_EVENTTOCNT_Pos            0U                                           /*!< PMU EVTYPER: Event to Count Position */
+#define PMU_EVTYPER_EVENTTOCNT_Msk           (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/)     /*!< PMU EVTYPER: Event to Count Mask */
+
+/** \brief PMU Count Enable Set Register Definitions */
+
+#define PMU_CNTENSET_CNT0_ENABLE_Pos          0U                                           /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */
+#define PMU_CNTENSET_CNT0_ENABLE_Msk         (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/)     /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT1_ENABLE_Pos          1U                                           /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */
+#define PMU_CNTENSET_CNT1_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT2_ENABLE_Pos          2U                                           /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */
+#define PMU_CNTENSET_CNT2_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT3_ENABLE_Pos          3U                                           /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */
+#define PMU_CNTENSET_CNT3_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT4_ENABLE_Pos          4U                                           /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */
+#define PMU_CNTENSET_CNT4_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT5_ENABLE_Pos          5U                                           /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */
+#define PMU_CNTENSET_CNT5_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT6_ENABLE_Pos          6U                                           /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */
+#define PMU_CNTENSET_CNT6_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT7_ENABLE_Pos          7U                                           /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */
+#define PMU_CNTENSET_CNT7_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT8_ENABLE_Pos          8U                                           /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */
+#define PMU_CNTENSET_CNT8_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT9_ENABLE_Pos          9U                                           /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */
+#define PMU_CNTENSET_CNT9_ENABLE_Msk         (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos)         /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT10_ENABLE_Pos         10U                                          /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */
+#define PMU_CNTENSET_CNT10_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT11_ENABLE_Pos         11U                                          /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */
+#define PMU_CNTENSET_CNT11_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT12_ENABLE_Pos         12U                                          /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */
+#define PMU_CNTENSET_CNT12_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT13_ENABLE_Pos         13U                                          /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */
+#define PMU_CNTENSET_CNT13_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT14_ENABLE_Pos         14U                                          /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */
+#define PMU_CNTENSET_CNT14_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT15_ENABLE_Pos         15U                                          /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */
+#define PMU_CNTENSET_CNT15_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT16_ENABLE_Pos         16U                                          /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */
+#define PMU_CNTENSET_CNT16_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT17_ENABLE_Pos         17U                                          /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */
+#define PMU_CNTENSET_CNT17_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT18_ENABLE_Pos         18U                                          /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */
+#define PMU_CNTENSET_CNT18_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT19_ENABLE_Pos         19U                                          /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */
+#define PMU_CNTENSET_CNT19_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT20_ENABLE_Pos         20U                                          /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */
+#define PMU_CNTENSET_CNT20_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT21_ENABLE_Pos         21U                                          /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */
+#define PMU_CNTENSET_CNT21_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT22_ENABLE_Pos         22U                                          /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */
+#define PMU_CNTENSET_CNT22_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT23_ENABLE_Pos         23U                                          /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */
+#define PMU_CNTENSET_CNT23_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT24_ENABLE_Pos         24U                                          /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */
+#define PMU_CNTENSET_CNT24_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT25_ENABLE_Pos         25U                                          /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */
+#define PMU_CNTENSET_CNT25_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT26_ENABLE_Pos         26U                                          /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */
+#define PMU_CNTENSET_CNT26_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT27_ENABLE_Pos         27U                                          /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */
+#define PMU_CNTENSET_CNT27_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT28_ENABLE_Pos         28U                                          /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */
+#define PMU_CNTENSET_CNT28_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT29_ENABLE_Pos         29U                                          /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */
+#define PMU_CNTENSET_CNT29_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */
+
+#define PMU_CNTENSET_CNT30_ENABLE_Pos         30U                                          /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */
+#define PMU_CNTENSET_CNT30_ENABLE_Msk        (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos)        /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */
+
+#define PMU_CNTENSET_CCNTR_ENABLE_Pos         31U                                          /*!< PMU CNTENSET: Cycle Counter Enable Set Position */
+#define PMU_CNTENSET_CCNTR_ENABLE_Msk        (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos)        /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */
+
+/** \brief PMU Count Enable Clear Register Definitions */
+
+#define PMU_CNTENSET_CNT0_ENABLE_Pos          0U                                           /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */
+#define PMU_CNTENCLR_CNT0_ENABLE_Msk         (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/)     /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT1_ENABLE_Pos          1U                                           /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */
+#define PMU_CNTENCLR_CNT1_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */
+
+#define PMU_CNTENCLR_CNT2_ENABLE_Pos          2U                                           /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */
+#define PMU_CNTENCLR_CNT2_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT3_ENABLE_Pos          3U                                           /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */
+#define PMU_CNTENCLR_CNT3_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT4_ENABLE_Pos          4U                                           /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */
+#define PMU_CNTENCLR_CNT4_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT5_ENABLE_Pos          5U                                           /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */
+#define PMU_CNTENCLR_CNT5_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT6_ENABLE_Pos          6U                                           /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */
+#define PMU_CNTENCLR_CNT6_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT7_ENABLE_Pos          7U                                           /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */
+#define PMU_CNTENCLR_CNT7_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT8_ENABLE_Pos          8U                                           /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */
+#define PMU_CNTENCLR_CNT8_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT9_ENABLE_Pos          9U                                           /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */
+#define PMU_CNTENCLR_CNT9_ENABLE_Msk         (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos)         /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT10_ENABLE_Pos         10U                                          /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */
+#define PMU_CNTENCLR_CNT10_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT11_ENABLE_Pos         11U                                          /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */
+#define PMU_CNTENCLR_CNT11_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT12_ENABLE_Pos         12U                                          /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */
+#define PMU_CNTENCLR_CNT12_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT13_ENABLE_Pos         13U                                          /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */
+#define PMU_CNTENCLR_CNT13_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT14_ENABLE_Pos         14U                                          /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */
+#define PMU_CNTENCLR_CNT14_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT15_ENABLE_Pos         15U                                          /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */
+#define PMU_CNTENCLR_CNT15_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT16_ENABLE_Pos         16U                                          /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */
+#define PMU_CNTENCLR_CNT16_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT17_ENABLE_Pos         17U                                          /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */
+#define PMU_CNTENCLR_CNT17_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT18_ENABLE_Pos         18U                                          /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */
+#define PMU_CNTENCLR_CNT18_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT19_ENABLE_Pos         19U                                          /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */
+#define PMU_CNTENCLR_CNT19_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT20_ENABLE_Pos         20U                                          /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */
+#define PMU_CNTENCLR_CNT20_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT21_ENABLE_Pos         21U                                          /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */
+#define PMU_CNTENCLR_CNT21_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT22_ENABLE_Pos         22U                                          /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */
+#define PMU_CNTENCLR_CNT22_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT23_ENABLE_Pos         23U                                          /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */
+#define PMU_CNTENCLR_CNT23_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT24_ENABLE_Pos         24U                                          /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */
+#define PMU_CNTENCLR_CNT24_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT25_ENABLE_Pos         25U                                          /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */
+#define PMU_CNTENCLR_CNT25_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT26_ENABLE_Pos         26U                                          /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */
+#define PMU_CNTENCLR_CNT26_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT27_ENABLE_Pos         27U                                          /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */
+#define PMU_CNTENCLR_CNT27_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT28_ENABLE_Pos         28U                                          /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */
+#define PMU_CNTENCLR_CNT28_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT29_ENABLE_Pos         29U                                          /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */
+#define PMU_CNTENCLR_CNT29_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CNT30_ENABLE_Pos         30U                                          /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */
+#define PMU_CNTENCLR_CNT30_ENABLE_Msk        (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos)        /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */
+
+#define PMU_CNTENCLR_CCNTR_ENABLE_Pos         31U                                          /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */
+#define PMU_CNTENCLR_CCNTR_ENABLE_Msk        (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos)        /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */
+
+/** \brief PMU Interrupt Enable Set Register Definitions */
+
+#define PMU_INTENSET_CNT0_ENABLE_Pos          0U                                           /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT0_ENABLE_Msk         (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/)     /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT1_ENABLE_Pos          1U                                           /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT1_ENABLE_Msk         (1UL << PMU_INTENSET_CNT1_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT2_ENABLE_Pos          2U                                           /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT2_ENABLE_Msk         (1UL << PMU_INTENSET_CNT2_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT3_ENABLE_Pos          3U                                           /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT3_ENABLE_Msk         (1UL << PMU_INTENSET_CNT3_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT4_ENABLE_Pos          4U                                           /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT4_ENABLE_Msk         (1UL << PMU_INTENSET_CNT4_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT5_ENABLE_Pos          5U                                           /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT5_ENABLE_Msk         (1UL << PMU_INTENSET_CNT5_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT6_ENABLE_Pos          6U                                           /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT6_ENABLE_Msk         (1UL << PMU_INTENSET_CNT6_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT7_ENABLE_Pos          7U                                           /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT7_ENABLE_Msk         (1UL << PMU_INTENSET_CNT7_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT8_ENABLE_Pos          8U                                           /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT8_ENABLE_Msk         (1UL << PMU_INTENSET_CNT8_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT9_ENABLE_Pos          9U                                           /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT9_ENABLE_Msk         (1UL << PMU_INTENSET_CNT9_ENABLE_Pos)         /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT10_ENABLE_Pos         10U                                          /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT10_ENABLE_Msk        (1UL << PMU_INTENSET_CNT10_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT11_ENABLE_Pos         11U                                          /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT11_ENABLE_Msk        (1UL << PMU_INTENSET_CNT11_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT12_ENABLE_Pos         12U                                          /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT12_ENABLE_Msk        (1UL << PMU_INTENSET_CNT12_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT13_ENABLE_Pos         13U                                          /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT13_ENABLE_Msk        (1UL << PMU_INTENSET_CNT13_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT14_ENABLE_Pos         14U                                          /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT14_ENABLE_Msk        (1UL << PMU_INTENSET_CNT14_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT15_ENABLE_Pos         15U                                          /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT15_ENABLE_Msk        (1UL << PMU_INTENSET_CNT15_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT16_ENABLE_Pos         16U                                          /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT16_ENABLE_Msk        (1UL << PMU_INTENSET_CNT16_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT17_ENABLE_Pos         17U                                          /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT17_ENABLE_Msk        (1UL << PMU_INTENSET_CNT17_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT18_ENABLE_Pos         18U                                          /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT18_ENABLE_Msk        (1UL << PMU_INTENSET_CNT18_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT19_ENABLE_Pos         19U                                          /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT19_ENABLE_Msk        (1UL << PMU_INTENSET_CNT19_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT20_ENABLE_Pos         20U                                          /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT20_ENABLE_Msk        (1UL << PMU_INTENSET_CNT20_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT21_ENABLE_Pos         21U                                          /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT21_ENABLE_Msk        (1UL << PMU_INTENSET_CNT21_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT22_ENABLE_Pos         22U                                          /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT22_ENABLE_Msk        (1UL << PMU_INTENSET_CNT22_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT23_ENABLE_Pos         23U                                          /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT23_ENABLE_Msk        (1UL << PMU_INTENSET_CNT23_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT24_ENABLE_Pos         24U                                          /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT24_ENABLE_Msk        (1UL << PMU_INTENSET_CNT24_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT25_ENABLE_Pos         25U                                          /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT25_ENABLE_Msk        (1UL << PMU_INTENSET_CNT25_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT26_ENABLE_Pos         26U                                          /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT26_ENABLE_Msk        (1UL << PMU_INTENSET_CNT26_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT27_ENABLE_Pos         27U                                          /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT27_ENABLE_Msk        (1UL << PMU_INTENSET_CNT27_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT28_ENABLE_Pos         28U                                          /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT28_ENABLE_Msk        (1UL << PMU_INTENSET_CNT28_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT29_ENABLE_Pos         29U                                          /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT29_ENABLE_Msk        (1UL << PMU_INTENSET_CNT29_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CNT30_ENABLE_Pos         30U                                          /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */
+#define PMU_INTENSET_CNT30_ENABLE_Msk        (1UL << PMU_INTENSET_CNT30_ENABLE_Pos)        /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */
+
+#define PMU_INTENSET_CYCCNT_ENABLE_Pos        31U                                          /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */
+#define PMU_INTENSET_CCYCNT_ENABLE_Msk       (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos)       /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */
+
+/** \brief PMU Interrupt Enable Clear Register Definitions */
+
+#define PMU_INTENSET_CNT0_ENABLE_Pos          0U                                           /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT0_ENABLE_Msk         (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/)     /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT1_ENABLE_Pos          1U                                           /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT1_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */
+
+#define PMU_INTENCLR_CNT2_ENABLE_Pos          2U                                           /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT2_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT3_ENABLE_Pos          3U                                           /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT3_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT4_ENABLE_Pos          4U                                           /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT4_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT5_ENABLE_Pos          5U                                           /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT5_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT6_ENABLE_Pos          6U                                           /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT6_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT7_ENABLE_Pos          7U                                           /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT7_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT8_ENABLE_Pos          8U                                           /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT8_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT9_ENABLE_Pos          9U                                           /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT9_ENABLE_Msk         (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos)         /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT10_ENABLE_Pos         10U                                          /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT10_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT11_ENABLE_Pos         11U                                          /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT11_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT12_ENABLE_Pos         12U                                          /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT12_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT13_ENABLE_Pos         13U                                          /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT13_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT14_ENABLE_Pos         14U                                          /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT14_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT15_ENABLE_Pos         15U                                          /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT15_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT16_ENABLE_Pos         16U                                          /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT16_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT17_ENABLE_Pos         17U                                          /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT17_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT18_ENABLE_Pos         18U                                          /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT18_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT19_ENABLE_Pos         19U                                          /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT19_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT20_ENABLE_Pos         20U                                          /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT20_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT21_ENABLE_Pos         21U                                          /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT21_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT22_ENABLE_Pos         22U                                          /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT22_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT23_ENABLE_Pos         23U                                          /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT23_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT24_ENABLE_Pos         24U                                          /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT24_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT25_ENABLE_Pos         25U                                          /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT25_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT26_ENABLE_Pos         26U                                          /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT26_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT27_ENABLE_Pos         27U                                          /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT27_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT28_ENABLE_Pos         28U                                          /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT28_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT29_ENABLE_Pos         29U                                          /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT29_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CNT30_ENABLE_Pos         30U                                          /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CNT30_ENABLE_Msk        (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos)        /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */
+
+#define PMU_INTENCLR_CYCCNT_ENABLE_Pos        31U                                          /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */
+#define PMU_INTENCLR_CYCCNT_ENABLE_Msk       (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos)       /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */
+
+/** \brief PMU Overflow Flag Status Set Register Definitions */
+
+#define PMU_OVSSET_CNT0_STATUS_Pos            0U                                           /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */
+#define PMU_OVSSET_CNT0_STATUS_Msk           (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/)       /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT1_STATUS_Pos            1U                                           /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */
+#define PMU_OVSSET_CNT1_STATUS_Msk           (1UL << PMU_OVSSET_CNT1_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT2_STATUS_Pos            2U                                           /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */
+#define PMU_OVSSET_CNT2_STATUS_Msk           (1UL << PMU_OVSSET_CNT2_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT3_STATUS_Pos            3U                                           /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */
+#define PMU_OVSSET_CNT3_STATUS_Msk           (1UL << PMU_OVSSET_CNT3_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT4_STATUS_Pos            4U                                           /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */
+#define PMU_OVSSET_CNT4_STATUS_Msk           (1UL << PMU_OVSSET_CNT4_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT5_STATUS_Pos            5U                                           /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */
+#define PMU_OVSSET_CNT5_STATUS_Msk           (1UL << PMU_OVSSET_CNT5_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT6_STATUS_Pos            6U                                           /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */
+#define PMU_OVSSET_CNT6_STATUS_Msk           (1UL << PMU_OVSSET_CNT6_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT7_STATUS_Pos            7U                                           /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */
+#define PMU_OVSSET_CNT7_STATUS_Msk           (1UL << PMU_OVSSET_CNT7_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT8_STATUS_Pos            8U                                           /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */
+#define PMU_OVSSET_CNT8_STATUS_Msk           (1UL << PMU_OVSSET_CNT8_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT9_STATUS_Pos            9U                                           /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */
+#define PMU_OVSSET_CNT9_STATUS_Msk           (1UL << PMU_OVSSET_CNT9_STATUS_Pos)           /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT10_STATUS_Pos           10U                                          /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */
+#define PMU_OVSSET_CNT10_STATUS_Msk          (1UL << PMU_OVSSET_CNT10_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT11_STATUS_Pos           11U                                          /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */
+#define PMU_OVSSET_CNT11_STATUS_Msk          (1UL << PMU_OVSSET_CNT11_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT12_STATUS_Pos           12U                                          /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */
+#define PMU_OVSSET_CNT12_STATUS_Msk          (1UL << PMU_OVSSET_CNT12_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT13_STATUS_Pos           13U                                          /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */
+#define PMU_OVSSET_CNT13_STATUS_Msk          (1UL << PMU_OVSSET_CNT13_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT14_STATUS_Pos           14U                                          /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */
+#define PMU_OVSSET_CNT14_STATUS_Msk          (1UL << PMU_OVSSET_CNT14_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT15_STATUS_Pos           15U                                          /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */
+#define PMU_OVSSET_CNT15_STATUS_Msk          (1UL << PMU_OVSSET_CNT15_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT16_STATUS_Pos           16U                                          /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */
+#define PMU_OVSSET_CNT16_STATUS_Msk          (1UL << PMU_OVSSET_CNT16_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT17_STATUS_Pos           17U                                          /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */
+#define PMU_OVSSET_CNT17_STATUS_Msk          (1UL << PMU_OVSSET_CNT17_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT18_STATUS_Pos           18U                                          /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */
+#define PMU_OVSSET_CNT18_STATUS_Msk          (1UL << PMU_OVSSET_CNT18_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT19_STATUS_Pos           19U                                          /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */
+#define PMU_OVSSET_CNT19_STATUS_Msk          (1UL << PMU_OVSSET_CNT19_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT20_STATUS_Pos           20U                                          /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */
+#define PMU_OVSSET_CNT20_STATUS_Msk          (1UL << PMU_OVSSET_CNT20_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT21_STATUS_Pos           21U                                          /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */
+#define PMU_OVSSET_CNT21_STATUS_Msk          (1UL << PMU_OVSSET_CNT21_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT22_STATUS_Pos           22U                                          /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */
+#define PMU_OVSSET_CNT22_STATUS_Msk          (1UL << PMU_OVSSET_CNT22_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT23_STATUS_Pos           23U                                          /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */
+#define PMU_OVSSET_CNT23_STATUS_Msk          (1UL << PMU_OVSSET_CNT23_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT24_STATUS_Pos           24U                                          /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */
+#define PMU_OVSSET_CNT24_STATUS_Msk          (1UL << PMU_OVSSET_CNT24_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT25_STATUS_Pos           25U                                          /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */
+#define PMU_OVSSET_CNT25_STATUS_Msk          (1UL << PMU_OVSSET_CNT25_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT26_STATUS_Pos           26U                                          /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */
+#define PMU_OVSSET_CNT26_STATUS_Msk          (1UL << PMU_OVSSET_CNT26_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT27_STATUS_Pos           27U                                          /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */
+#define PMU_OVSSET_CNT27_STATUS_Msk          (1UL << PMU_OVSSET_CNT27_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT28_STATUS_Pos           28U                                          /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */
+#define PMU_OVSSET_CNT28_STATUS_Msk          (1UL << PMU_OVSSET_CNT28_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT29_STATUS_Pos           29U                                          /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */
+#define PMU_OVSSET_CNT29_STATUS_Msk          (1UL << PMU_OVSSET_CNT29_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */
+
+#define PMU_OVSSET_CNT30_STATUS_Pos           30U                                          /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */
+#define PMU_OVSSET_CNT30_STATUS_Msk          (1UL << PMU_OVSSET_CNT30_STATUS_Pos)          /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */
+
+#define PMU_OVSSET_CYCCNT_STATUS_Pos          31U                                          /*!< PMU OVSSET: Cycle Counter Overflow Set Position */
+#define PMU_OVSSET_CYCCNT_STATUS_Msk         (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos)         /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */
+
+/** \brief PMU Overflow Flag Status Clear Register Definitions */
+
+#define PMU_OVSCLR_CNT0_STATUS_Pos            0U                                           /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */
+#define PMU_OVSCLR_CNT0_STATUS_Msk           (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/)       /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT1_STATUS_Pos            1U                                           /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */
+#define PMU_OVSCLR_CNT1_STATUS_Msk           (1UL << PMU_OVSCLR_CNT1_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */
+
+#define PMU_OVSCLR_CNT2_STATUS_Pos            2U                                           /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */
+#define PMU_OVSCLR_CNT2_STATUS_Msk           (1UL << PMU_OVSCLR_CNT2_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT3_STATUS_Pos            3U                                           /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */
+#define PMU_OVSCLR_CNT3_STATUS_Msk           (1UL << PMU_OVSCLR_CNT3_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT4_STATUS_Pos            4U                                           /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */
+#define PMU_OVSCLR_CNT4_STATUS_Msk           (1UL << PMU_OVSCLR_CNT4_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT5_STATUS_Pos            5U                                           /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */
+#define PMU_OVSCLR_CNT5_STATUS_Msk           (1UL << PMU_OVSCLR_CNT5_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT6_STATUS_Pos            6U                                           /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */
+#define PMU_OVSCLR_CNT6_STATUS_Msk           (1UL << PMU_OVSCLR_CNT6_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT7_STATUS_Pos            7U                                           /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */
+#define PMU_OVSCLR_CNT7_STATUS_Msk           (1UL << PMU_OVSCLR_CNT7_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT8_STATUS_Pos            8U                                           /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */
+#define PMU_OVSCLR_CNT8_STATUS_Msk           (1UL << PMU_OVSCLR_CNT8_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT9_STATUS_Pos            9U                                           /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */
+#define PMU_OVSCLR_CNT9_STATUS_Msk           (1UL << PMU_OVSCLR_CNT9_STATUS_Pos)           /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT10_STATUS_Pos           10U                                          /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */
+#define PMU_OVSCLR_CNT10_STATUS_Msk          (1UL << PMU_OVSCLR_CNT10_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT11_STATUS_Pos           11U                                          /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */
+#define PMU_OVSCLR_CNT11_STATUS_Msk          (1UL << PMU_OVSCLR_CNT11_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT12_STATUS_Pos           12U                                          /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */
+#define PMU_OVSCLR_CNT12_STATUS_Msk          (1UL << PMU_OVSCLR_CNT12_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT13_STATUS_Pos           13U                                          /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */
+#define PMU_OVSCLR_CNT13_STATUS_Msk          (1UL << PMU_OVSCLR_CNT13_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT14_STATUS_Pos           14U                                          /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */
+#define PMU_OVSCLR_CNT14_STATUS_Msk          (1UL << PMU_OVSCLR_CNT14_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT15_STATUS_Pos           15U                                          /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */
+#define PMU_OVSCLR_CNT15_STATUS_Msk          (1UL << PMU_OVSCLR_CNT15_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT16_STATUS_Pos           16U                                          /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */
+#define PMU_OVSCLR_CNT16_STATUS_Msk          (1UL << PMU_OVSCLR_CNT16_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT17_STATUS_Pos           17U                                          /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */
+#define PMU_OVSCLR_CNT17_STATUS_Msk          (1UL << PMU_OVSCLR_CNT17_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT18_STATUS_Pos           18U                                          /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */
+#define PMU_OVSCLR_CNT18_STATUS_Msk          (1UL << PMU_OVSCLR_CNT18_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT19_STATUS_Pos           19U                                          /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */
+#define PMU_OVSCLR_CNT19_STATUS_Msk          (1UL << PMU_OVSCLR_CNT19_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT20_STATUS_Pos           20U                                          /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */
+#define PMU_OVSCLR_CNT20_STATUS_Msk          (1UL << PMU_OVSCLR_CNT20_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT21_STATUS_Pos           21U                                          /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */
+#define PMU_OVSCLR_CNT21_STATUS_Msk          (1UL << PMU_OVSCLR_CNT21_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT22_STATUS_Pos           22U                                          /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */
+#define PMU_OVSCLR_CNT22_STATUS_Msk          (1UL << PMU_OVSCLR_CNT22_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT23_STATUS_Pos           23U                                          /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */
+#define PMU_OVSCLR_CNT23_STATUS_Msk          (1UL << PMU_OVSCLR_CNT23_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT24_STATUS_Pos           24U                                          /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */
+#define PMU_OVSCLR_CNT24_STATUS_Msk          (1UL << PMU_OVSCLR_CNT24_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT25_STATUS_Pos           25U                                          /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */
+#define PMU_OVSCLR_CNT25_STATUS_Msk          (1UL << PMU_OVSCLR_CNT25_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT26_STATUS_Pos           26U                                          /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */
+#define PMU_OVSCLR_CNT26_STATUS_Msk          (1UL << PMU_OVSCLR_CNT26_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT27_STATUS_Pos           27U                                          /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */
+#define PMU_OVSCLR_CNT27_STATUS_Msk          (1UL << PMU_OVSCLR_CNT27_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT28_STATUS_Pos           28U                                          /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */
+#define PMU_OVSCLR_CNT28_STATUS_Msk          (1UL << PMU_OVSCLR_CNT28_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT29_STATUS_Pos           29U                                          /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */
+#define PMU_OVSCLR_CNT29_STATUS_Msk          (1UL << PMU_OVSCLR_CNT29_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CNT30_STATUS_Pos           30U                                          /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */
+#define PMU_OVSCLR_CNT30_STATUS_Msk          (1UL << PMU_OVSCLR_CNT30_STATUS_Pos)          /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */
+
+#define PMU_OVSCLR_CYCCNT_STATUS_Pos          31U                                          /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */
+#define PMU_OVSCLR_CYCCNT_STATUS_Msk         (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos)         /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */
+
+/** \brief PMU Software Increment Counter */
+
+#define PMU_SWINC_CNT0_Pos                    0U                                           /*!< PMU SWINC: Event Counter 0 Software Increment Position */
+#define PMU_SWINC_CNT0_Msk                   (1UL /*<< PMU_SWINC_CNT0_Pos */)              /*!< PMU SWINC: Event Counter 0 Software Increment Mask */
+
+#define PMU_SWINC_CNT1_Pos                    1U                                           /*!< PMU SWINC: Event Counter 1 Software Increment Position */
+#define PMU_SWINC_CNT1_Msk                   (1UL << PMU_SWINC_CNT1_Pos)                   /*!< PMU SWINC: Event Counter 1 Software Increment Mask */
+
+#define PMU_SWINC_CNT2_Pos                    2U                                           /*!< PMU SWINC: Event Counter 2 Software Increment Position */
+#define PMU_SWINC_CNT2_Msk                   (1UL << PMU_SWINC_CNT2_Pos)                   /*!< PMU SWINC: Event Counter 2 Software Increment Mask */
+
+#define PMU_SWINC_CNT3_Pos                    3U                                           /*!< PMU SWINC: Event Counter 3 Software Increment Position */
+#define PMU_SWINC_CNT3_Msk                   (1UL << PMU_SWINC_CNT3_Pos)                   /*!< PMU SWINC: Event Counter 3 Software Increment Mask */
+
+#define PMU_SWINC_CNT4_Pos                    4U                                           /*!< PMU SWINC: Event Counter 4 Software Increment Position */
+#define PMU_SWINC_CNT4_Msk                   (1UL << PMU_SWINC_CNT4_Pos)                   /*!< PMU SWINC: Event Counter 4 Software Increment Mask */
+
+#define PMU_SWINC_CNT5_Pos                    5U                                           /*!< PMU SWINC: Event Counter 5 Software Increment Position */
+#define PMU_SWINC_CNT5_Msk                   (1UL << PMU_SWINC_CNT5_Pos)                   /*!< PMU SWINC: Event Counter 5 Software Increment Mask */
+
+#define PMU_SWINC_CNT6_Pos                    6U                                           /*!< PMU SWINC: Event Counter 6 Software Increment Position */
+#define PMU_SWINC_CNT6_Msk                   (1UL << PMU_SWINC_CNT6_Pos)                   /*!< PMU SWINC: Event Counter 6 Software Increment Mask */
+
+#define PMU_SWINC_CNT7_Pos                    7U                                           /*!< PMU SWINC: Event Counter 7 Software Increment Position */
+#define PMU_SWINC_CNT7_Msk                   (1UL << PMU_SWINC_CNT7_Pos)                   /*!< PMU SWINC: Event Counter 7 Software Increment Mask */
+
+#define PMU_SWINC_CNT8_Pos                    8U                                           /*!< PMU SWINC: Event Counter 8 Software Increment Position */
+#define PMU_SWINC_CNT8_Msk                   (1UL << PMU_SWINC_CNT8_Pos)                   /*!< PMU SWINC: Event Counter 8 Software Increment Mask */
+
+#define PMU_SWINC_CNT9_Pos                    9U                                           /*!< PMU SWINC: Event Counter 9 Software Increment Position */
+#define PMU_SWINC_CNT9_Msk                   (1UL << PMU_SWINC_CNT9_Pos)                   /*!< PMU SWINC: Event Counter 9 Software Increment Mask */
+
+#define PMU_SWINC_CNT10_Pos                   10U                                          /*!< PMU SWINC: Event Counter 10 Software Increment Position */
+#define PMU_SWINC_CNT10_Msk                  (1UL << PMU_SWINC_CNT10_Pos)                  /*!< PMU SWINC: Event Counter 10 Software Increment Mask */
+
+#define PMU_SWINC_CNT11_Pos                   11U                                          /*!< PMU SWINC: Event Counter 11 Software Increment Position */
+#define PMU_SWINC_CNT11_Msk                  (1UL << PMU_SWINC_CNT11_Pos)                  /*!< PMU SWINC: Event Counter 11 Software Increment Mask */
+
+#define PMU_SWINC_CNT12_Pos                   12U                                          /*!< PMU SWINC: Event Counter 12 Software Increment Position */
+#define PMU_SWINC_CNT12_Msk                  (1UL << PMU_SWINC_CNT12_Pos)                  /*!< PMU SWINC: Event Counter 12 Software Increment Mask */
+
+#define PMU_SWINC_CNT13_Pos                   13U                                          /*!< PMU SWINC: Event Counter 13 Software Increment Position */
+#define PMU_SWINC_CNT13_Msk                  (1UL << PMU_SWINC_CNT13_Pos)                  /*!< PMU SWINC: Event Counter 13 Software Increment Mask */
+
+#define PMU_SWINC_CNT14_Pos                   14U                                          /*!< PMU SWINC: Event Counter 14 Software Increment Position */
+#define PMU_SWINC_CNT14_Msk                  (1UL << PMU_SWINC_CNT14_Pos)                  /*!< PMU SWINC: Event Counter 14 Software Increment Mask */
+
+#define PMU_SWINC_CNT15_Pos                   15U                                          /*!< PMU SWINC: Event Counter 15 Software Increment Position */
+#define PMU_SWINC_CNT15_Msk                  (1UL << PMU_SWINC_CNT15_Pos)                  /*!< PMU SWINC: Event Counter 15 Software Increment Mask */
+
+#define PMU_SWINC_CNT16_Pos                   16U                                          /*!< PMU SWINC: Event Counter 16 Software Increment Position */
+#define PMU_SWINC_CNT16_Msk                  (1UL << PMU_SWINC_CNT16_Pos)                  /*!< PMU SWINC: Event Counter 16 Software Increment Mask */
+
+#define PMU_SWINC_CNT17_Pos                   17U                                          /*!< PMU SWINC: Event Counter 17 Software Increment Position */
+#define PMU_SWINC_CNT17_Msk                  (1UL << PMU_SWINC_CNT17_Pos)                  /*!< PMU SWINC: Event Counter 17 Software Increment Mask */
+
+#define PMU_SWINC_CNT18_Pos                   18U                                          /*!< PMU SWINC: Event Counter 18 Software Increment Position */
+#define PMU_SWINC_CNT18_Msk                  (1UL << PMU_SWINC_CNT18_Pos)                  /*!< PMU SWINC: Event Counter 18 Software Increment Mask */
+
+#define PMU_SWINC_CNT19_Pos                   19U                                          /*!< PMU SWINC: Event Counter 19 Software Increment Position */
+#define PMU_SWINC_CNT19_Msk                  (1UL << PMU_SWINC_CNT19_Pos)                  /*!< PMU SWINC: Event Counter 19 Software Increment Mask */
+
+#define PMU_SWINC_CNT20_Pos                   20U                                          /*!< PMU SWINC: Event Counter 20 Software Increment Position */
+#define PMU_SWINC_CNT20_Msk                  (1UL << PMU_SWINC_CNT20_Pos)                  /*!< PMU SWINC: Event Counter 20 Software Increment Mask */
+
+#define PMU_SWINC_CNT21_Pos                   21U                                          /*!< PMU SWINC: Event Counter 21 Software Increment Position */
+#define PMU_SWINC_CNT21_Msk                  (1UL << PMU_SWINC_CNT21_Pos)                  /*!< PMU SWINC: Event Counter 21 Software Increment Mask */
+
+#define PMU_SWINC_CNT22_Pos                   22U                                          /*!< PMU SWINC: Event Counter 22 Software Increment Position */
+#define PMU_SWINC_CNT22_Msk                  (1UL << PMU_SWINC_CNT22_Pos)                  /*!< PMU SWINC: Event Counter 22 Software Increment Mask */
+
+#define PMU_SWINC_CNT23_Pos                   23U                                          /*!< PMU SWINC: Event Counter 23 Software Increment Position */
+#define PMU_SWINC_CNT23_Msk                  (1UL << PMU_SWINC_CNT23_Pos)                  /*!< PMU SWINC: Event Counter 23 Software Increment Mask */
+
+#define PMU_SWINC_CNT24_Pos                   24U                                          /*!< PMU SWINC: Event Counter 24 Software Increment Position */
+#define PMU_SWINC_CNT24_Msk                  (1UL << PMU_SWINC_CNT24_Pos)                  /*!< PMU SWINC: Event Counter 24 Software Increment Mask */
+
+#define PMU_SWINC_CNT25_Pos                   25U                                          /*!< PMU SWINC: Event Counter 25 Software Increment Position */
+#define PMU_SWINC_CNT25_Msk                  (1UL << PMU_SWINC_CNT25_Pos)                  /*!< PMU SWINC: Event Counter 25 Software Increment Mask */
+
+#define PMU_SWINC_CNT26_Pos                   26U                                          /*!< PMU SWINC: Event Counter 26 Software Increment Position */
+#define PMU_SWINC_CNT26_Msk                  (1UL << PMU_SWINC_CNT26_Pos)                  /*!< PMU SWINC: Event Counter 26 Software Increment Mask */
+
+#define PMU_SWINC_CNT27_Pos                   27U                                          /*!< PMU SWINC: Event Counter 27 Software Increment Position */
+#define PMU_SWINC_CNT27_Msk                  (1UL << PMU_SWINC_CNT27_Pos)                  /*!< PMU SWINC: Event Counter 27 Software Increment Mask */
+
+#define PMU_SWINC_CNT28_Pos                   28U                                          /*!< PMU SWINC: Event Counter 28 Software Increment Position */
+#define PMU_SWINC_CNT28_Msk                  (1UL << PMU_SWINC_CNT28_Pos)                  /*!< PMU SWINC: Event Counter 28 Software Increment Mask */
+
+#define PMU_SWINC_CNT29_Pos                   29U                                          /*!< PMU SWINC: Event Counter 29 Software Increment Position */
+#define PMU_SWINC_CNT29_Msk                  (1UL << PMU_SWINC_CNT29_Pos)                  /*!< PMU SWINC: Event Counter 29 Software Increment Mask */
+
+#define PMU_SWINC_CNT30_Pos                   30U                                          /*!< PMU SWINC: Event Counter 30 Software Increment Position */
+#define PMU_SWINC_CNT30_Msk                  (1UL << PMU_SWINC_CNT30_Pos)                  /*!< PMU SWINC: Event Counter 30 Software Increment Mask */
+
+/** \brief PMU Control Register Definitions */
+
+#define PMU_CTRL_ENABLE_Pos                   0U                                           /*!< PMU CTRL: ENABLE Position */
+#define PMU_CTRL_ENABLE_Msk                  (1UL /*<< PMU_CTRL_ENABLE_Pos*/)              /*!< PMU CTRL: ENABLE Mask */
+
+#define PMU_CTRL_EVENTCNT_RESET_Pos           1U                                           /*!< PMU CTRL: Event Counter Reset Position */
+#define PMU_CTRL_EVENTCNT_RESET_Msk          (1UL << PMU_CTRL_EVENTCNT_RESET_Pos)          /*!< PMU CTRL: Event Counter Reset Mask */
+
+#define PMU_CTRL_CYCCNT_RESET_Pos             2U                                           /*!< PMU CTRL: Cycle Counter Reset Position */
+#define PMU_CTRL_CYCCNT_RESET_Msk            (1UL << PMU_CTRL_CYCCNT_RESET_Pos)            /*!< PMU CTRL: Cycle Counter Reset Mask */
+
+#define PMU_CTRL_CYCCNT_DISABLE_Pos           5U                                           /*!< PMU CTRL: Disable Cycle Counter Position */
+#define PMU_CTRL_CYCCNT_DISABLE_Msk          (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos)          /*!< PMU CTRL: Disable Cycle Counter Mask */
+
+#define PMU_CTRL_FRZ_ON_OV_Pos                9U                                           /*!< PMU CTRL: Freeze-on-overflow Position */
+#define PMU_CTRL_FRZ_ON_OV_Msk               (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos)         /*!< PMU CTRL: Freeze-on-overflow Mask */
+
+#define PMU_CTRL_TRACE_ON_OV_Pos              11U                                          /*!< PMU CTRL: Trace-on-overflow Position */
+#define PMU_CTRL_TRACE_ON_OV_Msk             (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos)       /*!< PMU CTRL: Trace-on-overflow Mask */
+
+/** \brief PMU Type Register Definitions */
+
+#define PMU_TYPE_NUM_CNTS_Pos                 0U                                           /*!< PMU TYPE: Number of Counters Position */
+#define PMU_TYPE_NUM_CNTS_Msk                (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/)         /*!< PMU TYPE: Number of Counters Mask */
+
+#define PMU_TYPE_SIZE_CNTS_Pos                8U                                           /*!< PMU TYPE: Size of Counters Position */
+#define PMU_TYPE_SIZE_CNTS_Msk               (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos)            /*!< PMU TYPE: Size of Counters Mask */
+
+#define PMU_TYPE_CYCCNT_PRESENT_Pos           14U                                          /*!< PMU TYPE: Cycle Counter Present Position */
+#define PMU_TYPE_CYCCNT_PRESENT_Msk          (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos)          /*!< PMU TYPE: Cycle Counter Present Mask */
+
+#define PMU_TYPE_FRZ_OV_SUPPORT_Pos           21U                                          /*!< PMU TYPE: Freeze-on-overflow Support Position */
+#define PMU_TYPE_FRZ_OV_SUPPORT_Msk          (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos)          /*!< PMU TYPE: Freeze-on-overflow Support Mask */
+
+#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos      23U                                          /*!< PMU TYPE: Trace-on-overflow Support Position */
+#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk     (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos)          /*!< PMU TYPE: Trace-on-overflow Support Mask */
+
+/** \brief PMU Authentication Status Register Definitions */
+
+#define PMU_AUTHSTATUS_NSID_Pos               0U                                           /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */
+#define PMU_AUTHSTATUS_NSID_Msk              (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/)        /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_NSNID_Pos              2U                                           /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */
+#define PMU_AUTHSTATUS_NSNID_Msk             (0x3UL << PMU_AUTHSTATUS_NSNID_Pos)           /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_SID_Pos                4U                                           /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */
+#define PMU_AUTHSTATUS_SID_Msk               (0x3UL << PMU_AUTHSTATUS_SID_Pos)             /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_SNID_Pos               6U                                           /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */
+#define PMU_AUTHSTATUS_SNID_Msk              (0x3UL << PMU_AUTHSTATUS_SNID_Pos)            /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_NSUID_Pos              16U                                          /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */
+#define PMU_AUTHSTATUS_NSUID_Msk             (0x3UL << PMU_AUTHSTATUS_NSUID_Pos)           /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_NSUNID_Pos             18U                                          /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */
+#define PMU_AUTHSTATUS_NSUNID_Msk            (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos)          /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_SUID_Pos               20U                                          /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */
+#define PMU_AUTHSTATUS_SUID_Msk              (0x3UL << PMU_AUTHSTATUS_SUID_Pos)            /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */
+
+#define PMU_AUTHSTATUS_SUNID_Pos              22U                                          /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */
+#define PMU_AUTHSTATUS_SUNID_Msk             (0x3UL << PMU_AUTHSTATUS_SUNID_Pos)           /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */
+
+
+/*@} end of group CMSIS_PMU */
+#endif
+
+#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */
+  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */
+  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */
+  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */
+        uint32_t RESERVED0[1];
+  union {
+  __IOM uint32_t MAIR[2];
+  struct {
+  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */
+  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */
+  };
+  };
+} MPU_Type;
+
+#define MPU_TYPE_RALIASES                  4U
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */
+#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */
+
+#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */
+#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */
+
+#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */
+#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */
+
+#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */
+#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */
+
+/* MPU Region Limit Address Register Definitions */
+#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */
+#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */
+
+#define MPU_RLAR_PXN_Pos                    4U                                            /*!< MPU RLAR: PXN Position */
+#define MPU_RLAR_PXN_Msk                   (1UL << MPU_RLAR_PXN_Pos)                      /*!< MPU RLAR: PXN Mask */
+
+#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */
+#define MPU_RLAR_AttrIndx_Msk              (7UL << MPU_RLAR_AttrIndx_Pos)                 /*!< MPU RLAR: AttrIndx Mask */
+
+#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */
+#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */
+
+/* MPU Memory Attribute Indirection Register 0 Definitions */
+#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */
+#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */
+
+#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */
+#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */
+
+#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */
+#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */
+
+#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */
+#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */
+
+/* MPU Memory Attribute Indirection Register 1 Definitions */
+#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */
+#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */
+
+#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */
+#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */
+
+#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */
+#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */
+
+#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */
+#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SAU     Security Attribution Unit (SAU)
+  \brief    Type definitions for the Security Attribution Unit (SAU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Security Attribution Unit (SAU).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */
+  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */
+#else
+        uint32_t RESERVED0[3];
+#endif
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */
+} SAU_Type;
+
+/* SAU Control Register Definitions */
+#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */
+#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */
+
+#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */
+#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */
+
+/* SAU Type Register Definitions */
+#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */
+#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+/* SAU Region Number Register Definitions */
+#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */
+#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */
+
+/* SAU Region Base Address Register Definitions */
+#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */
+#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */
+
+/* SAU Region Limit Address Register Definitions */
+#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */
+#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */
+
+#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */
+#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */
+
+#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */
+#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+/* Secure Fault Status Register Definitions */
+#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */
+#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */
+
+#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */
+#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */
+
+#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */
+#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */
+
+#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */
+#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */
+
+#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */
+#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */
+
+#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */
+#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */
+
+#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */
+#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */
+
+#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */
+#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */
+
+/*@} end of group CMSIS_SAU */
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_FPU     Floating Point Unit (FPU)
+  \brief    Type definitions for the Floating Point Unit (FPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Floating Point Unit (FPU).
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */
+  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */
+  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and VFP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and VFP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and VFP Feature Register 2 */
+} FPU_Type;
+
+/* Floating-Point Context Control Register Definitions */
+#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */
+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */
+
+#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */
+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */
+
+#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */
+#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */
+
+#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */
+#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */
+
+#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */
+#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */
+
+#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */
+#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */
+
+#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */
+#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */
+
+#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */
+#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */
+
+#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */
+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */
+
+#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */
+#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */
+
+#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */
+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */
+
+#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */
+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */
+
+#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */
+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */
+
+#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */
+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */
+
+#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */
+#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */
+
+#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */
+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */
+
+#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */
+#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */
+
+/* Floating-Point Context Address Register Definitions */
+#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */
+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */
+
+/* Floating-Point Default Status Control Register Definitions */
+#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */
+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */
+
+#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */
+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */
+
+#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */
+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */
+
+#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */
+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */
+
+#define FPU_FPDSCR_FZ16_Pos                19U                                            /*!< FPDSCR: FZ16 bit Position */
+#define FPU_FPDSCR_FZ16_Msk                (1UL << FPU_FPDSCR_FZ16_Pos)                   /*!< FPDSCR: FZ16 bit Mask */
+
+#define FPU_FPDSCR_LTPSIZE_Pos             16U                                            /*!< FPDSCR: LTPSIZE bit Position */
+#define FPU_FPDSCR_LTPSIZE_Msk             (7UL << FPU_FPDSCR_LTPSIZE_Pos)                /*!< FPDSCR: LTPSIZE bit Mask */
+
+/* Media and VFP Feature Register 0 Definitions */
+#define FPU_MVFR0_FPRound_Pos              28U                                            /*!< MVFR0: FPRound bits Position */
+#define FPU_MVFR0_FPRound_Msk              (0xFUL << FPU_MVFR0_FPRound_Pos)               /*!< MVFR0: FPRound bits Mask */
+
+#define FPU_MVFR0_FPSqrt_Pos               20U                                            /*!< MVFR0: FPSqrt bits Position */
+#define FPU_MVFR0_FPSqrt_Msk               (0xFUL << FPU_MVFR0_FPSqrt_Pos)                 /*!< MVFR0: FPSqrt bits Mask */
+
+#define FPU_MVFR0_FPDivide_Pos             16U                                            /*!< MVFR0: FPDivide bits Position */
+#define FPU_MVFR0_FPDivide_Msk             (0xFUL << FPU_MVFR0_FPDivide_Pos)              /*!< MVFR0: Divide bits Mask */
+
+#define FPU_MVFR0_FPDP_Pos                  8U                                            /*!< MVFR0: FPDP bits Position */
+#define FPU_MVFR0_FPDP_Msk                 (0xFUL << FPU_MVFR0_FPDP_Pos)                  /*!< MVFR0: FPDP bits Mask */
+
+#define FPU_MVFR0_FPSP_Pos                  4U                                            /*!< MVFR0: FPSP bits Position */
+#define FPU_MVFR0_FPSP_Msk                 (0xFUL << FPU_MVFR0_FPSP_Pos)                  /*!< MVFR0: FPSP bits Mask */
+
+#define FPU_MVFR0_SIMDReg_Pos               0U                                            /*!< MVFR0: SIMDReg bits Position */
+#define FPU_MVFR0_SIMDReg_Msk              (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/)           /*!< MVFR0: SIMDReg bits Mask */
+
+/* Media and VFP Feature Register 1 Definitions */
+#define FPU_MVFR1_FMAC_Pos                 28U                                            /*!< MVFR1: FMAC bits Position */
+#define FPU_MVFR1_FMAC_Msk                 (0xFUL << FPU_MVFR1_FMAC_Pos)                  /*!< MVFR1: FMAC bits Mask */
+
+#define FPU_MVFR1_FPHP_Pos                 24U                                            /*!< MVFR1: FPHP bits Position */
+#define FPU_MVFR1_FPHP_Msk                 (0xFUL << FPU_MVFR1_FPHP_Pos)                  /*!< MVFR1: FPHP bits Mask */
+
+#define FPU_MVFR1_FP16_Pos                 20U                                            /*!< MVFR1: FP16 bits Position */
+#define FPU_MVFR1_FP16_Msk                 (0xFUL << FPU_MVFR1_FP16_Pos)                  /*!< MVFR1: FP16 bits Mask */
+
+#define FPU_MVFR1_MVE_Pos                   8U                                            /*!< MVFR1: MVE bits Position */
+#define FPU_MVFR1_MVE_Msk                  (0xFUL << FPU_MVFR1_MVE_Pos)                   /*!< MVFR1: MVE bits Mask */
+
+#define FPU_MVFR1_FPDNaN_Pos                4U                                            /*!< MVFR1: FPDNaN bits Position */
+#define FPU_MVFR1_FPDNaN_Msk               (0xFUL << FPU_MVFR1_FPDNaN_Pos)                /*!< MVFR1: FPDNaN bits Mask */
+
+#define FPU_MVFR1_FPFtZ_Pos                 0U                                            /*!< MVFR1: FPFtZ bits Position */
+#define FPU_MVFR1_FPFtZ_Msk                (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/)             /*!< MVFR1: FPFtZ bits Mask */
+
+/* Media and VFP Feature Register 2 Definitions */
+#define FPU_MVFR2_FPMisc_Pos                4U                                            /*!< MVFR2: FPMisc bits Position */
+#define FPU_MVFR2_FPMisc_Msk               (0xFUL << FPU_MVFR2_FPMisc_Pos)                /*!< MVFR2: FPMisc bits Mask */
+
+/*@} end of group CMSIS_FPU */
+
+/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
+  \brief    Type definitions for the Core Debug Registers
+  @{
+ */
+
+/**
+  \brief  \deprecated Structure type to access the Core Debug Register (CoreDebug).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+  __OM  uint32_t DSCEMCR;                /*!< Offset: 0x010 ( /W)  Debug Set Clear Exception and Monitor Control Register */
+  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */
+  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */
+} CoreDebug_Type;
+
+/* Debug Halting Control and Status Register Definitions */
+#define CoreDebug_DHCSR_DBGKEY_Pos         16U                                            /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */
+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */
+
+#define CoreDebug_DHCSR_S_RESTART_ST_Pos   26U                                            /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */
+#define CoreDebug_DHCSR_S_RESTART_ST_Msk   (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos)      /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */
+
+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25U                                            /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */
+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */
+
+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24U                                            /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */
+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */
+
+#define CoreDebug_DHCSR_S_FPD_Pos          23U                                            /*!< \deprecated CoreDebug DHCSR: S_FPD Position */
+#define CoreDebug_DHCSR_S_FPD_Msk          (1UL << CoreDebug_DHCSR_S_FPD_Pos)             /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */
+
+#define CoreDebug_DHCSR_S_SUIDE_Pos        22U                                            /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */
+#define CoreDebug_DHCSR_S_SUIDE_Msk        (1UL << CoreDebug_DHCSR_S_SUIDE_Pos)           /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */
+
+#define CoreDebug_DHCSR_S_NSUIDE_Pos       21U                                            /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */
+#define CoreDebug_DHCSR_S_NSUIDE_Msk       (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos)          /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */
+
+#define CoreDebug_DHCSR_S_SDE_Pos          20U                                            /*!< \deprecated CoreDebug DHCSR: S_SDE Position */
+#define CoreDebug_DHCSR_S_SDE_Msk          (1UL << CoreDebug_DHCSR_S_SDE_Pos)             /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */
+
+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19U                                            /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */
+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */
+
+#define CoreDebug_DHCSR_S_SLEEP_Pos        18U                                            /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */
+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */
+
+#define CoreDebug_DHCSR_S_HALT_Pos         17U                                            /*!< \deprecated CoreDebug DHCSR: S_HALT Position */
+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */
+
+#define CoreDebug_DHCSR_S_REGRDY_Pos       16U                                            /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */
+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */
+
+#define CoreDebug_DHCSR_C_PMOV_Pos          6U                                            /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */
+#define CoreDebug_DHCSR_C_PMOV_Msk         (1UL << CoreDebug_DHCSR_C_PMOV_Pos)            /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */
+
+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5U                                            /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */
+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */
+
+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3U                                            /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */
+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */
+
+#define CoreDebug_DHCSR_C_STEP_Pos          2U                                            /*!< \deprecated CoreDebug DHCSR: C_STEP Position */
+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */
+
+#define CoreDebug_DHCSR_C_HALT_Pos          1U                                            /*!< \deprecated CoreDebug DHCSR: C_HALT Position */
+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */
+
+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0U                                            /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */
+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/)     /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */
+
+/* Debug Core Register Selector Register Definitions */
+#define CoreDebug_DCRSR_REGWnR_Pos         16U                                            /*!< \deprecated CoreDebug DCRSR: REGWnR Position */
+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */
+
+#define CoreDebug_DCRSR_REGSEL_Pos          0U                                            /*!< \deprecated CoreDebug DCRSR: REGSEL Position */
+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/)     /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */
+
+/* Debug Exception and Monitor Control Register Definitions */
+#define CoreDebug_DEMCR_TRCENA_Pos         24U                                            /*!< \deprecated CoreDebug DEMCR: TRCENA Position */
+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */
+
+#define CoreDebug_DEMCR_MON_REQ_Pos        19U                                            /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */
+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */
+
+#define CoreDebug_DEMCR_MON_STEP_Pos       18U                                            /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */
+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */
+
+#define CoreDebug_DEMCR_MON_PEND_Pos       17U                                            /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */
+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */
+
+#define CoreDebug_DEMCR_MON_EN_Pos         16U                                            /*!< \deprecated CoreDebug DEMCR: MON_EN Position */
+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */
+
+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10U                                            /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */
+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */
+
+#define CoreDebug_DEMCR_VC_INTERR_Pos       9U                                            /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */
+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */
+
+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8U                                            /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */
+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */
+
+#define CoreDebug_DEMCR_VC_STATERR_Pos      7U                                            /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */
+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */
+
+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6U                                            /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */
+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */
+
+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5U                                            /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */
+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */
+
+#define CoreDebug_DEMCR_VC_MMERR_Pos        4U                                            /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */
+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */
+
+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0U                                            /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */
+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/)  /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */
+
+/* Debug Set Clear Exception and Monitor Control Register Definitions */
+#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos  19U                                            /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */
+#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk  (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos)     /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */
+
+#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U                                            /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */
+#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos)    /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */
+
+#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos   3U                                            /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */
+#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk  (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos)     /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */
+
+#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos  1U                                            /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */
+#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos)    /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */
+
+/* Debug Authentication Control Register Definitions */
+#define CoreDebug_DAUTHCTRL_UIDEN_Pos      10U                                            /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */
+#define CoreDebug_DAUTHCTRL_UIDEN_Msk      (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos)         /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */
+
+#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos     9U                                            /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */
+#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk    (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos)       /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */
+
+#define CoreDebug_DAUTHCTRL_FSDMA_Pos       8U                                            /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */
+#define CoreDebug_DAUTHCTRL_FSDMA_Msk      (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos)         /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */
+
+#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos  3U                                            /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */
+#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos)    /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */
+
+#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos  2U                                            /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */
+#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos)    /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */
+
+#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos   1U                                            /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */
+#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk  (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos)     /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */
+
+#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos   0U                                            /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */
+#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk  (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */
+
+/* Debug Security Control and Status Register Definitions */
+#define CoreDebug_DSCSR_CDS_Pos            16U                                            /*!< \deprecated CoreDebug DSCSR: CDS Position */
+#define CoreDebug_DSCSR_CDS_Msk            (1UL << CoreDebug_DSCSR_CDS_Pos)               /*!< \deprecated CoreDebug DSCSR: CDS Mask */
+
+#define CoreDebug_DSCSR_SBRSEL_Pos          1U                                            /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */
+#define CoreDebug_DSCSR_SBRSEL_Msk         (1UL << CoreDebug_DSCSR_SBRSEL_Pos)            /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */
+
+#define CoreDebug_DSCSR_SBRSELEN_Pos        0U                                            /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */
+#define CoreDebug_DSCSR_SBRSELEN_Msk       (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/)      /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */
+
+/*@} end of group CMSIS_CoreDebug */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DCB       Debug Control Block
+  \brief    Type definitions for the Debug Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Debug Control Block Registers (DCB).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+  __OM  uint32_t DSCEMCR;                /*!< Offset: 0x010 ( /W)  Debug Set Clear Exception and Monitor Control Register */
+  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */
+  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */
+} DCB_Type;
+
+/* DHCSR, Debug Halting Control and Status Register Definitions */
+#define DCB_DHCSR_DBGKEY_Pos               16U                                            /*!< DCB DHCSR: Debug key Position */
+#define DCB_DHCSR_DBGKEY_Msk               (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos)             /*!< DCB DHCSR: Debug key Mask */
+
+#define DCB_DHCSR_S_RESTART_ST_Pos         26U                                            /*!< DCB DHCSR: Restart sticky status Position */
+#define DCB_DHCSR_S_RESTART_ST_Msk         (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos)          /*!< DCB DHCSR: Restart sticky status Mask */
+
+#define DCB_DHCSR_S_RESET_ST_Pos           25U                                            /*!< DCB DHCSR: Reset sticky status Position */
+#define DCB_DHCSR_S_RESET_ST_Msk           (0x1UL << DCB_DHCSR_S_RESET_ST_Pos)            /*!< DCB DHCSR: Reset sticky status Mask */
+
+#define DCB_DHCSR_S_RETIRE_ST_Pos          24U                                            /*!< DCB DHCSR: Retire sticky status Position */
+#define DCB_DHCSR_S_RETIRE_ST_Msk          (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos)           /*!< DCB DHCSR: Retire sticky status Mask */
+
+#define DCB_DHCSR_S_FPD_Pos                23U                                            /*!< DCB DHCSR: Floating-point registers Debuggable Position */
+#define DCB_DHCSR_S_FPD_Msk                (0x1UL << DCB_DHCSR_S_FPD_Pos)                 /*!< DCB DHCSR: Floating-point registers Debuggable Mask */
+
+#define DCB_DHCSR_S_SUIDE_Pos              22U                                            /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */
+#define DCB_DHCSR_S_SUIDE_Msk              (0x1UL << DCB_DHCSR_S_SUIDE_Pos)               /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */
+
+#define DCB_DHCSR_S_NSUIDE_Pos             21U                                            /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */
+#define DCB_DHCSR_S_NSUIDE_Msk             (0x1UL << DCB_DHCSR_S_NSUIDE_Pos)              /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */
+
+#define DCB_DHCSR_S_SDE_Pos                20U                                            /*!< DCB DHCSR: Secure debug enabled Position */
+#define DCB_DHCSR_S_SDE_Msk                (0x1UL << DCB_DHCSR_S_SDE_Pos)                 /*!< DCB DHCSR: Secure debug enabled Mask */
+
+#define DCB_DHCSR_S_LOCKUP_Pos             19U                                            /*!< DCB DHCSR: Lockup status Position */
+#define DCB_DHCSR_S_LOCKUP_Msk             (0x1UL << DCB_DHCSR_S_LOCKUP_Pos)              /*!< DCB DHCSR: Lockup status Mask */
+
+#define DCB_DHCSR_S_SLEEP_Pos              18U                                            /*!< DCB DHCSR: Sleeping status Position */
+#define DCB_DHCSR_S_SLEEP_Msk              (0x1UL << DCB_DHCSR_S_SLEEP_Pos)               /*!< DCB DHCSR: Sleeping status Mask */
+
+#define DCB_DHCSR_S_HALT_Pos               17U                                            /*!< DCB DHCSR: Halted status Position */
+#define DCB_DHCSR_S_HALT_Msk               (0x1UL << DCB_DHCSR_S_HALT_Pos)                /*!< DCB DHCSR: Halted status Mask */
+
+#define DCB_DHCSR_S_REGRDY_Pos             16U                                            /*!< DCB DHCSR: Register ready status Position */
+#define DCB_DHCSR_S_REGRDY_Msk             (0x1UL << DCB_DHCSR_S_REGRDY_Pos)              /*!< DCB DHCSR: Register ready status Mask */
+
+#define DCB_DHCSR_C_PMOV_Pos                6U                                            /*!< DCB DHCSR: Halt on PMU overflow control Position */
+#define DCB_DHCSR_C_PMOV_Msk               (0x1UL << DCB_DHCSR_C_PMOV_Pos)                /*!< DCB DHCSR: Halt on PMU overflow control Mask */
+
+#define DCB_DHCSR_C_SNAPSTALL_Pos           5U                                            /*!< DCB DHCSR: Snap stall control Position */
+#define DCB_DHCSR_C_SNAPSTALL_Msk          (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos)           /*!< DCB DHCSR: Snap stall control Mask */
+
+#define DCB_DHCSR_C_MASKINTS_Pos            3U                                            /*!< DCB DHCSR: Mask interrupts control Position */
+#define DCB_DHCSR_C_MASKINTS_Msk           (0x1UL << DCB_DHCSR_C_MASKINTS_Pos)            /*!< DCB DHCSR: Mask interrupts control Mask */
+
+#define DCB_DHCSR_C_STEP_Pos                2U                                            /*!< DCB DHCSR: Step control Position */
+#define DCB_DHCSR_C_STEP_Msk               (0x1UL << DCB_DHCSR_C_STEP_Pos)                /*!< DCB DHCSR: Step control Mask */
+
+#define DCB_DHCSR_C_HALT_Pos                1U                                            /*!< DCB DHCSR: Halt control Position */
+#define DCB_DHCSR_C_HALT_Msk               (0x1UL << DCB_DHCSR_C_HALT_Pos)                /*!< DCB DHCSR: Halt control Mask */
+
+#define DCB_DHCSR_C_DEBUGEN_Pos             0U                                            /*!< DCB DHCSR: Debug enable control Position */
+#define DCB_DHCSR_C_DEBUGEN_Msk            (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/)         /*!< DCB DHCSR: Debug enable control Mask */
+
+/* DCRSR, Debug Core Register Select Register Definitions */
+#define DCB_DCRSR_REGWnR_Pos               16U                                            /*!< DCB DCRSR: Register write/not-read Position */
+#define DCB_DCRSR_REGWnR_Msk               (0x1UL << DCB_DCRSR_REGWnR_Pos)                /*!< DCB DCRSR: Register write/not-read Mask */
+
+#define DCB_DCRSR_REGSEL_Pos                0U                                            /*!< DCB DCRSR: Register selector Position */
+#define DCB_DCRSR_REGSEL_Msk               (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/)           /*!< DCB DCRSR: Register selector Mask */
+
+/* DCRDR, Debug Core Register Data Register Definitions */
+#define DCB_DCRDR_DBGTMP_Pos                0U                                            /*!< DCB DCRDR: Data temporary buffer Position */
+#define DCB_DCRDR_DBGTMP_Msk               (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/)     /*!< DCB DCRDR: Data temporary buffer Mask */
+
+/* DEMCR, Debug Exception and Monitor Control Register Definitions */
+#define DCB_DEMCR_TRCENA_Pos               24U                                            /*!< DCB DEMCR: Trace enable Position */
+#define DCB_DEMCR_TRCENA_Msk               (0x1UL << DCB_DEMCR_TRCENA_Pos)                /*!< DCB DEMCR: Trace enable Mask */
+
+#define DCB_DEMCR_MONPRKEY_Pos             23U                                            /*!< DCB DEMCR: Monitor pend req key Position */
+#define DCB_DEMCR_MONPRKEY_Msk             (0x1UL << DCB_DEMCR_MONPRKEY_Pos)              /*!< DCB DEMCR: Monitor pend req key Mask */
+
+#define DCB_DEMCR_UMON_EN_Pos              21U                                            /*!< DCB DEMCR: Unprivileged monitor enable Position */
+#define DCB_DEMCR_UMON_EN_Msk              (0x1UL << DCB_DEMCR_UMON_EN_Pos)               /*!< DCB DEMCR: Unprivileged monitor enable Mask */
+
+#define DCB_DEMCR_SDME_Pos                 20U                                            /*!< DCB DEMCR: Secure DebugMonitor enable Position */
+#define DCB_DEMCR_SDME_Msk                 (0x1UL << DCB_DEMCR_SDME_Pos)                  /*!< DCB DEMCR: Secure DebugMonitor enable Mask */
+
+#define DCB_DEMCR_MON_REQ_Pos              19U                                            /*!< DCB DEMCR: Monitor request Position */
+#define DCB_DEMCR_MON_REQ_Msk              (0x1UL << DCB_DEMCR_MON_REQ_Pos)               /*!< DCB DEMCR: Monitor request Mask */
+
+#define DCB_DEMCR_MON_STEP_Pos             18U                                            /*!< DCB DEMCR: Monitor step Position */
+#define DCB_DEMCR_MON_STEP_Msk             (0x1UL << DCB_DEMCR_MON_STEP_Pos)              /*!< DCB DEMCR: Monitor step Mask */
+
+#define DCB_DEMCR_MON_PEND_Pos             17U                                            /*!< DCB DEMCR: Monitor pend Position */
+#define DCB_DEMCR_MON_PEND_Msk             (0x1UL << DCB_DEMCR_MON_PEND_Pos)              /*!< DCB DEMCR: Monitor pend Mask */
+
+#define DCB_DEMCR_MON_EN_Pos               16U                                            /*!< DCB DEMCR: Monitor enable Position */
+#define DCB_DEMCR_MON_EN_Msk               (0x1UL << DCB_DEMCR_MON_EN_Pos)                /*!< DCB DEMCR: Monitor enable Mask */
+
+#define DCB_DEMCR_VC_SFERR_Pos             11U                                            /*!< DCB DEMCR: Vector Catch SecureFault Position */
+#define DCB_DEMCR_VC_SFERR_Msk             (0x1UL << DCB_DEMCR_VC_SFERR_Pos)              /*!< DCB DEMCR: Vector Catch SecureFault Mask */
+
+#define DCB_DEMCR_VC_HARDERR_Pos           10U                                            /*!< DCB DEMCR: Vector Catch HardFault errors Position */
+#define DCB_DEMCR_VC_HARDERR_Msk           (0x1UL << DCB_DEMCR_VC_HARDERR_Pos)            /*!< DCB DEMCR: Vector Catch HardFault errors Mask */
+
+#define DCB_DEMCR_VC_INTERR_Pos             9U                                            /*!< DCB DEMCR: Vector Catch interrupt errors Position */
+#define DCB_DEMCR_VC_INTERR_Msk            (0x1UL << DCB_DEMCR_VC_INTERR_Pos)             /*!< DCB DEMCR: Vector Catch interrupt errors Mask */
+
+#define DCB_DEMCR_VC_BUSERR_Pos             8U                                            /*!< DCB DEMCR: Vector Catch BusFault errors Position */
+#define DCB_DEMCR_VC_BUSERR_Msk            (0x1UL << DCB_DEMCR_VC_BUSERR_Pos)             /*!< DCB DEMCR: Vector Catch BusFault errors Mask */
+
+#define DCB_DEMCR_VC_STATERR_Pos            7U                                            /*!< DCB DEMCR: Vector Catch state errors Position */
+#define DCB_DEMCR_VC_STATERR_Msk           (0x1UL << DCB_DEMCR_VC_STATERR_Pos)            /*!< DCB DEMCR: Vector Catch state errors Mask */
+
+#define DCB_DEMCR_VC_CHKERR_Pos             6U                                            /*!< DCB DEMCR: Vector Catch check errors Position */
+#define DCB_DEMCR_VC_CHKERR_Msk            (0x1UL << DCB_DEMCR_VC_CHKERR_Pos)             /*!< DCB DEMCR: Vector Catch check errors Mask */
+
+#define DCB_DEMCR_VC_NOCPERR_Pos            5U                                            /*!< DCB DEMCR: Vector Catch NOCP errors Position */
+#define DCB_DEMCR_VC_NOCPERR_Msk           (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos)            /*!< DCB DEMCR: Vector Catch NOCP errors Mask */
+
+#define DCB_DEMCR_VC_MMERR_Pos              4U                                            /*!< DCB DEMCR: Vector Catch MemManage errors Position */
+#define DCB_DEMCR_VC_MMERR_Msk             (0x1UL << DCB_DEMCR_VC_MMERR_Pos)              /*!< DCB DEMCR: Vector Catch MemManage errors Mask */
+
+#define DCB_DEMCR_VC_CORERESET_Pos          0U                                            /*!< DCB DEMCR: Vector Catch Core reset Position */
+#define DCB_DEMCR_VC_CORERESET_Msk         (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/)      /*!< DCB DEMCR: Vector Catch Core reset Mask */
+
+/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */
+#define DCB_DSCEMCR_CLR_MON_REQ_Pos        19U                                            /*!< DCB DSCEMCR: Clear monitor request Position */
+#define DCB_DSCEMCR_CLR_MON_REQ_Msk        (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos)         /*!< DCB DSCEMCR: Clear monitor request Mask */
+
+#define DCB_DSCEMCR_CLR_MON_PEND_Pos       17U                                            /*!< DCB DSCEMCR: Clear monitor pend Position */
+#define DCB_DSCEMCR_CLR_MON_PEND_Msk       (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos)        /*!< DCB DSCEMCR: Clear monitor pend Mask */
+
+#define DCB_DSCEMCR_SET_MON_REQ_Pos         3U                                            /*!< DCB DSCEMCR: Set monitor request Position */
+#define DCB_DSCEMCR_SET_MON_REQ_Msk        (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos)         /*!< DCB DSCEMCR: Set monitor request Mask */
+
+#define DCB_DSCEMCR_SET_MON_PEND_Pos        1U                                            /*!< DCB DSCEMCR: Set monitor pend Position */
+#define DCB_DSCEMCR_SET_MON_PEND_Msk       (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos)        /*!< DCB DSCEMCR: Set monitor pend Mask */
+
+/* DAUTHCTRL, Debug Authentication Control Register Definitions */
+#define DCB_DAUTHCTRL_UIDEN_Pos            10U                                            /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */
+#define DCB_DAUTHCTRL_UIDEN_Msk            (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos)             /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */
+
+#define DCB_DAUTHCTRL_UIDAPEN_Pos           9U                                            /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */
+#define DCB_DAUTHCTRL_UIDAPEN_Msk          (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos)           /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */
+
+#define DCB_DAUTHCTRL_FSDMA_Pos             8U                                            /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */
+#define DCB_DAUTHCTRL_FSDMA_Msk            (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos)             /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */
+
+#define DCB_DAUTHCTRL_INTSPNIDEN_Pos        3U                                            /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */
+#define DCB_DAUTHCTRL_INTSPNIDEN_Msk       (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos)        /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */
+
+#define DCB_DAUTHCTRL_SPNIDENSEL_Pos        2U                                            /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */
+#define DCB_DAUTHCTRL_SPNIDENSEL_Msk       (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos)        /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */
+
+#define DCB_DAUTHCTRL_INTSPIDEN_Pos         1U                                            /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */
+#define DCB_DAUTHCTRL_INTSPIDEN_Msk        (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos)         /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */
+
+#define DCB_DAUTHCTRL_SPIDENSEL_Pos         0U                                            /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */
+#define DCB_DAUTHCTRL_SPIDENSEL_Msk        (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/)     /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */
+
+/* DSCSR, Debug Security Control and Status Register Definitions */
+#define DCB_DSCSR_CDSKEY_Pos               17U                                            /*!< DCB DSCSR: CDS write-enable key Position */
+#define DCB_DSCSR_CDSKEY_Msk               (0x1UL << DCB_DSCSR_CDSKEY_Pos)                /*!< DCB DSCSR: CDS write-enable key Mask */
+
+#define DCB_DSCSR_CDS_Pos                  16U                                            /*!< DCB DSCSR: Current domain Secure Position */
+#define DCB_DSCSR_CDS_Msk                  (0x1UL << DCB_DSCSR_CDS_Pos)                   /*!< DCB DSCSR: Current domain Secure Mask */
+
+#define DCB_DSCSR_SBRSEL_Pos                1U                                            /*!< DCB DSCSR: Secure banked register select Position */
+#define DCB_DSCSR_SBRSEL_Msk               (0x1UL << DCB_DSCSR_SBRSEL_Pos)                /*!< DCB DSCSR: Secure banked register select Mask */
+
+#define DCB_DSCSR_SBRSELEN_Pos              0U                                            /*!< DCB DSCSR: Secure banked register select enable Position */
+#define DCB_DSCSR_SBRSELEN_Msk             (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/)          /*!< DCB DSCSR: Secure banked register select enable Mask */
+
+/*@} end of group CMSIS_DCB */
+
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DIB       Debug Identification Block
+  \brief    Type definitions for the Debug Identification Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Debug Identification Block Registers (DIB).
+ */
+typedef struct
+{
+  __OM  uint32_t DLAR;                   /*!< Offset: 0x000 ( /W)  SCS Software Lock Access Register */
+  __IM  uint32_t DLSR;                   /*!< Offset: 0x004 (R/ )  SCS Software Lock Status Register */
+  __IM  uint32_t DAUTHSTATUS;            /*!< Offset: 0x008 (R/ )  Debug Authentication Status Register */
+  __IM  uint32_t DDEVARCH;               /*!< Offset: 0x00C (R/ )  SCS Device Architecture Register */
+  __IM  uint32_t DDEVTYPE;               /*!< Offset: 0x010 (R/ )  SCS Device Type Register */
+} DIB_Type;
+
+/* DLAR, SCS Software Lock Access Register Definitions */
+#define DIB_DLAR_KEY_Pos                    0U                                            /*!< DIB DLAR: KEY Position */
+#define DIB_DLAR_KEY_Msk                   (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */)        /*!< DIB DLAR: KEY Mask */
+
+/* DLSR, SCS Software Lock Status Register Definitions */
+#define DIB_DLSR_nTT_Pos                    2U                                            /*!< DIB DLSR: Not thirty-two bit Position */
+#define DIB_DLSR_nTT_Msk                   (0x1UL << DIB_DLSR_nTT_Pos )                   /*!< DIB DLSR: Not thirty-two bit Mask */
+
+#define DIB_DLSR_SLK_Pos                    1U                                            /*!< DIB DLSR: Software Lock status Position */
+#define DIB_DLSR_SLK_Msk                   (0x1UL << DIB_DLSR_SLK_Pos )                   /*!< DIB DLSR: Software Lock status Mask */
+
+#define DIB_DLSR_SLI_Pos                    0U                                            /*!< DIB DLSR: Software Lock implemented Position */
+#define DIB_DLSR_SLI_Msk                   (0x1UL /*<< DIB_DLSR_SLI_Pos*/)                /*!< DIB DLSR: Software Lock implemented Mask */
+
+/* DAUTHSTATUS, Debug Authentication Status Register Definitions */
+#define DIB_DAUTHSTATUS_SUNID_Pos          22U                                            /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */
+#define DIB_DAUTHSTATUS_SUNID_Msk          (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos )          /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */
+
+#define DIB_DAUTHSTATUS_SUID_Pos           20U                                            /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */
+#define DIB_DAUTHSTATUS_SUID_Msk           (0x3UL << DIB_DAUTHSTATUS_SUID_Pos )           /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */
+
+#define DIB_DAUTHSTATUS_NSUNID_Pos         18U                                            /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */
+#define DIB_DAUTHSTATUS_NSUNID_Msk         (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos )         /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */
+
+#define DIB_DAUTHSTATUS_NSUID_Pos          16U                                            /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */
+#define DIB_DAUTHSTATUS_NSUID_Msk          (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos )          /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */
+
+#define DIB_DAUTHSTATUS_SNID_Pos            6U                                            /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */
+#define DIB_DAUTHSTATUS_SNID_Msk           (0x3UL << DIB_DAUTHSTATUS_SNID_Pos )           /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_SID_Pos             4U                                            /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */
+#define DIB_DAUTHSTATUS_SID_Msk            (0x3UL << DIB_DAUTHSTATUS_SID_Pos )            /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_NSNID_Pos           2U                                            /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */
+#define DIB_DAUTHSTATUS_NSNID_Msk          (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos )          /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_NSID_Pos            0U                                            /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */
+#define DIB_DAUTHSTATUS_NSID_Msk           (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/)        /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */
+
+/* DDEVARCH, SCS Device Architecture Register Definitions */
+#define DIB_DDEVARCH_ARCHITECT_Pos         21U                                            /*!< DIB DDEVARCH: Architect Position */
+#define DIB_DDEVARCH_ARCHITECT_Msk         (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos )       /*!< DIB DDEVARCH: Architect Mask */
+
+#define DIB_DDEVARCH_PRESENT_Pos           20U                                            /*!< DIB DDEVARCH: DEVARCH Present Position */
+#define DIB_DDEVARCH_PRESENT_Msk           (0x1FUL << DIB_DDEVARCH_PRESENT_Pos )          /*!< DIB DDEVARCH: DEVARCH Present Mask */
+
+#define DIB_DDEVARCH_REVISION_Pos          16U                                            /*!< DIB DDEVARCH: Revision Position */
+#define DIB_DDEVARCH_REVISION_Msk          (0xFUL << DIB_DDEVARCH_REVISION_Pos )          /*!< DIB DDEVARCH: Revision Mask */
+
+#define DIB_DDEVARCH_ARCHVER_Pos           12U                                            /*!< DIB DDEVARCH: Architecture Version Position */
+#define DIB_DDEVARCH_ARCHVER_Msk           (0xFUL << DIB_DDEVARCH_ARCHVER_Pos )           /*!< DIB DDEVARCH: Architecture Version Mask */
+
+#define DIB_DDEVARCH_ARCHPART_Pos           0U                                            /*!< DIB DDEVARCH: Architecture Part Position */
+#define DIB_DDEVARCH_ARCHPART_Msk          (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/)     /*!< DIB DDEVARCH: Architecture Part Mask */
+
+/* DDEVTYPE, SCS Device Type Register Definitions */
+#define DIB_DDEVTYPE_SUB_Pos                4U                                            /*!< DIB DDEVTYPE: Sub-type Position */
+#define DIB_DDEVTYPE_SUB_Msk               (0xFUL << DIB_DDEVTYPE_SUB_Pos )               /*!< DIB DDEVTYPE: Sub-type Mask */
+
+#define DIB_DDEVTYPE_MAJOR_Pos              0U                                            /*!< DIB DDEVTYPE: Major type Position */
+#define DIB_DDEVTYPE_MAJOR_Msk             (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/)          /*!< DIB DDEVTYPE: Major type Mask */
+
+
+/*@} end of group CMSIS_DIB */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Core Hardware */
+  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */
+  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */
+  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */
+  #define MEMSYSCTL_BASE      (0xE001E000UL)                             /*!< Memory System Control Base Address */
+  #define ERRBNK_BASE         (0xE001E100UL)                             /*!< Error Banking Base Address */
+  #define PWRMODCTL_BASE      (0xE001E300UL)                             /*!< Power Mode Control Base Address */
+  #define EWIC_BASE           (0xE001E400UL)                             /*!< External Wakeup Interrupt Controller Base Address */
+  #define PRCCFGINF_BASE      (0xE001E700UL)                             /*!< Processor Configuration Information Base Address */
+  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */
+  #define CoreDebug_BASE      (0xE000EDF0UL)                             /*!< \deprecated Core Debug Base Address */
+  #define DCB_BASE            (0xE000EDF0UL)                             /*!< DCB Base Address */
+  #define DIB_BASE            (0xE000EFB0UL)                             /*!< DIB Base Address */
+  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */
+  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */
+  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */
+
+  #define ICB                 ((ICB_Type       *)     SCS_BASE         ) /*!< System control Register not in SCB */
+  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */
+  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */
+  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */
+  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */
+  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */
+  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */
+  #define MEMSYSCTL           ((MemSysCtl_Type *)     MEMSYSCTL_BASE   ) /*!< Memory System Control configuration struct */
+  #define ERRBNK              ((ErrBnk_Type    *)     ERRBNK_BASE      ) /*!< Error Banking configuration struct */
+  #define PWRMODCTL           ((PwrModCtl_Type *)     PWRMODCTL_BASE   ) /*!< Power Mode Control configuration struct */
+  #define EWIC                ((EWIC_Type      *)     EWIC_BASE        ) /*!< EWIC configuration struct */
+  #define PRCCFGINF           ((PrcCfgInf_Type *)     PRCCFGINF_BASE   ) /*!< Processor Configuration Information configuration struct */
+  #define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE   ) /*!< \deprecated Core Debug configuration struct */
+  #define DCB                 ((DCB_Type       *)     DCB_BASE         ) /*!< DCB configuration struct */
+  #define DIB                 ((DIB_Type       *)     DIB_BASE         ) /*!< DIB configuration struct */
+
+  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */
+    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */
+  #endif
+
+  #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U)
+    #define PMU_BASE          (0xE0003000UL)                             /*!< PMU Base Address */
+    #define PMU               ((PMU_Type       *)     PMU_BASE         ) /*!< PMU configuration struct */
+  #endif
+
+  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */
+    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */
+  #endif
+
+  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */
+  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */
+  #define CoreDebug_BASE_NS   (0xE002EDF0UL)                             /*!< \deprecated Core Debug Base Address           (non-secure address space) */
+  #define DCB_BASE_NS         (0xE002EDF0UL)                             /*!< DCB Base Address                  (non-secure address space) */
+  #define DIB_BASE_NS         (0xE002EFB0UL)                             /*!< DIB Base Address                  (non-secure address space) */
+  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */
+  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */
+  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */
+
+  #define ICB_NS              ((ICB_Type       *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */
+  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */
+  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */
+  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */
+  #define CoreDebug_NS        ((CoreDebug_Type *)     CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct   (non-secure address space) */
+  #define DCB_NS              ((DCB_Type       *)     DCB_BASE_NS      ) /*!< DCB configuration struct          (non-secure address space) */
+  #define DIB_NS              ((DIB_Type       *)     DIB_BASE_NS      ) /*!< DIB configuration struct          (non-secure address space) */
+
+  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */
+    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */
+  #endif
+
+  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */
+  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */
+
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+/*@} */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_register_aliases     Backwards Compatibility Aliases
+  \brief      Register alias definitions for backwards compatibility.
+  @{
+ */
+
+/*@} */
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+#ifdef CMSIS_NVIC_VIRTUAL
+  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE
+    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"
+  #endif
+  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping
+  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping
+  #define NVIC_EnableIRQ              __NVIC_EnableIRQ
+  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ
+  #define NVIC_DisableIRQ             __NVIC_DisableIRQ
+  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ
+  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ
+  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ
+  #define NVIC_GetActive              __NVIC_GetActive
+  #define NVIC_SetPriority            __NVIC_SetPriority
+  #define NVIC_GetPriority            __NVIC_GetPriority
+  #define NVIC_SystemReset            __NVIC_SystemReset
+#endif /* CMSIS_NVIC_VIRTUAL */
+
+#ifdef CMSIS_VECTAB_VIRTUAL
+  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"
+  #endif
+  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetVector              __NVIC_SetVector
+  #define NVIC_GetVector              __NVIC_GetVector
+#endif  /* (CMSIS_VECTAB_VIRTUAL) */
+
+#define NVIC_USER_IRQ_OFFSET          16
+
+
+/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */
+
+/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */
+#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */
+
+/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */
+#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */
+#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */
+#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */
+#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */
+#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */
+#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */
+#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */
+
+/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */
+#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */
+#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */
+#else
+#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */
+#endif
+
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable Interrupt
+  \details Enables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    __COMPILER_BARRIER();
+    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+    __COMPILER_BARRIER();
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Enable status
+  \details Returns a device specific interrupt enable status from the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt is not enabled.
+  \return             1  Interrupt is enabled.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Disable Interrupt
+  \details Disables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+    __DSB();
+    __ISB();
+  }
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Interrupt Target State
+  \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+  \return             1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Interrupt Target State
+  \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+                      1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Clear Interrupt Target State
+  \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+                      1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+  \note    The priority cannot be set for every processor exception.
+ */
+__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   Set Interrupt Vector
+  \details Sets an interrupt vector in SRAM based interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+           VTOR must been relocated to SRAM before.
+  \param [in]   IRQn      Interrupt number
+  \param [in]   vector    Address of interrupt handler function
+ */
+__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
+{
+  uint32_t *vectors = (uint32_t *)SCB->VTOR;
+  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;
+  __DSB();
+}
+
+
+/**
+  \brief   Get Interrupt Vector
+  \details Reads an interrupt vector from interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn      Interrupt number.
+  \return                 Address of interrupt handler function
+ */
+__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
+{
+  uint32_t *vectors = (uint32_t *)SCB->VTOR;
+  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses included
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Priority Grouping (non-secure)
+  \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB_NS->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk));             /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)                      );              /* Insert write key and priority group */
+  SCB_NS->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping (non-secure)
+  \details Reads the priority grouping field from the non-secure NVIC when in secure state.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)
+{
+  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable Interrupt (non-secure)
+  \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Enable status (non-secure)
+  \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt is not enabled.
+  \return             1  Interrupt is enabled.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Disable Interrupt (non-secure)
+  \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Pending Interrupt (non-secure)
+  \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Pending Interrupt (non-secure)
+  \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Clear Pending Interrupt (non-secure)
+  \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Active Interrupt (non-secure)
+  \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Interrupt Priority (non-secure)
+  \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+  \note    The priority cannot be set for every non-secure processor exception.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority (non-secure)
+  \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+/* ##########################  MPU functions  #################################### */
+
+#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+
+#include "mpu_armv8.h"
+
+#endif
+
+/* ##########################  PMU functions and events  #################################### */
+
+#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U)
+
+#include "pmu_armv8.h"
+
+/**
+  \brief   Cortex-M85 PMU events
+  \note    Architectural PMU events can be found in pmu_armv8.h
+*/
+
+#define ARMCM85_PMU_ECC_ERR                          0xC000             /*!< One or more Error Correcting Code (ECC) errors detected */
+#define ARMCM85_PMU_ECC_ERR_MBIT                     0xC001             /*!< One or more multi-bit ECC errors detected */
+#define ARMCM85_PMU_ECC_ERR_DCACHE                   0xC010             /*!< One or more ECC errors in the data cache */
+#define ARMCM85_PMU_ECC_ERR_ICACHE                   0xC011             /*!< One or more ECC errors in the instruction cache */
+#define ARMCM85_PMU_ECC_ERR_MBIT_DCACHE              0xC012             /*!< One or more multi-bit ECC errors in the data cache */
+#define ARMCM85_PMU_ECC_ERR_MBIT_ICACHE              0xC013             /*!< One or more multi-bit ECC errors in the instruction cache */
+#define ARMCM85_PMU_ECC_ERR_DTCM                     0xC020             /*!< One or more ECC errors in the Data Tightly Coupled Memory (DTCM) */
+#define ARMCM85_PMU_ECC_ERR_ITCM                     0xC021             /*!< One or more ECC errors in the Instruction Tightly Coupled Memory (ITCM) */
+#define ARMCM85_PMU_ECC_ERR_MBIT_DTCM                0xC022             /*!< One or more multi-bit ECC errors in the DTCM */
+#define ARMCM85_PMU_ECC_ERR_MBIT_ITCM                0xC023             /*!< One or more multi-bit ECC errors in the ITCM */
+#define ARMCM85_PMU_PF_LINEFILL                      0xC100             /*!< The prefetcher starts a line-fill */
+#define ARMCM85_PMU_PF_CANCEL                        0xC101             /*!< The prefetcher stops prefetching */
+#define ARMCM85_PMU_PF_DROP_LINEFILL                 0xC102             /*!< A linefill triggered by a prefetcher has been dropped because of lack of buffering */
+#define ARMCM85_PMU_NWAMODE_ENTER                    0xC200             /*!< No write-allocate mode entry */
+#define ARMCM85_PMU_NWAMODE                          0xC201             /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */
+#define ARMCM85_PMU_SAHB_ACCESS                      0xC300             /*!< Read or write access on the S-AHB interface to the TCM */
+#define ARMCM85_PMU_PAHB_ACCESS                      0xC301             /*!< Read or write access on the P-AHB write interface */
+#define ARMCM85_PMU_AXI_WRITE_ACCESS                 0xC302             /*!< Any beat access to M-AXI write interface */
+#define ARMCM85_PMU_AXI_READ_ACCESS                  0xC303             /*!< Any beat access to M-AXI read interface */
+#define ARMCM85_PMU_DOSTIMEOUT_DOUBLE                0xC400             /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */
+#define ARMCM85_PMU_DOSTIMEOUT_TRIPLE                0xC401             /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */
+
+#endif
+
+/* ##########################  FPU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_FpuFunctions FPU Functions
+  \brief    Function that provides FPU type.
+  @{
+ */
+
+/**
+  \brief   get FPU type
+  \details returns the FPU type
+  \returns
+   - \b  0: No FPU
+   - \b  1: Single precision FPU
+   - \b  2: Double + Single precision FPU
+ */
+__STATIC_INLINE uint32_t SCB_GetFPUType(void)
+{
+  uint32_t mvfr0;
+
+  mvfr0 = FPU->MVFR0;
+  if      ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U)
+  {
+    return 2U;           /* Double + Single precision FPU */
+  }
+  else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U)
+  {
+    return 1U;           /* Single precision FPU */
+  }
+  else
+  {
+    return 0U;           /* No FPU */
+  }
+}
+
+
+/*@} end of CMSIS_Core_FpuFunctions */
+
+/* ##########################  MVE functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_MveFunctions MVE Functions
+  \brief    Function that provides MVE type.
+  @{
+ */
+
+/**
+  \brief   get MVE type
+  \details returns the MVE type
+  \returns
+   - \b  0: No Vector Extension (MVE)
+   - \b  1: Integer Vector Extension (MVE-I)
+   - \b  2: Floating-point Vector Extension (MVE-F)
+ */
+__STATIC_INLINE uint32_t SCB_GetMVEType(void)
+{
+  const uint32_t mvfr1 = FPU->MVFR1;
+  if      ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos))
+  {
+    return 2U;
+  }
+  else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos))
+  {
+    return 1U;
+  }
+  else
+  {
+    return 0U;
+  }
+}
+
+
+/*@} end of CMSIS_Core_MveFunctions */
+
+
+/* ##########################  Cache functions  #################################### */
+
+#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \
+     (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)))
+#include "cachel1_armv7.h"
+#endif
+
+
+/* ##########################   SAU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SAUFunctions SAU Functions
+  \brief    Functions that configure the SAU.
+  @{
+ */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/**
+  \brief   Enable SAU
+  \details Enables the Security Attribution Unit (SAU).
+ */
+__STATIC_INLINE void TZ_SAU_Enable(void)
+{
+    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);
+}
+
+
+
+/**
+  \brief   Disable SAU
+  \details Disables the Security Attribution Unit (SAU).
+ */
+__STATIC_INLINE void TZ_SAU_Disable(void)
+{
+    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);
+}
+
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_SAUFunctions */
+
+
+
+/* ###################  PAC Key functions  ########################### */
+
+#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1))
+#include "pac_armv81.h"
+#endif
+
+
+/* ##################################    Debug Control function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_DCBFunctions Debug Control Functions
+  \brief    Functions that access the Debug Control Block.
+  @{
+ */
+
+
+/**
+  \brief   Set Debug Authentication Control Register
+  \details writes to Debug Authentication Control register.
+  \param [in]  value  value to be writen.
+ */
+__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value)
+{
+    __DSB();
+    __ISB();
+    DCB->DAUTHCTRL = value;
+    __DSB();
+    __ISB();
+}
+
+
+/**
+  \brief   Get Debug Authentication Control Register
+  \details Reads Debug Authentication Control register.
+  \return             Debug Authentication Control Register.
+ */
+__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void)
+{
+    return (DCB->DAUTHCTRL);
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Debug Authentication Control Register (non-secure)
+  \details writes to non-secure Debug Authentication Control register when in secure state.
+  \param [in]  value  value to be writen
+ */
+__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value)
+{
+    __DSB();
+    __ISB();
+    DCB_NS->DAUTHCTRL = value;
+    __DSB();
+    __ISB();
+}
+
+
+/**
+  \brief   Get Debug Authentication Control Register (non-secure)
+  \details Reads non-secure Debug Authentication Control register when in secure state.
+  \return             Debug Authentication Control Register.
+ */
+__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void)
+{
+    return (DCB_NS->DAUTHCTRL);
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_DCBFunctions */
+
+
+
+
+/* ##################################    Debug Identification function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions
+  \brief    Functions that access the Debug Identification Block.
+  @{
+ */
+
+
+/**
+  \brief   Get Debug Authentication Status Register
+  \details Reads Debug Authentication Status register.
+  \return             Debug Authentication Status Register.
+ */
+__STATIC_INLINE uint32_t DIB_GetAuthStatus(void)
+{
+    return (DIB->DAUTHSTATUS);
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Debug Authentication Status Register (non-secure)
+  \details Reads non-secure Debug Authentication Status register when in secure state.
+  \return             Debug Authentication Status Register.
+ */
+__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void)
+{
+    return (DIB_NS->DAUTHSTATUS);
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_DCBFunctions */
+
+
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   System Tick Configuration (non-secure)
+  \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+
+ */
+__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                         /* Reload value impossible */
+  }
+
+  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */
+  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */
+  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                      SysTick_CTRL_TICKINT_Msk   |
+                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                           /* Function successful */
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_CM85_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */

+ 3592 - 0
CMSIS/Core/Include/core_starmc1.h

@@ -0,0 +1,3592 @@
+/**************************************************************************//**
+ * @file     core_starmc1.h
+ * @brief    CMSIS ArmChina STAR-MC1 Core Peripheral Access Layer Header File
+ * @version  V1.0.2
+ * @date     07. April 2022
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2018 Arm Limited. 
+ * Copyright (c) 2018-2022 Arm China. 
+ * All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if   defined ( __ICCARM__ )
+  #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined (__clang__)
+  #pragma clang system_header                   /* treat file as system include file */
+#elif defined ( __GNUC__ )
+  #pragma GCC diagnostic ignored "-Wpedantic"   /* disable pedantic warning due to unnamed structs/unions */
+#endif
+
+#ifndef __CORE_STAR_H_GENERIC
+#define __CORE_STAR_H_GENERIC
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
+  CMSIS violates the following MISRA-C:2004 rules:
+
+   \li Required Rule 8.5, object/function definition in header file.<br>
+     Function definitions in header files are used to allow 'inlining'.
+
+   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
+     Unions are used for effective representation of core registers.
+
+   \li Advisory Rule 19.7, Function-like macro defined.<br>
+     Function-like macros are used to allow more efficient code.
+ */
+
+
+/*******************************************************************************
+ *                 CMSIS definitions
+ ******************************************************************************/
+/**
+  \ingroup STAR-MC1
+  @{
+ */
+
+#include "cmsis_version.h"
+
+/* Macro Define for STAR-MC1 */
+#define __STAR_MC                 (1U)                                       /*!< STAR-MC Core */
+
+/** __FPU_USED indicates whether an FPU is used or not.
+    For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.
+*/
+#if defined ( __CC_ARM )
+  #if defined (__TARGET_FPU_VFP)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)
+    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+  #if defined (__ARM_FP)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)
+    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __GNUC__ )
+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)
+    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined (__ARMVFP__)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+  #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U)
+    #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U)
+      #define __DSP_USED       1U
+    #else
+      #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)"
+      #define __DSP_USED         0U
+    #endif
+  #else
+    #define __DSP_USED         0U
+  #endif
+
+#elif defined ( __TI_ARM__ )
+  #if defined (__TI_VFP_SUPPORT__)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __TASKING__ )
+  #if defined (__FPU_VFP__)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#elif defined ( __CSMC__ )
+  #if ( __CSMC__ & 0x400U)
+    #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)
+      #define __FPU_USED       1U
+    #else
+      #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+      #define __FPU_USED       0U
+    #endif
+  #else
+    #define __FPU_USED         0U
+  #endif
+
+#endif
+
+#include "cmsis_compiler.h"               /* CMSIS compiler specific defines */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_STAR_H_GENERIC */
+
+#ifndef __CMSIS_GENERIC
+
+#ifndef __CORE_STAR_H_DEPENDANT
+#define __CORE_STAR_H_DEPENDANT
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* check device defines and use defaults */
+#if defined __CHECK_DEVICE_DEFINES
+  #ifndef __STAR_REV
+    #define __STAR_REV                0x0000U
+    #warning "__STAR_REV not defined in device header file; using default!"
+  #endif
+
+  #ifndef __FPU_PRESENT
+    #define __FPU_PRESENT             0U
+    #warning "__FPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __MPU_PRESENT
+    #define __MPU_PRESENT             0U
+    #warning "__MPU_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __SAUREGION_PRESENT
+    #define __SAUREGION_PRESENT       0U
+    #warning "__SAUREGION_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DSP_PRESENT
+    #define __DSP_PRESENT             0U
+    #warning "__DSP_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __ICACHE_PRESENT
+    #define __ICACHE_PRESENT          0U
+    #warning "__ICACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DCACHE_PRESENT
+    #define __DCACHE_PRESENT          0U
+    #warning "__DCACHE_PRESENT not defined in device header file; using default!"
+  #endif
+
+  #ifndef __DTCM_PRESENT
+    #define __DTCM_PRESENT            0U
+    #warning "__DTCM_PRESENT        not defined in device header file; using default!"
+  #endif
+
+  #ifndef __NVIC_PRIO_BITS
+    #define __NVIC_PRIO_BITS          3U
+    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+  #endif
+
+  #ifndef __Vendor_SysTickConfig
+    #define __Vendor_SysTickConfig    0U
+    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+  #endif
+#endif
+
+/* IO definitions (access restrictions to peripheral registers) */
+/**
+    \defgroup CMSIS_glob_defs CMSIS Global Defines
+
+    <strong>IO Type Qualifiers</strong> are used
+    \li to specify the access to peripheral variables.
+    \li for automatic generation of peripheral register debug information.
+*/
+#ifdef __cplusplus
+  #define   __I     volatile             /*!< Defines 'read only' permissions */
+#else
+  #define   __I     volatile const       /*!< Defines 'read only' permissions */
+#endif
+#define     __O     volatile             /*!< Defines 'write only' permissions */
+#define     __IO    volatile             /*!< Defines 'read / write' permissions */
+
+/* following defines should be used for structure members */
+#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
+#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
+#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
+
+/*@} end of group STAR-MC1 */
+
+
+
+/*******************************************************************************
+ *                 Register Abstraction
+  Core Register contain:
+  - Core Register
+  - Core NVIC Register
+  - Core SCB Register
+  - Core SysTick Register
+  - Core Debug Register
+  - Core MPU Register
+  - Core SAU Register
+  - Core FPU Register
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_core_register Defines and Type Definitions
+  \brief Type definitions and defines for STAR-MC1 processor based devices.
+*/
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_CORE  Status and Control Registers
+  \brief      Core Register type definitions.
+  @{
+ */
+
+/**
+  \brief  Union type to access the Application Program Status Register (APSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} APSR_Type;
+
+/* APSR Register Definitions */
+#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
+#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
+
+#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
+#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
+
+#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
+#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
+
+#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
+#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
+
+#define APSR_Q_Pos                         27U                                            /*!< APSR: Q Position */
+#define APSR_Q_Msk                         (1UL << APSR_Q_Pos)                            /*!< APSR: Q Mask */
+
+#define APSR_GE_Pos                        16U                                            /*!< APSR: GE Position */
+#define APSR_GE_Msk                        (0xFUL << APSR_GE_Pos)                         /*!< APSR: GE Mask */
+
+
+/**
+  \brief  Union type to access the Interrupt Program Status Register (IPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} IPSR_Type;
+
+/* IPSR Register Definitions */
+#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
+#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved */
+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags */
+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved */
+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0) */
+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag */
+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} xPSR_Type;
+
+/* xPSR Register Definitions */
+#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
+#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
+
+#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
+#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
+
+#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
+#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
+
+#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
+#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
+
+#define xPSR_Q_Pos                         27U                                            /*!< xPSR: Q Position */
+#define xPSR_Q_Msk                         (1UL << xPSR_Q_Pos)                            /*!< xPSR: Q Mask */
+
+#define xPSR_IT_Pos                        25U                                            /*!< xPSR: IT Position */
+#define xPSR_IT_Msk                        (3UL << xPSR_IT_Pos)                           /*!< xPSR: IT Mask */
+
+#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
+#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
+
+#define xPSR_GE_Pos                        16U                                            /*!< xPSR: GE Position */
+#define xPSR_GE_Msk                        (0xFUL << xPSR_GE_Pos)                         /*!< xPSR: GE Mask */
+
+#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
+#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
+
+
+/**
+  \brief  Union type to access the Control Registers (CONTROL).
+ */
+typedef union
+{
+  struct
+  {
+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack-pointer select */
+    uint32_t FPCA:1;                     /*!< bit:      2  Floating-point context active */
+    uint32_t SFPA:1;                     /*!< bit:      3  Secure floating-point active */
+    uint32_t _reserved1:28;              /*!< bit:  4..31  Reserved */
+  } b;                                   /*!< Structure used for bit  access */
+  uint32_t w;                            /*!< Type      used for word access */
+} CONTROL_Type;
+
+/* CONTROL Register Definitions */
+#define CONTROL_SFPA_Pos                    3U                                            /*!< CONTROL: SFPA Position */
+#define CONTROL_SFPA_Msk                   (1UL << CONTROL_SFPA_Pos)                      /*!< CONTROL: SFPA Mask */
+
+#define CONTROL_FPCA_Pos                    2U                                            /*!< CONTROL: FPCA Position */
+#define CONTROL_FPCA_Msk                   (1UL << CONTROL_FPCA_Pos)                      /*!< CONTROL: FPCA Mask */
+
+#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
+#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
+
+#define CONTROL_nPRIV_Pos                   0U                                            /*!< CONTROL: nPRIV Position */
+#define CONTROL_nPRIV_Msk                  (1UL /*<< CONTROL_nPRIV_Pos*/)                 /*!< CONTROL: nPRIV Mask */
+
+/*@} end of group CMSIS_CORE */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
+  \brief      Type definitions for the NVIC Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+ */
+typedef struct
+{
+  __IOM uint32_t ISER[16U];              /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
+        uint32_t RESERVED0[16U];
+  __IOM uint32_t ICER[16U];              /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
+        uint32_t RSERVED1[16U];
+  __IOM uint32_t ISPR[16U];              /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
+        uint32_t RESERVED2[16U];
+  __IOM uint32_t ICPR[16U];              /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
+        uint32_t RESERVED3[16U];
+  __IOM uint32_t IABR[16U];              /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register */
+        uint32_t RESERVED4[16U];
+  __IOM uint32_t ITNS[16U];              /*!< Offset: 0x280 (R/W)  Interrupt Non-Secure State Register */
+        uint32_t RESERVED5[16U];
+  __IOM uint8_t  IPR[496U];              /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */
+        uint32_t RESERVED6[580U];
+  __OM  uint32_t STIR;                   /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register */
+}  NVIC_Type;
+
+/* Software Triggered Interrupt Register Definitions */
+#define NVIC_STIR_INTID_Pos                 0U                                         /*!< STIR: INTLINESNUM Position */
+#define NVIC_STIR_INTID_Msk                (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/)        /*!< STIR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_NVIC */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCB     System Control Block (SCB)
+  \brief    Type definitions for the System Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control Block (SCB).
+ */
+typedef struct
+{
+  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
+  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
+  __IOM uint32_t VTOR;                   /*!< Offset: 0x008 (R/W)  Vector Table Offset Register */
+  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
+  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
+  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
+  __IOM uint8_t  SHPR[12U];              /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */
+  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
+  __IOM uint32_t CFSR;                   /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register */
+  __IOM uint32_t HFSR;                   /*!< Offset: 0x02C (R/W)  HardFault Status Register */
+  __IOM uint32_t DFSR;                   /*!< Offset: 0x030 (R/W)  Debug Fault Status Register */
+  __IOM uint32_t MMFAR;                  /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register */
+  __IOM uint32_t BFAR;                   /*!< Offset: 0x038 (R/W)  BusFault Address Register */
+  __IOM uint32_t AFSR;                   /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register */
+  __IM  uint32_t ID_PFR[2U];             /*!< Offset: 0x040 (R/ )  Processor Feature Register */
+  __IM  uint32_t ID_DFR;                 /*!< Offset: 0x048 (R/ )  Debug Feature Register */
+  __IM  uint32_t ID_AFR;                 /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register */
+  __IM  uint32_t ID_MMFR[4U];            /*!< Offset: 0x050 (R/ )  Memory Model Feature Register */
+  __IM  uint32_t ID_ISAR[5U];            /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register */
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t CLIDR;                  /*!< Offset: 0x078 (R/ )  Cache Level ID register */
+  __IM  uint32_t CTR;                    /*!< Offset: 0x07C (R/ )  Cache Type register */
+  __IM  uint32_t CCSIDR;                 /*!< Offset: 0x080 (R/ )  Cache Size ID Register */
+  __IOM uint32_t CSSELR;                 /*!< Offset: 0x084 (R/W)  Cache Size Selection Register */
+  __IOM uint32_t CPACR;                  /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register */
+  __IOM uint32_t NSACR;                  /*!< Offset: 0x08C (R/W)  Non-Secure Access Control Register */
+        uint32_t RESERVED_ADD1[21U];      
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x0E4 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x0E8 (R/W)  Secure Fault Address Register */
+        uint32_t RESERVED3[69U];
+  __OM  uint32_t STIR;                   /*!< Offset: F00-D00=0x200 ( /W)  Software Triggered Interrupt Register */
+        uint32_t RESERVED4[15U];
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x240 (R/ )  Media and VFP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x244 (R/ )  Media and VFP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x248 (R/ )  Media and VFP Feature Register 2 */
+        uint32_t RESERVED5[1U];
+  __OM  uint32_t ICIALLU;                /*!< Offset: 0x250 ( /W)  I-Cache Invalidate All to PoU */
+        uint32_t RESERVED6[1U];
+  __OM  uint32_t ICIMVAU;                /*!< Offset: 0x258 ( /W)  I-Cache Invalidate by MVA to PoU */
+  __OM  uint32_t DCIMVAC;                /*!< Offset: 0x25C ( /W)  D-Cache Invalidate by MVA to PoC */
+  __OM  uint32_t DCISW;                  /*!< Offset: 0x260 ( /W)  D-Cache Invalidate by Set-way */
+  __OM  uint32_t DCCMVAU;                /*!< Offset: 0x264 ( /W)  D-Cache Clean by MVA to PoU */
+  __OM  uint32_t DCCMVAC;                /*!< Offset: 0x268 ( /W)  D-Cache Clean by MVA to PoC */
+  __OM  uint32_t DCCSW;                  /*!< Offset: 0x26C ( /W)  D-Cache Clean by Set-way */
+  __OM  uint32_t DCCIMVAC;               /*!< Offset: 0x270 ( /W)  D-Cache Clean and Invalidate by MVA to PoC */
+  __OM  uint32_t DCCISW;                 /*!< Offset: 0x274 ( /W)  D-Cache Clean and Invalidate by Set-way */
+} SCB_Type;
+
+typedef struct
+{
+  __IOM uint32_t CACR;				       /*!< Offset: 0x0 (R/W)  L1 Cache Control Register */
+  __IOM uint32_t ITCMCR;				   /*!< Offset: 0x10 (R/W)  Instruction Tightly-Coupled Memory Control Register */
+  __IOM uint32_t DTCMCR;				   /*!< Offset: 0x14 (R/W)  Data Tightly-Coupled Memory Control Registers */ 
+}EMSS_Type;
+
+/* SCB CPUID Register Definitions */
+#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+
+#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+
+#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+
+#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+
+#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
+
+/* SCB Interrupt Control State Register Definitions */
+#define SCB_ICSR_PENDNMISET_Pos            31U                                            /*!< SCB ICSR: PENDNMISET Position */
+#define SCB_ICSR_PENDNMISET_Msk            (1UL << SCB_ICSR_PENDNMISET_Pos)               /*!< SCB ICSR: PENDNMISET Mask */
+
+#define SCB_ICSR_NMIPENDSET_Pos            SCB_ICSR_PENDNMISET_Pos                        /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */
+#define SCB_ICSR_NMIPENDSET_Msk            SCB_ICSR_PENDNMISET_Msk                        /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */
+
+#define SCB_ICSR_PENDNMICLR_Pos            30U                                            /*!< SCB ICSR: PENDNMICLR Position */
+#define SCB_ICSR_PENDNMICLR_Msk            (1UL << SCB_ICSR_PENDNMICLR_Pos)               /*!< SCB ICSR: PENDNMICLR Mask */
+
+#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+
+#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+
+#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+
+#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+
+#define SCB_ICSR_STTNS_Pos                 24U                                            /*!< SCB ICSR: STTNS Position (Security Extension) */
+#define SCB_ICSR_STTNS_Msk                 (1UL << SCB_ICSR_STTNS_Pos)                    /*!< SCB ICSR: STTNS Mask (Security Extension) */
+
+#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+
+#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+
+#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+
+#define SCB_ICSR_RETTOBASE_Pos             11U                                            /*!< SCB ICSR: RETTOBASE Position */
+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */
+
+#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
+
+/* SCB Vector Table Offset Register Definitions */
+#define SCB_VTOR_TBLOFF_Pos                 7U                                            /*!< SCB VTOR: TBLOFF Position */
+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */
+
+/* SCB Application Interrupt and Reset Control Register Definitions */
+#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+
+#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+
+#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+
+#define SCB_AIRCR_PRIS_Pos                 14U                                            /*!< SCB AIRCR: PRIS Position */
+#define SCB_AIRCR_PRIS_Msk                 (1UL << SCB_AIRCR_PRIS_Pos)                    /*!< SCB AIRCR: PRIS Mask */
+
+#define SCB_AIRCR_BFHFNMINS_Pos            13U                                            /*!< SCB AIRCR: BFHFNMINS Position */
+#define SCB_AIRCR_BFHFNMINS_Msk            (1UL << SCB_AIRCR_BFHFNMINS_Pos)               /*!< SCB AIRCR: BFHFNMINS Mask */
+
+#define SCB_AIRCR_PRIGROUP_Pos              8U                                            /*!< SCB AIRCR: PRIGROUP Position */
+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */
+
+#define SCB_AIRCR_SYSRESETREQS_Pos          3U                                            /*!< SCB AIRCR: SYSRESETREQS Position */
+#define SCB_AIRCR_SYSRESETREQS_Msk         (1UL << SCB_AIRCR_SYSRESETREQS_Pos)            /*!< SCB AIRCR: SYSRESETREQS Mask */
+
+#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+
+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+
+/* SCB System Control Register Definitions */
+#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+
+#define SCB_SCR_SLEEPDEEPS_Pos              3U                                            /*!< SCB SCR: SLEEPDEEPS Position */
+#define SCB_SCR_SLEEPDEEPS_Msk             (1UL << SCB_SCR_SLEEPDEEPS_Pos)                /*!< SCB SCR: SLEEPDEEPS Mask */
+
+#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+
+#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+
+/* SCB Configuration Control Register Definitions */
+#define SCB_CCR_BP_Pos                     18U                                            /*!< SCB CCR: BP Position */
+#define SCB_CCR_BP_Msk                     (1UL << SCB_CCR_BP_Pos)                        /*!< SCB CCR: BP Mask */
+
+#define SCB_CCR_IC_Pos                     17U                                            /*!< SCB CCR: IC Position */
+#define SCB_CCR_IC_Msk                     (1UL << SCB_CCR_IC_Pos)                        /*!< SCB CCR: IC Mask */
+
+#define SCB_CCR_DC_Pos                     16U                                            /*!< SCB CCR: DC Position */
+#define SCB_CCR_DC_Msk                     (1UL << SCB_CCR_DC_Pos)                        /*!< SCB CCR: DC Mask */
+
+#define SCB_CCR_STKOFHFNMIGN_Pos           10U                                            /*!< SCB CCR: STKOFHFNMIGN Position */
+#define SCB_CCR_STKOFHFNMIGN_Msk           (1UL << SCB_CCR_STKOFHFNMIGN_Pos)              /*!< SCB CCR: STKOFHFNMIGN Mask */
+
+#define SCB_CCR_BFHFNMIGN_Pos               8U                                            /*!< SCB CCR: BFHFNMIGN Position */
+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */
+
+#define SCB_CCR_DIV_0_TRP_Pos               4U                                            /*!< SCB CCR: DIV_0_TRP Position */
+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */
+
+#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+
+#define SCB_CCR_USERSETMPEND_Pos            1U                                            /*!< SCB CCR: USERSETMPEND Position */
+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */
+
+/* SCB System Handler Control and State Register Definitions */
+#define SCB_SHCSR_HARDFAULTPENDED_Pos      21U                                            /*!< SCB SHCSR: HARDFAULTPENDED Position */
+#define SCB_SHCSR_HARDFAULTPENDED_Msk      (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos)         /*!< SCB SHCSR: HARDFAULTPENDED Mask */
+
+#define SCB_SHCSR_SECUREFAULTPENDED_Pos    20U                                            /*!< SCB SHCSR: SECUREFAULTPENDED Position */
+#define SCB_SHCSR_SECUREFAULTPENDED_Msk    (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos)       /*!< SCB SHCSR: SECUREFAULTPENDED Mask */
+
+#define SCB_SHCSR_SECUREFAULTENA_Pos       19U                                            /*!< SCB SHCSR: SECUREFAULTENA Position */
+#define SCB_SHCSR_SECUREFAULTENA_Msk       (1UL << SCB_SHCSR_SECUREFAULTENA_Pos)          /*!< SCB SHCSR: SECUREFAULTENA Mask */
+
+#define SCB_SHCSR_USGFAULTENA_Pos          18U                                            /*!< SCB SHCSR: USGFAULTENA Position */
+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */
+
+#define SCB_SHCSR_BUSFAULTENA_Pos          17U                                            /*!< SCB SHCSR: BUSFAULTENA Position */
+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */
+
+#define SCB_SHCSR_MEMFAULTENA_Pos          16U                                            /*!< SCB SHCSR: MEMFAULTENA Position */
+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */
+
+#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
+
+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14U                                            /*!< SCB SHCSR: BUSFAULTPENDED Position */
+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */
+
+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13U                                            /*!< SCB SHCSR: MEMFAULTPENDED Position */
+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */
+
+#define SCB_SHCSR_USGFAULTPENDED_Pos       12U                                            /*!< SCB SHCSR: USGFAULTPENDED Position */
+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */
+
+#define SCB_SHCSR_SYSTICKACT_Pos           11U                                            /*!< SCB SHCSR: SYSTICKACT Position */
+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */
+
+#define SCB_SHCSR_PENDSVACT_Pos            10U                                            /*!< SCB SHCSR: PENDSVACT Position */
+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */
+
+#define SCB_SHCSR_MONITORACT_Pos            8U                                            /*!< SCB SHCSR: MONITORACT Position */
+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */
+
+#define SCB_SHCSR_SVCALLACT_Pos             7U                                            /*!< SCB SHCSR: SVCALLACT Position */
+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */
+
+#define SCB_SHCSR_NMIACT_Pos                5U                                            /*!< SCB SHCSR: NMIACT Position */
+#define SCB_SHCSR_NMIACT_Msk               (1UL << SCB_SHCSR_NMIACT_Pos)                  /*!< SCB SHCSR: NMIACT Mask */
+
+#define SCB_SHCSR_SECUREFAULTACT_Pos        4U                                            /*!< SCB SHCSR: SECUREFAULTACT Position */
+#define SCB_SHCSR_SECUREFAULTACT_Msk       (1UL << SCB_SHCSR_SECUREFAULTACT_Pos)          /*!< SCB SHCSR: SECUREFAULTACT Mask */
+
+#define SCB_SHCSR_USGFAULTACT_Pos           3U                                            /*!< SCB SHCSR: USGFAULTACT Position */
+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */
+
+#define SCB_SHCSR_HARDFAULTACT_Pos          2U                                            /*!< SCB SHCSR: HARDFAULTACT Position */
+#define SCB_SHCSR_HARDFAULTACT_Msk         (1UL << SCB_SHCSR_HARDFAULTACT_Pos)            /*!< SCB SHCSR: HARDFAULTACT Mask */
+
+#define SCB_SHCSR_BUSFAULTACT_Pos           1U                                            /*!< SCB SHCSR: BUSFAULTACT Position */
+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */
+
+#define SCB_SHCSR_MEMFAULTACT_Pos           0U                                            /*!< SCB SHCSR: MEMFAULTACT Position */
+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/)         /*!< SCB SHCSR: MEMFAULTACT Mask */
+
+/* SCB Configurable Fault Status Register Definitions */
+#define SCB_CFSR_USGFAULTSR_Pos            16U                                            /*!< SCB CFSR: Usage Fault Status Register Position */
+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */
+
+#define SCB_CFSR_BUSFAULTSR_Pos             8U                                            /*!< SCB CFSR: Bus Fault Status Register Position */
+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */
+
+#define SCB_CFSR_MEMFAULTSR_Pos             0U                                            /*!< SCB CFSR: Memory Manage Fault Status Register Position */
+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/)        /*!< SCB CFSR: Memory Manage Fault Status Register Mask */
+
+/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_MMARVALID_Pos             (SCB_CFSR_MEMFAULTSR_Pos + 7U)                 /*!< SCB CFSR (MMFSR): MMARVALID Position */
+#define SCB_CFSR_MMARVALID_Msk             (1UL << SCB_CFSR_MMARVALID_Pos)                /*!< SCB CFSR (MMFSR): MMARVALID Mask */
+
+#define SCB_CFSR_MLSPERR_Pos               (SCB_CFSR_MEMFAULTSR_Pos + 5U)                 /*!< SCB CFSR (MMFSR): MLSPERR Position */
+#define SCB_CFSR_MLSPERR_Msk               (1UL << SCB_CFSR_MLSPERR_Pos)                  /*!< SCB CFSR (MMFSR): MLSPERR Mask */
+
+#define SCB_CFSR_MSTKERR_Pos               (SCB_CFSR_MEMFAULTSR_Pos + 4U)                 /*!< SCB CFSR (MMFSR): MSTKERR Position */
+#define SCB_CFSR_MSTKERR_Msk               (1UL << SCB_CFSR_MSTKERR_Pos)                  /*!< SCB CFSR (MMFSR): MSTKERR Mask */
+
+#define SCB_CFSR_MUNSTKERR_Pos             (SCB_CFSR_MEMFAULTSR_Pos + 3U)                 /*!< SCB CFSR (MMFSR): MUNSTKERR Position */
+#define SCB_CFSR_MUNSTKERR_Msk             (1UL << SCB_CFSR_MUNSTKERR_Pos)                /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */
+
+#define SCB_CFSR_DACCVIOL_Pos              (SCB_CFSR_MEMFAULTSR_Pos + 1U)                 /*!< SCB CFSR (MMFSR): DACCVIOL Position */
+#define SCB_CFSR_DACCVIOL_Msk              (1UL << SCB_CFSR_DACCVIOL_Pos)                 /*!< SCB CFSR (MMFSR): DACCVIOL Mask */
+
+#define SCB_CFSR_IACCVIOL_Pos              (SCB_CFSR_MEMFAULTSR_Pos + 0U)                 /*!< SCB CFSR (MMFSR): IACCVIOL Position */
+#define SCB_CFSR_IACCVIOL_Msk              (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/)             /*!< SCB CFSR (MMFSR): IACCVIOL Mask */
+
+/* BusFault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_BFARVALID_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 7U)                  /*!< SCB CFSR (BFSR): BFARVALID Position */
+#define SCB_CFSR_BFARVALID_Msk            (1UL << SCB_CFSR_BFARVALID_Pos)                 /*!< SCB CFSR (BFSR): BFARVALID Mask */
+
+#define SCB_CFSR_LSPERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 5U)                  /*!< SCB CFSR (BFSR): LSPERR Position */
+#define SCB_CFSR_LSPERR_Msk               (1UL << SCB_CFSR_LSPERR_Pos)                    /*!< SCB CFSR (BFSR): LSPERR Mask */
+
+#define SCB_CFSR_STKERR_Pos               (SCB_CFSR_BUSFAULTSR_Pos + 4U)                  /*!< SCB CFSR (BFSR): STKERR Position */
+#define SCB_CFSR_STKERR_Msk               (1UL << SCB_CFSR_STKERR_Pos)                    /*!< SCB CFSR (BFSR): STKERR Mask */
+
+#define SCB_CFSR_UNSTKERR_Pos             (SCB_CFSR_BUSFAULTSR_Pos + 3U)                  /*!< SCB CFSR (BFSR): UNSTKERR Position */
+#define SCB_CFSR_UNSTKERR_Msk             (1UL << SCB_CFSR_UNSTKERR_Pos)                  /*!< SCB CFSR (BFSR): UNSTKERR Mask */
+
+#define SCB_CFSR_IMPRECISERR_Pos          (SCB_CFSR_BUSFAULTSR_Pos + 2U)                  /*!< SCB CFSR (BFSR): IMPRECISERR Position */
+#define SCB_CFSR_IMPRECISERR_Msk          (1UL << SCB_CFSR_IMPRECISERR_Pos)               /*!< SCB CFSR (BFSR): IMPRECISERR Mask */
+
+#define SCB_CFSR_PRECISERR_Pos            (SCB_CFSR_BUSFAULTSR_Pos + 1U)                  /*!< SCB CFSR (BFSR): PRECISERR Position */
+#define SCB_CFSR_PRECISERR_Msk            (1UL << SCB_CFSR_PRECISERR_Pos)                 /*!< SCB CFSR (BFSR): PRECISERR Mask */
+
+#define SCB_CFSR_IBUSERR_Pos              (SCB_CFSR_BUSFAULTSR_Pos + 0U)                  /*!< SCB CFSR (BFSR): IBUSERR Position */
+#define SCB_CFSR_IBUSERR_Msk              (1UL << SCB_CFSR_IBUSERR_Pos)                   /*!< SCB CFSR (BFSR): IBUSERR Mask */
+
+/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */
+#define SCB_CFSR_DIVBYZERO_Pos            (SCB_CFSR_USGFAULTSR_Pos + 9U)                  /*!< SCB CFSR (UFSR): DIVBYZERO Position */
+#define SCB_CFSR_DIVBYZERO_Msk            (1UL << SCB_CFSR_DIVBYZERO_Pos)                 /*!< SCB CFSR (UFSR): DIVBYZERO Mask */
+
+#define SCB_CFSR_UNALIGNED_Pos            (SCB_CFSR_USGFAULTSR_Pos + 8U)                  /*!< SCB CFSR (UFSR): UNALIGNED Position */
+#define SCB_CFSR_UNALIGNED_Msk            (1UL << SCB_CFSR_UNALIGNED_Pos)                 /*!< SCB CFSR (UFSR): UNALIGNED Mask */
+
+#define SCB_CFSR_STKOF_Pos                (SCB_CFSR_USGFAULTSR_Pos + 4U)                  /*!< SCB CFSR (UFSR): STKOF Position */
+#define SCB_CFSR_STKOF_Msk                (1UL << SCB_CFSR_STKOF_Pos)                     /*!< SCB CFSR (UFSR): STKOF Mask */
+
+#define SCB_CFSR_NOCP_Pos                 (SCB_CFSR_USGFAULTSR_Pos + 3U)                  /*!< SCB CFSR (UFSR): NOCP Position */
+#define SCB_CFSR_NOCP_Msk                 (1UL << SCB_CFSR_NOCP_Pos)                      /*!< SCB CFSR (UFSR): NOCP Mask */
+
+#define SCB_CFSR_INVPC_Pos                (SCB_CFSR_USGFAULTSR_Pos + 2U)                  /*!< SCB CFSR (UFSR): INVPC Position */
+#define SCB_CFSR_INVPC_Msk                (1UL << SCB_CFSR_INVPC_Pos)                     /*!< SCB CFSR (UFSR): INVPC Mask */
+
+#define SCB_CFSR_INVSTATE_Pos             (SCB_CFSR_USGFAULTSR_Pos + 1U)                  /*!< SCB CFSR (UFSR): INVSTATE Position */
+#define SCB_CFSR_INVSTATE_Msk             (1UL << SCB_CFSR_INVSTATE_Pos)                  /*!< SCB CFSR (UFSR): INVSTATE Mask */
+
+#define SCB_CFSR_UNDEFINSTR_Pos           (SCB_CFSR_USGFAULTSR_Pos + 0U)                  /*!< SCB CFSR (UFSR): UNDEFINSTR Position */
+#define SCB_CFSR_UNDEFINSTR_Msk           (1UL << SCB_CFSR_UNDEFINSTR_Pos)                /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */
+
+/* SCB Hard Fault Status Register Definitions */
+#define SCB_HFSR_DEBUGEVT_Pos              31U                                            /*!< SCB HFSR: DEBUGEVT Position */
+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */
+
+#define SCB_HFSR_FORCED_Pos                30U                                            /*!< SCB HFSR: FORCED Position */
+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */
+
+#define SCB_HFSR_VECTTBL_Pos                1U                                            /*!< SCB HFSR: VECTTBL Position */
+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */
+
+/* SCB Debug Fault Status Register Definitions */
+#define SCB_DFSR_EXTERNAL_Pos               4U                                            /*!< SCB DFSR: EXTERNAL Position */
+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */
+
+#define SCB_DFSR_VCATCH_Pos                 3U                                            /*!< SCB DFSR: VCATCH Position */
+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */
+
+#define SCB_DFSR_DWTTRAP_Pos                2U                                            /*!< SCB DFSR: DWTTRAP Position */
+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */
+
+#define SCB_DFSR_BKPT_Pos                   1U                                            /*!< SCB DFSR: BKPT Position */
+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */
+
+#define SCB_DFSR_HALTED_Pos                 0U                                            /*!< SCB DFSR: HALTED Position */
+#define SCB_DFSR_HALTED_Msk                (1UL /*<< SCB_DFSR_HALTED_Pos*/)               /*!< SCB DFSR: HALTED Mask */
+
+/* SCB Non-Secure Access Control Register Definitions */
+#define SCB_NSACR_CP11_Pos                 11U                                            /*!< SCB NSACR: CP11 Position */
+#define SCB_NSACR_CP11_Msk                 (1UL << SCB_NSACR_CP11_Pos)                    /*!< SCB NSACR: CP11 Mask */
+
+#define SCB_NSACR_CP10_Pos                 10U                                            /*!< SCB NSACR: CP10 Position */
+#define SCB_NSACR_CP10_Msk                 (1UL << SCB_NSACR_CP10_Pos)                    /*!< SCB NSACR: CP10 Mask */
+
+#define SCB_NSACR_CPn_Pos                   0U                                            /*!< SCB NSACR: CPn Position */
+#define SCB_NSACR_CPn_Msk                  (1UL /*<< SCB_NSACR_CPn_Pos*/)                 /*!< SCB NSACR: CPn Mask */
+
+/* SCB Cache Level ID Register Definitions */
+#define SCB_CLIDR_LOUU_Pos                 27U                                            /*!< SCB CLIDR: LoUU Position */
+#define SCB_CLIDR_LOUU_Msk                 (7UL << SCB_CLIDR_LOUU_Pos)                    /*!< SCB CLIDR: LoUU Mask */
+
+#define SCB_CLIDR_LOC_Pos                  24U                                            /*!< SCB CLIDR: LoC Position */
+#define SCB_CLIDR_LOC_Msk                  (7UL << SCB_CLIDR_LOC_Pos)                     /*!< SCB CLIDR: LoC Mask */
+
+#define SCB_CLIDR_IC_Pos                   0U                                             /*!< SCB CLIDR: IC Position */
+#define SCB_CLIDR_IC_Msk                   (1UL << SCB_CLIDR_IC_Pos)                      /*!< SCB CLIDR: IC Mask */
+
+#define SCB_CLIDR_DC_Pos                   1U                                             /*!< SCB CLIDR: DC Position */
+#define SCB_CLIDR_DC_Msk                   (1UL << SCB_CLIDR_DC_Pos)                      /*!< SCB CLIDR: DC Mask */
+
+
+
+/* SCB Cache Type Register Definitions */
+#define SCB_CTR_FORMAT_Pos                 29U                                            /*!< SCB CTR: Format Position */
+#define SCB_CTR_FORMAT_Msk                 (7UL << SCB_CTR_FORMAT_Pos)                    /*!< SCB CTR: Format Mask */
+
+#define SCB_CTR_CWG_Pos                    24U                                            /*!< SCB CTR: CWG Position */
+#define SCB_CTR_CWG_Msk                    (0xFUL << SCB_CTR_CWG_Pos)                     /*!< SCB CTR: CWG Mask */
+
+#define SCB_CTR_ERG_Pos                    20U                                            /*!< SCB CTR: ERG Position */
+#define SCB_CTR_ERG_Msk                    (0xFUL << SCB_CTR_ERG_Pos)                     /*!< SCB CTR: ERG Mask */
+
+#define SCB_CTR_DMINLINE_Pos               16U                                            /*!< SCB CTR: DminLine Position */
+#define SCB_CTR_DMINLINE_Msk               (0xFUL << SCB_CTR_DMINLINE_Pos)                /*!< SCB CTR: DminLine Mask */
+
+#define SCB_CTR_IMINLINE_Pos                0U                                            /*!< SCB CTR: ImInLine Position */
+#define SCB_CTR_IMINLINE_Msk               (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/)            /*!< SCB CTR: ImInLine Mask */
+
+/* SCB Cache Size ID Register Definitions */
+#define SCB_CCSIDR_WT_Pos                  31U                                            /*!< SCB CCSIDR: WT Position */
+#define SCB_CCSIDR_WT_Msk                  (1UL << SCB_CCSIDR_WT_Pos)                     /*!< SCB CCSIDR: WT Mask */
+
+#define SCB_CCSIDR_WB_Pos                  30U                                            /*!< SCB CCSIDR: WB Position */
+#define SCB_CCSIDR_WB_Msk                  (1UL << SCB_CCSIDR_WB_Pos)                     /*!< SCB CCSIDR: WB Mask */
+
+#define SCB_CCSIDR_RA_Pos                  29U                                            /*!< SCB CCSIDR: RA Position */
+#define SCB_CCSIDR_RA_Msk                  (1UL << SCB_CCSIDR_RA_Pos)                     /*!< SCB CCSIDR: RA Mask */
+
+#define SCB_CCSIDR_WA_Pos                  28U                                            /*!< SCB CCSIDR: WA Position */
+#define SCB_CCSIDR_WA_Msk                  (1UL << SCB_CCSIDR_WA_Pos)                     /*!< SCB CCSIDR: WA Mask */
+
+#define SCB_CCSIDR_NUMSETS_Pos             13U                                            /*!< SCB CCSIDR: NumSets Position */
+#define SCB_CCSIDR_NUMSETS_Msk             (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos)           /*!< SCB CCSIDR: NumSets Mask */
+
+#define SCB_CCSIDR_ASSOCIATIVITY_Pos        3U                                            /*!< SCB CCSIDR: Associativity Position */
+#define SCB_CCSIDR_ASSOCIATIVITY_Msk       (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos)      /*!< SCB CCSIDR: Associativity Mask */
+
+#define SCB_CCSIDR_LINESIZE_Pos             0U                                            /*!< SCB CCSIDR: LineSize Position */
+#define SCB_CCSIDR_LINESIZE_Msk            (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/)           /*!< SCB CCSIDR: LineSize Mask */
+
+/* SCB Cache Size Selection Register Definitions */
+#define SCB_CSSELR_LEVEL_Pos                1U                                            /*!< SCB CSSELR: Level Position */
+#define SCB_CSSELR_LEVEL_Msk               (7UL << SCB_CSSELR_LEVEL_Pos)                  /*!< SCB CSSELR: Level Mask */
+
+#define SCB_CSSELR_IND_Pos                  0U                                            /*!< SCB CSSELR: InD Position */
+#define SCB_CSSELR_IND_Msk                 (1UL /*<< SCB_CSSELR_IND_Pos*/)                /*!< SCB CSSELR: InD Mask */
+
+/* SCB Software Triggered Interrupt Register Definitions */
+#define SCB_STIR_INTID_Pos                  0U                                            /*!< SCB STIR: INTID Position */
+#define SCB_STIR_INTID_Msk                 (0x1FFUL /*<< SCB_STIR_INTID_Pos*/)            /*!< SCB STIR: INTID Mask */
+
+/* SCB D-Cache line Invalidate by Set-way Register Definitions */
+#define SCB_DCISW_LEVEL_Pos                1U                                             /*!< SCB DCISW: Level Position */
+#define SCB_DCISW_LEVEL_Msk                (7UL << SCB_DCISW_LEVEL_Pos)                   /*!< SCB DCISW: Level Mask */
+
+#define SCB_DCISW_WAY_Pos                  30U                                            /*!< SCB DCISW: Way Position */
+#define SCB_DCISW_WAY_Msk                  (3UL << SCB_DCISW_WAY_Pos)                     /*!< SCB DCISW: Way Mask */
+
+#define SCB_DCISW_SET_Pos                   5U                                            /*!< SCB DCISW: Set Position */
+#define SCB_DCISW_SET_Msk                  (0xFFUL << SCB_DCISW_SET_Pos)                 /*!< SCB DCISW: Set Mask */
+
+/* SCB D-Cache Clean line by Set-way Register Definitions */
+#define SCB_DCCSW_LEVEL_Pos                1U                                             /*!< SCB DCCSW: Level Position */
+#define SCB_DCCSW_LEVEL_Msk                (7UL << SCB_DCCSW_LEVEL_Pos)                   /*!< SCB DCCSW: Level Mask */
+
+#define SCB_DCCSW_WAY_Pos                  30U                                            /*!< SCB DCCSW: Way Position */
+#define SCB_DCCSW_WAY_Msk                  (3UL << SCB_DCCSW_WAY_Pos)                     /*!< SCB DCCSW: Way Mask */
+
+#define SCB_DCCSW_SET_Pos                   5U                                            /*!< SCB DCCSW: Set Position */
+#define SCB_DCCSW_SET_Msk                  (0xFFUL << SCB_DCCSW_SET_Pos)                 /*!< SCB DCCSW: Set Mask */
+
+/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */
+#define SCB_DCCISW_LEVEL_Pos               1U                                             /*!< SCB DCCISW: Level Position */
+#define SCB_DCCISW_LEVEL_Msk               (7UL << SCB_DCCISW_LEVEL_Pos)                  /*!< SCB DCCISW: Level Mask */
+
+#define SCB_DCCISW_WAY_Pos                 30U                                            /*!< SCB DCCISW: Way Position */
+#define SCB_DCCISW_WAY_Msk                 (3UL << SCB_DCCISW_WAY_Pos)                    /*!< SCB DCCISW: Way Mask */
+
+#define SCB_DCCISW_SET_Pos                  5U                                            /*!< SCB DCCISW: Set Position */
+#define SCB_DCCISW_SET_Msk                 (0xFFUL << SCB_DCCISW_SET_Pos)                /*!< SCB DCCISW: Set Mask */
+
+/* ArmChina: Implementation Defined */
+/* Instruction Tightly-Coupled Memory Control Register Definitions */
+#define SCB_ITCMCR_SZ_Pos                   3U                                            /*!< SCB ITCMCR: SZ Position */
+#define SCB_ITCMCR_SZ_Msk                  (0xFUL << SCB_ITCMCR_SZ_Pos)                   /*!< SCB ITCMCR: SZ Mask */
+
+#define SCB_ITCMCR_EN_Pos                   0U                                            /*!< SCB ITCMCR: EN Position */
+#define SCB_ITCMCR_EN_Msk                  (1UL /*<< SCB_ITCMCR_EN_Pos*/)                 /*!< SCB ITCMCR: EN Mask */
+
+/* Data Tightly-Coupled Memory Control Register Definitions */
+#define SCB_DTCMCR_SZ_Pos                   3U                                            /*!< SCB DTCMCR: SZ Position */
+#define SCB_DTCMCR_SZ_Msk                  (0xFUL << SCB_DTCMCR_SZ_Pos)                   /*!< SCB DTCMCR: SZ Mask */
+
+#define SCB_DTCMCR_EN_Pos                   0U                                            /*!< SCB DTCMCR: EN Position */
+#define SCB_DTCMCR_EN_Msk                  (1UL /*<< SCB_DTCMCR_EN_Pos*/)                 /*!< SCB DTCMCR: EN Mask */
+
+/* L1 Cache Control Register Definitions */
+#define SCB_CACR_DCCLEAN_Pos                16U                                            /*!< SCB CACR: DCCLEAN Position */
+#define SCB_CACR_DCCLEAN_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: DCCLEAN Mask */
+
+#define SCB_CACR_ICACTIVE_Pos                13U                                            /*!< SCB CACR: ICACTIVE Position */
+#define SCB_CACR_ICACTIVE_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: ICACTIVE Mask */
+
+#define SCB_CACR_DCACTIVE_Pos                12U                                            /*!< SCB CACR: DCACTIVE Position */
+#define SCB_CACR_DCACTIVE_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: DCACTIVE Mask */
+
+#define SCB_CACR_FORCEWT_Pos                2U                                            /*!< SCB CACR: FORCEWT Position */
+#define SCB_CACR_FORCEWT_Msk               (1UL << SCB_CACR_FORCEWT_Pos)                  /*!< SCB CACR: FORCEWT Mask */
+
+/*@} end of group CMSIS_SCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)
+  \brief    Type definitions for the System Control and ID Register not in the SCB
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Control and ID Register not in the SCB.
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IM  uint32_t ICTR;                   /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register */
+  __IOM uint32_t ACTLR;                  /*!< Offset: 0x008 (R/W)  Auxiliary Control Register */
+  __IOM uint32_t CPPWR;                  /*!< Offset: 0x00C (R/W)  Coprocessor Power Control  Register */
+} SCnSCB_Type;
+
+/* Interrupt Controller Type Register Definitions */
+#define SCnSCB_ICTR_INTLINESNUM_Pos         0U                                         /*!< ICTR: INTLINESNUM Position */
+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/)  /*!< ICTR: INTLINESNUM Mask */
+
+/*@} end of group CMSIS_SCnotSCB */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
+  \brief    Type definitions for the System Timer Registers.
+  @{
+ */
+
+/**
+  \brief  Structure type to access the System Timer (SysTick).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
+  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
+  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
+} SysTick_Type;
+
+/* SysTick Control / Status Register Definitions */
+#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+
+#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+
+#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+
+#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
+
+/* SysTick Reload Register Definitions */
+#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
+
+/* SysTick Current Register Definitions */
+#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
+
+/* SysTick Calibration Register Definitions */
+#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+
+#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+
+#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
+
+/*@} end of group CMSIS_SysTick */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)
+  \brief    Type definitions for the Instrumentation Trace Macrocell (ITM)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).
+ */
+typedef struct
+{
+  __OM  union
+  {
+    __OM  uint8_t    u8;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit */
+    __OM  uint16_t   u16;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit */
+    __OM  uint32_t   u32;                /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit */
+  }  PORT [32U];                         /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers */
+        uint32_t RESERVED0[864U];
+  __IOM uint32_t TER;                    /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register */
+        uint32_t RESERVED1[15U];
+  __IOM uint32_t TPR;                    /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register */
+        uint32_t RESERVED2[15U];
+  __IOM uint32_t TCR;                    /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register */
+        uint32_t RESERVED3[32U];
+        uint32_t RESERVED4[43U];
+  __OM  uint32_t LAR;                    /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register */
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register */
+        uint32_t RESERVED5[1U];
+  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  ITM Device Architecture Register */
+        uint32_t RESERVED6[4U];
+  __IM  uint32_t PID4;                   /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */
+  __IM  uint32_t PID5;                   /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */
+  __IM  uint32_t PID6;                   /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */
+  __IM  uint32_t PID7;                   /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */
+  __IM  uint32_t PID0;                   /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */
+  __IM  uint32_t PID1;                   /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */
+  __IM  uint32_t PID2;                   /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */
+  __IM  uint32_t PID3;                   /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */
+  __IM  uint32_t CID0;                   /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */
+  __IM  uint32_t CID1;                   /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */
+  __IM  uint32_t CID2;                   /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */
+  __IM  uint32_t CID3;                   /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */
+} ITM_Type;
+
+/* ITM Stimulus Port Register Definitions */
+#define ITM_STIM_DISABLED_Pos               1U                                            /*!< ITM STIM: DISABLED Position */
+#define ITM_STIM_DISABLED_Msk              (0x1UL << ITM_STIM_DISABLED_Pos)               /*!< ITM STIM: DISABLED Mask */
+
+#define ITM_STIM_FIFOREADY_Pos              0U                                            /*!< ITM STIM: FIFOREADY Position */
+#define ITM_STIM_FIFOREADY_Msk             (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/)          /*!< ITM STIM: FIFOREADY Mask */
+
+/* ITM Trace Privilege Register Definitions */
+#define ITM_TPR_PRIVMASK_Pos                0U                                            /*!< ITM TPR: PRIVMASK Position */
+#define ITM_TPR_PRIVMASK_Msk               (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/)     /*!< ITM TPR: PRIVMASK Mask */
+
+/* ITM Trace Control Register Definitions */
+#define ITM_TCR_BUSY_Pos                   23U                                            /*!< ITM TCR: BUSY Position */
+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */
+
+#define ITM_TCR_TRACEBUSID_Pos             16U                                            /*!< ITM TCR: ATBID Position */
+#define ITM_TCR_TRACEBUSID_Msk             (0x7FUL << ITM_TCR_TRACEBUSID_Pos)             /*!< ITM TCR: ATBID Mask */
+
+#define ITM_TCR_GTSFREQ_Pos                10U                                            /*!< ITM TCR: Global timestamp frequency Position */
+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */
+
+#define ITM_TCR_TSPRESCALE_Pos              8U                                            /*!< ITM TCR: TSPRESCALE Position */
+#define ITM_TCR_TSPRESCALE_Msk             (3UL << ITM_TCR_TSPRESCALE_Pos)                /*!< ITM TCR: TSPRESCALE Mask */
+
+#define ITM_TCR_STALLENA_Pos                5U                                            /*!< ITM TCR: STALLENA Position */
+#define ITM_TCR_STALLENA_Msk               (1UL << ITM_TCR_STALLENA_Pos)                  /*!< ITM TCR: STALLENA Mask */
+
+#define ITM_TCR_SWOENA_Pos                  4U                                            /*!< ITM TCR: SWOENA Position */
+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */
+
+#define ITM_TCR_DWTENA_Pos                  3U                                            /*!< ITM TCR: DWTENA Position */
+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */
+
+#define ITM_TCR_SYNCENA_Pos                 2U                                            /*!< ITM TCR: SYNCENA Position */
+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */
+
+#define ITM_TCR_TSENA_Pos                   1U                                            /*!< ITM TCR: TSENA Position */
+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */
+
+#define ITM_TCR_ITMENA_Pos                  0U                                            /*!< ITM TCR: ITM Enable bit Position */
+#define ITM_TCR_ITMENA_Msk                 (1UL /*<< ITM_TCR_ITMENA_Pos*/)                /*!< ITM TCR: ITM Enable bit Mask */
+
+/* ITM Lock Status Register Definitions */
+#define ITM_LSR_ByteAcc_Pos                 2U                                            /*!< ITM LSR: ByteAcc Position */
+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */
+
+#define ITM_LSR_Access_Pos                  1U                                            /*!< ITM LSR: Access Position */
+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */
+
+#define ITM_LSR_Present_Pos                 0U                                            /*!< ITM LSR: Present Position */
+#define ITM_LSR_Present_Msk                (1UL /*<< ITM_LSR_Present_Pos*/)               /*!< ITM LSR: Present Mask */
+
+/*@}*/ /* end of group CMSIS_ITM */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)
+  \brief    Type definitions for the Data Watchpoint and Trace (DWT)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Data Watchpoint and Trace Register (DWT).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  Control Register */
+  __IOM uint32_t CYCCNT;                 /*!< Offset: 0x004 (R/W)  Cycle Count Register */
+  __IOM uint32_t CPICNT;                 /*!< Offset: 0x008 (R/W)  CPI Count Register */
+  __IOM uint32_t EXCCNT;                 /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register */
+  __IOM uint32_t SLEEPCNT;               /*!< Offset: 0x010 (R/W)  Sleep Count Register */
+  __IOM uint32_t LSUCNT;                 /*!< Offset: 0x014 (R/W)  LSU Count Register */
+  __IOM uint32_t FOLDCNT;                /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register */
+  __IM  uint32_t PCSR;                   /*!< Offset: 0x01C (R/ )  Program Counter Sample Register */
+  __IOM uint32_t COMP0;                  /*!< Offset: 0x020 (R/W)  Comparator Register 0 */
+        uint32_t RESERVED1[1U];
+  __IOM uint32_t FUNCTION0;              /*!< Offset: 0x028 (R/W)  Function Register 0 */
+        uint32_t RESERVED2[1U];
+  __IOM uint32_t COMP1;                  /*!< Offset: 0x030 (R/W)  Comparator Register 1 */
+        uint32_t RESERVED3[1U];
+  __IOM uint32_t FUNCTION1;              /*!< Offset: 0x038 (R/W)  Function Register 1 */
+        uint32_t RESERVED4[1U];
+  __IOM uint32_t COMP2;                  /*!< Offset: 0x040 (R/W)  Comparator Register 2 */
+        uint32_t RESERVED5[1U];
+  __IOM uint32_t FUNCTION2;              /*!< Offset: 0x048 (R/W)  Function Register 2 */
+        uint32_t RESERVED6[1U];
+  __IOM uint32_t COMP3;                  /*!< Offset: 0x050 (R/W)  Comparator Register 3 */
+        uint32_t RESERVED7[1U];
+  __IOM uint32_t FUNCTION3;              /*!< Offset: 0x058 (R/W)  Function Register 3 */
+        uint32_t RESERVED8[1U];
+  __IOM uint32_t COMP4;                  /*!< Offset: 0x060 (R/W)  Comparator Register 4 */
+        uint32_t RESERVED9[1U];
+  __IOM uint32_t FUNCTION4;              /*!< Offset: 0x068 (R/W)  Function Register 4 */
+        uint32_t RESERVED10[1U];
+  __IOM uint32_t COMP5;                  /*!< Offset: 0x070 (R/W)  Comparator Register 5 */
+        uint32_t RESERVED11[1U];
+  __IOM uint32_t FUNCTION5;              /*!< Offset: 0x078 (R/W)  Function Register 5 */
+        uint32_t RESERVED12[1U];
+  __IOM uint32_t COMP6;                  /*!< Offset: 0x080 (R/W)  Comparator Register 6 */
+        uint32_t RESERVED13[1U];
+  __IOM uint32_t FUNCTION6;              /*!< Offset: 0x088 (R/W)  Function Register 6 */
+        uint32_t RESERVED14[1U];
+  __IOM uint32_t COMP7;                  /*!< Offset: 0x090 (R/W)  Comparator Register 7 */
+        uint32_t RESERVED15[1U];
+  __IOM uint32_t FUNCTION7;              /*!< Offset: 0x098 (R/W)  Function Register 7 */
+        uint32_t RESERVED16[1U];
+  __IOM uint32_t COMP8;                  /*!< Offset: 0x0A0 (R/W)  Comparator Register 8 */
+        uint32_t RESERVED17[1U];
+  __IOM uint32_t FUNCTION8;              /*!< Offset: 0x0A8 (R/W)  Function Register 8 */
+        uint32_t RESERVED18[1U];
+  __IOM uint32_t COMP9;                  /*!< Offset: 0x0B0 (R/W)  Comparator Register 9 */
+        uint32_t RESERVED19[1U];
+  __IOM uint32_t FUNCTION9;              /*!< Offset: 0x0B8 (R/W)  Function Register 9 */
+        uint32_t RESERVED20[1U];
+  __IOM uint32_t COMP10;                 /*!< Offset: 0x0C0 (R/W)  Comparator Register 10 */
+        uint32_t RESERVED21[1U];
+  __IOM uint32_t FUNCTION10;             /*!< Offset: 0x0C8 (R/W)  Function Register 10 */
+        uint32_t RESERVED22[1U];
+  __IOM uint32_t COMP11;                 /*!< Offset: 0x0D0 (R/W)  Comparator Register 11 */
+        uint32_t RESERVED23[1U];
+  __IOM uint32_t FUNCTION11;             /*!< Offset: 0x0D8 (R/W)  Function Register 11 */
+        uint32_t RESERVED24[1U];
+  __IOM uint32_t COMP12;                 /*!< Offset: 0x0E0 (R/W)  Comparator Register 12 */
+        uint32_t RESERVED25[1U];
+  __IOM uint32_t FUNCTION12;             /*!< Offset: 0x0E8 (R/W)  Function Register 12 */
+        uint32_t RESERVED26[1U];
+  __IOM uint32_t COMP13;                 /*!< Offset: 0x0F0 (R/W)  Comparator Register 13 */
+        uint32_t RESERVED27[1U];
+  __IOM uint32_t FUNCTION13;             /*!< Offset: 0x0F8 (R/W)  Function Register 13 */
+        uint32_t RESERVED28[1U];
+  __IOM uint32_t COMP14;                 /*!< Offset: 0x100 (R/W)  Comparator Register 14 */
+        uint32_t RESERVED29[1U];
+  __IOM uint32_t FUNCTION14;             /*!< Offset: 0x108 (R/W)  Function Register 14 */
+        uint32_t RESERVED30[1U];
+  __IOM uint32_t COMP15;                 /*!< Offset: 0x110 (R/W)  Comparator Register 15 */
+        uint32_t RESERVED31[1U];
+  __IOM uint32_t FUNCTION15;             /*!< Offset: 0x118 (R/W)  Function Register 15 */
+        uint32_t RESERVED32[934U];
+  __IM  uint32_t LSR;                    /*!< Offset: 0xFB4 (R  )  Lock Status Register */
+        uint32_t RESERVED33[1U];
+  __IM  uint32_t DEVARCH;                /*!< Offset: 0xFBC (R/ )  Device Architecture Register */
+} DWT_Type;
+
+/* DWT Control Register Definitions */
+#define DWT_CTRL_NUMCOMP_Pos               28U                                         /*!< DWT CTRL: NUMCOMP Position */
+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */
+
+#define DWT_CTRL_NOTRCPKT_Pos              27U                                         /*!< DWT CTRL: NOTRCPKT Position */
+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */
+
+#define DWT_CTRL_NOEXTTRIG_Pos             26U                                         /*!< DWT CTRL: NOEXTTRIG Position */
+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */
+
+#define DWT_CTRL_NOCYCCNT_Pos              25U                                         /*!< DWT CTRL: NOCYCCNT Position */
+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */
+
+#define DWT_CTRL_NOPRFCNT_Pos              24U                                         /*!< DWT CTRL: NOPRFCNT Position */
+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */
+
+#define DWT_CTRL_CYCDISS_Pos               23U                                         /*!< DWT CTRL: CYCDISS Position */
+#define DWT_CTRL_CYCDISS_Msk               (0x1UL << DWT_CTRL_CYCDISS_Pos)             /*!< DWT CTRL: CYCDISS Mask */
+
+#define DWT_CTRL_CYCEVTENA_Pos             22U                                         /*!< DWT CTRL: CYCEVTENA Position */
+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */
+
+#define DWT_CTRL_FOLDEVTENA_Pos            21U                                         /*!< DWT CTRL: FOLDEVTENA Position */
+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */
+
+#define DWT_CTRL_LSUEVTENA_Pos             20U                                         /*!< DWT CTRL: LSUEVTENA Position */
+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */
+
+#define DWT_CTRL_SLEEPEVTENA_Pos           19U                                         /*!< DWT CTRL: SLEEPEVTENA Position */
+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */
+
+#define DWT_CTRL_EXCEVTENA_Pos             18U                                         /*!< DWT CTRL: EXCEVTENA Position */
+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */
+
+#define DWT_CTRL_CPIEVTENA_Pos             17U                                         /*!< DWT CTRL: CPIEVTENA Position */
+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */
+
+#define DWT_CTRL_EXCTRCENA_Pos             16U                                         /*!< DWT CTRL: EXCTRCENA Position */
+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */
+
+#define DWT_CTRL_PCSAMPLENA_Pos            12U                                         /*!< DWT CTRL: PCSAMPLENA Position */
+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */
+
+#define DWT_CTRL_SYNCTAP_Pos               10U                                         /*!< DWT CTRL: SYNCTAP Position */
+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */
+
+#define DWT_CTRL_CYCTAP_Pos                 9U                                         /*!< DWT CTRL: CYCTAP Position */
+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */
+
+#define DWT_CTRL_POSTINIT_Pos               5U                                         /*!< DWT CTRL: POSTINIT Position */
+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */
+
+#define DWT_CTRL_POSTPRESET_Pos             1U                                         /*!< DWT CTRL: POSTPRESET Position */
+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */
+
+#define DWT_CTRL_CYCCNTENA_Pos              0U                                         /*!< DWT CTRL: CYCCNTENA Position */
+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/)       /*!< DWT CTRL: CYCCNTENA Mask */
+
+/* DWT CPI Count Register Definitions */
+#define DWT_CPICNT_CPICNT_Pos               0U                                         /*!< DWT CPICNT: CPICNT Position */
+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/)       /*!< DWT CPICNT: CPICNT Mask */
+
+/* DWT Exception Overhead Count Register Definitions */
+#define DWT_EXCCNT_EXCCNT_Pos               0U                                         /*!< DWT EXCCNT: EXCCNT Position */
+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/)       /*!< DWT EXCCNT: EXCCNT Mask */
+
+/* DWT Sleep Count Register Definitions */
+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0U                                         /*!< DWT SLEEPCNT: SLEEPCNT Position */
+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/)   /*!< DWT SLEEPCNT: SLEEPCNT Mask */
+
+/* DWT LSU Count Register Definitions */
+#define DWT_LSUCNT_LSUCNT_Pos               0U                                         /*!< DWT LSUCNT: LSUCNT Position */
+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/)       /*!< DWT LSUCNT: LSUCNT Mask */
+
+/* DWT Folded-instruction Count Register Definitions */
+#define DWT_FOLDCNT_FOLDCNT_Pos             0U                                         /*!< DWT FOLDCNT: FOLDCNT Position */
+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/)     /*!< DWT FOLDCNT: FOLDCNT Mask */
+
+/* DWT Comparator Function Register Definitions */
+#define DWT_FUNCTION_ID_Pos                27U                                         /*!< DWT FUNCTION: ID Position */
+#define DWT_FUNCTION_ID_Msk                (0x1FUL << DWT_FUNCTION_ID_Pos)             /*!< DWT FUNCTION: ID Mask */
+
+#define DWT_FUNCTION_MATCHED_Pos           24U                                         /*!< DWT FUNCTION: MATCHED Position */
+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */
+
+#define DWT_FUNCTION_DATAVSIZE_Pos         10U                                         /*!< DWT FUNCTION: DATAVSIZE Position */
+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */
+
+#define DWT_FUNCTION_ACTION_Pos             4U                                         /*!< DWT FUNCTION: ACTION Position */
+#define DWT_FUNCTION_ACTION_Msk            (0x1UL << DWT_FUNCTION_ACTION_Pos)          /*!< DWT FUNCTION: ACTION Mask */
+
+#define DWT_FUNCTION_MATCH_Pos              0U                                         /*!< DWT FUNCTION: MATCH Position */
+#define DWT_FUNCTION_MATCH_Msk             (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/)       /*!< DWT FUNCTION: MATCH Mask */
+
+/*@}*/ /* end of group CMSIS_DWT */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_TPI     Trace Port Interface (TPI)
+  \brief    Type definitions for the Trace Port Interface (TPI)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Trace Port Interface Register (TPI).
+ */
+typedef struct
+{
+  __IM  uint32_t SSPSR;                  /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register */
+  __IOM uint32_t CSPSR;                  /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */
+        uint32_t RESERVED0[2U];
+  __IOM uint32_t ACPR;                   /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */
+        uint32_t RESERVED1[55U];
+  __IOM uint32_t SPPR;                   /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */
+        uint32_t RESERVED2[131U];
+  __IM  uint32_t FFSR;                   /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */
+  __IOM uint32_t FFCR;                   /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */
+  __IOM uint32_t PSCR;                   /*!< Offset: 0x308 (R/W)  Periodic Synchronization Control Register */
+        uint32_t RESERVED3[759U];
+  __IM  uint32_t TRIGGER;                /*!< Offset: 0xEE8 (R/ )  TRIGGER Register */
+  __IM  uint32_t ITFTTD0;                /*!< Offset: 0xEEC (R/ )  Integration Test FIFO Test Data 0 Register */
+  __IOM uint32_t ITATBCTR2;              /*!< Offset: 0xEF0 (R/W)  Integration Test ATB Control Register 2 */
+        uint32_t RESERVED4[1U];
+  __IM  uint32_t ITATBCTR0;              /*!< Offset: 0xEF8 (R/ )  Integration Test ATB Control Register 0 */
+  __IM  uint32_t ITFTTD1;                /*!< Offset: 0xEFC (R/ )  Integration Test FIFO Test Data 1 Register */
+  __IOM uint32_t ITCTRL;                 /*!< Offset: 0xF00 (R/W)  Integration Mode Control */
+        uint32_t RESERVED5[39U];
+  __IOM uint32_t CLAIMSET;               /*!< Offset: 0xFA0 (R/W)  Claim tag set */
+  __IOM uint32_t CLAIMCLR;               /*!< Offset: 0xFA4 (R/W)  Claim tag clear */
+        uint32_t RESERVED7[8U];
+  __IM  uint32_t DEVID;                  /*!< Offset: 0xFC8 (R/ )  Device Configuration Register */
+  __IM  uint32_t DEVTYPE;                /*!< Offset: 0xFCC (R/ )  Device Type Identifier Register */
+} TPI_Type;
+
+/* TPI Asynchronous Clock Prescaler Register Definitions */
+#define TPI_ACPR_PRESCALER_Pos              0U                                         /*!< TPI ACPR: PRESCALER Position */
+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/)    /*!< TPI ACPR: PRESCALER Mask */
+
+/* TPI Selected Pin Protocol Register Definitions */
+#define TPI_SPPR_TXMODE_Pos                 0U                                         /*!< TPI SPPR: TXMODE Position */
+#define TPI_SPPR_TXMODE_Msk                (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/)          /*!< TPI SPPR: TXMODE Mask */
+
+/* TPI Formatter and Flush Status Register Definitions */
+#define TPI_FFSR_FtNonStop_Pos              3U                                         /*!< TPI FFSR: FtNonStop Position */
+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */
+
+#define TPI_FFSR_TCPresent_Pos              2U                                         /*!< TPI FFSR: TCPresent Position */
+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */
+
+#define TPI_FFSR_FtStopped_Pos              1U                                         /*!< TPI FFSR: FtStopped Position */
+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */
+
+#define TPI_FFSR_FlInProg_Pos               0U                                         /*!< TPI FFSR: FlInProg Position */
+#define TPI_FFSR_FlInProg_Msk              (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/)        /*!< TPI FFSR: FlInProg Mask */
+
+/* TPI Formatter and Flush Control Register Definitions */
+#define TPI_FFCR_TrigIn_Pos                 8U                                         /*!< TPI FFCR: TrigIn Position */
+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */
+
+#define TPI_FFCR_FOnMan_Pos                 6U                                         /*!< TPI FFCR: FOnMan Position */
+#define TPI_FFCR_FOnMan_Msk                (0x1UL << TPI_FFCR_FOnMan_Pos)              /*!< TPI FFCR: FOnMan Mask */
+
+#define TPI_FFCR_EnFCont_Pos                1U                                         /*!< TPI FFCR: EnFCont Position */
+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */
+
+/* TPI TRIGGER Register Definitions */
+#define TPI_TRIGGER_TRIGGER_Pos             0U                                         /*!< TPI TRIGGER: TRIGGER Position */
+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/)      /*!< TPI TRIGGER: TRIGGER Mask */
+
+/* TPI Integration Test FIFO Test Data 0 Register Definitions */
+#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */
+#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */
+
+#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */
+#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */
+
+#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */
+#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */
+
+#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */
+#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */
+
+#define TPI_ITFTTD0_ATB_IF1_data2_Pos      16U                                         /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */
+#define TPI_ITFTTD0_ATB_IF1_data2_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */
+
+#define TPI_ITFTTD0_ATB_IF1_data1_Pos       8U                                         /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */
+#define TPI_ITFTTD0_ATB_IF1_data1_Msk      (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos)   /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */
+
+#define TPI_ITFTTD0_ATB_IF1_data0_Pos       0U                                          /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */
+#define TPI_ITFTTD0_ATB_IF1_data0_Msk      (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */
+
+/* TPI Integration Test ATB Control Register 2 Register Definitions */
+#define TPI_ITATBCTR2_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID2S Position */
+#define TPI_ITATBCTR2_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos)      /*!< TPI ITATBCTR2: AFVALID2SS Mask */
+
+#define TPI_ITATBCTR2_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR2: AFVALID1S Position */
+#define TPI_ITATBCTR2_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos)      /*!< TPI ITATBCTR2: AFVALID1SS Mask */
+
+#define TPI_ITATBCTR2_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY2S Position */
+#define TPI_ITATBCTR2_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY2S Mask */
+
+#define TPI_ITATBCTR2_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR2: ATREADY1S Position */
+#define TPI_ITATBCTR2_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR2: ATREADY1S Mask */
+
+/* TPI Integration Test FIFO Test Data 1 Register Definitions */
+#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos    29U                                         /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */
+#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */
+
+#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos  27U                                         /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */
+#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */
+
+#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos    26U                                         /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */
+#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk    (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos)  /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */
+
+#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos  24U                                         /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */
+#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk  (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */
+
+#define TPI_ITFTTD1_ATB_IF2_data2_Pos      16U                                         /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */
+#define TPI_ITFTTD1_ATB_IF2_data2_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */
+
+#define TPI_ITFTTD1_ATB_IF2_data1_Pos       8U                                         /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */
+#define TPI_ITFTTD1_ATB_IF2_data1_Msk      (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos)   /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */
+
+#define TPI_ITFTTD1_ATB_IF2_data0_Pos       0U                                          /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */
+#define TPI_ITFTTD1_ATB_IF2_data0_Msk      (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */
+
+/* TPI Integration Test ATB Control Register 0 Definitions */
+#define TPI_ITATBCTR0_AFVALID2S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID2S Position */
+#define TPI_ITATBCTR0_AFVALID2S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos)      /*!< TPI ITATBCTR0: AFVALID2SS Mask */
+
+#define TPI_ITATBCTR0_AFVALID1S_Pos         1U                                         /*!< TPI ITATBCTR0: AFVALID1S Position */
+#define TPI_ITATBCTR0_AFVALID1S_Msk        (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos)      /*!< TPI ITATBCTR0: AFVALID1SS Mask */
+
+#define TPI_ITATBCTR0_ATREADY2S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY2S Position */
+#define TPI_ITATBCTR0_ATREADY2S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY2S Mask */
+
+#define TPI_ITATBCTR0_ATREADY1S_Pos         0U                                         /*!< TPI ITATBCTR0: ATREADY1S Position */
+#define TPI_ITATBCTR0_ATREADY1S_Msk        (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/)  /*!< TPI ITATBCTR0: ATREADY1S Mask */
+
+/* TPI Integration Mode Control Register Definitions */
+#define TPI_ITCTRL_Mode_Pos                 0U                                         /*!< TPI ITCTRL: Mode Position */
+#define TPI_ITCTRL_Mode_Msk                (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/)          /*!< TPI ITCTRL: Mode Mask */
+
+/* TPI DEVID Register Definitions */
+#define TPI_DEVID_NRZVALID_Pos             11U                                         /*!< TPI DEVID: NRZVALID Position */
+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */
+
+#define TPI_DEVID_MANCVALID_Pos            10U                                         /*!< TPI DEVID: MANCVALID Position */
+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */
+
+#define TPI_DEVID_PTINVALID_Pos             9U                                         /*!< TPI DEVID: PTINVALID Position */
+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */
+
+#define TPI_DEVID_FIFOSZ_Pos                6U                                         /*!< TPI DEVID: FIFOSZ Position */
+#define TPI_DEVID_FIFOSZ_Msk               (0x7UL << TPI_DEVID_FIFOSZ_Pos)             /*!< TPI DEVID: FIFOSZ Mask */
+
+#define TPI_DEVID_NrTraceInput_Pos          0U                                         /*!< TPI DEVID: NrTraceInput Position */
+#define TPI_DEVID_NrTraceInput_Msk         (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/)  /*!< TPI DEVID: NrTraceInput Mask */
+
+/* TPI DEVTYPE Register Definitions */
+#define TPI_DEVTYPE_SubType_Pos             4U                                         /*!< TPI DEVTYPE: SubType Position */
+#define TPI_DEVTYPE_SubType_Msk            (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/)      /*!< TPI DEVTYPE: SubType Mask */
+
+#define TPI_DEVTYPE_MajorType_Pos           0U                                         /*!< TPI DEVTYPE: MajorType Position */
+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */
+
+/*@}*/ /* end of group CMSIS_TPI */
+
+
+#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_MPU     Memory Protection Unit (MPU)
+  \brief    Type definitions for the Memory Protection Unit (MPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Memory Protection Unit (MPU).
+ */
+typedef struct
+{
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x000 (R/ )  MPU Type Register */
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x004 (R/W)  MPU Control Register */
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  MPU Region Number Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register */
+  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  MPU Region Limit Address Register */
+  __IOM uint32_t RBAR_A1;                /*!< Offset: 0x014 (R/W)  MPU Region Base Address Register Alias 1 */
+  __IOM uint32_t RLAR_A1;                /*!< Offset: 0x018 (R/W)  MPU Region Limit Address Register Alias 1 */
+  __IOM uint32_t RBAR_A2;                /*!< Offset: 0x01C (R/W)  MPU Region Base Address Register Alias 2 */
+  __IOM uint32_t RLAR_A2;                /*!< Offset: 0x020 (R/W)  MPU Region Limit Address Register Alias 2 */
+  __IOM uint32_t RBAR_A3;                /*!< Offset: 0x024 (R/W)  MPU Region Base Address Register Alias 3 */
+  __IOM uint32_t RLAR_A3;                /*!< Offset: 0x028 (R/W)  MPU Region Limit Address Register Alias 3 */
+        uint32_t RESERVED0[1];
+  union {
+  __IOM uint32_t MAIR[2];
+  struct {
+  __IOM uint32_t MAIR0;                  /*!< Offset: 0x030 (R/W)  MPU Memory Attribute Indirection Register 0 */
+  __IOM uint32_t MAIR1;                  /*!< Offset: 0x034 (R/W)  MPU Memory Attribute Indirection Register 1 */
+  };
+  };
+} MPU_Type;
+
+#define MPU_TYPE_RALIASES                  4U
+
+/* MPU Type Register Definitions */
+#define MPU_TYPE_IREGION_Pos               16U                                            /*!< MPU TYPE: IREGION Position */
+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */
+
+#define MPU_TYPE_DREGION_Pos                8U                                            /*!< MPU TYPE: DREGION Position */
+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */
+
+#define MPU_TYPE_SEPARATE_Pos               0U                                            /*!< MPU TYPE: SEPARATE Position */
+#define MPU_TYPE_SEPARATE_Msk              (1UL /*<< MPU_TYPE_SEPARATE_Pos*/)             /*!< MPU TYPE: SEPARATE Mask */
+
+/* MPU Control Register Definitions */
+#define MPU_CTRL_PRIVDEFENA_Pos             2U                                            /*!< MPU CTRL: PRIVDEFENA Position */
+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */
+
+#define MPU_CTRL_HFNMIENA_Pos               1U                                            /*!< MPU CTRL: HFNMIENA Position */
+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */
+
+#define MPU_CTRL_ENABLE_Pos                 0U                                            /*!< MPU CTRL: ENABLE Position */
+#define MPU_CTRL_ENABLE_Msk                (1UL /*<< MPU_CTRL_ENABLE_Pos*/)               /*!< MPU CTRL: ENABLE Mask */
+
+/* MPU Region Number Register Definitions */
+#define MPU_RNR_REGION_Pos                  0U                                            /*!< MPU RNR: REGION Position */
+#define MPU_RNR_REGION_Msk                 (0xFFUL /*<< MPU_RNR_REGION_Pos*/)             /*!< MPU RNR: REGION Mask */
+
+/* MPU Region Base Address Register Definitions */
+#define MPU_RBAR_BASE_Pos                   5U                                            /*!< MPU RBAR: BASE Position */
+#define MPU_RBAR_BASE_Msk                  (0x7FFFFFFUL << MPU_RBAR_BASE_Pos)             /*!< MPU RBAR: BASE Mask */
+
+#define MPU_RBAR_SH_Pos                     3U                                            /*!< MPU RBAR: SH Position */
+#define MPU_RBAR_SH_Msk                    (0x3UL << MPU_RBAR_SH_Pos)                     /*!< MPU RBAR: SH Mask */
+
+#define MPU_RBAR_AP_Pos                     1U                                            /*!< MPU RBAR: AP Position */
+#define MPU_RBAR_AP_Msk                    (0x3UL << MPU_RBAR_AP_Pos)                     /*!< MPU RBAR: AP Mask */
+
+#define MPU_RBAR_XN_Pos                     0U                                            /*!< MPU RBAR: XN Position */
+#define MPU_RBAR_XN_Msk                    (01UL /*<< MPU_RBAR_XN_Pos*/)                  /*!< MPU RBAR: XN Mask */
+
+/* MPU Region Limit Address Register Definitions */
+#define MPU_RLAR_LIMIT_Pos                  5U                                            /*!< MPU RLAR: LIMIT Position */
+#define MPU_RLAR_LIMIT_Msk                 (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos)            /*!< MPU RLAR: LIMIT Mask */
+
+#define MPU_RLAR_AttrIndx_Pos               1U                                            /*!< MPU RLAR: AttrIndx Position */
+#define MPU_RLAR_AttrIndx_Msk              (0x7UL << MPU_RLAR_AttrIndx_Pos)               /*!< MPU RLAR: AttrIndx Mask */
+
+#define MPU_RLAR_EN_Pos                     0U                                            /*!< MPU RLAR: Region enable bit Position */
+#define MPU_RLAR_EN_Msk                    (1UL /*<< MPU_RLAR_EN_Pos*/)                   /*!< MPU RLAR: Region enable bit Disable Mask */
+
+/* MPU Memory Attribute Indirection Register 0 Definitions */
+#define MPU_MAIR0_Attr3_Pos                24U                                            /*!< MPU MAIR0: Attr3 Position */
+#define MPU_MAIR0_Attr3_Msk                (0xFFUL << MPU_MAIR0_Attr3_Pos)                /*!< MPU MAIR0: Attr3 Mask */
+
+#define MPU_MAIR0_Attr2_Pos                16U                                            /*!< MPU MAIR0: Attr2 Position */
+#define MPU_MAIR0_Attr2_Msk                (0xFFUL << MPU_MAIR0_Attr2_Pos)                /*!< MPU MAIR0: Attr2 Mask */
+
+#define MPU_MAIR0_Attr1_Pos                 8U                                            /*!< MPU MAIR0: Attr1 Position */
+#define MPU_MAIR0_Attr1_Msk                (0xFFUL << MPU_MAIR0_Attr1_Pos)                /*!< MPU MAIR0: Attr1 Mask */
+
+#define MPU_MAIR0_Attr0_Pos                 0U                                            /*!< MPU MAIR0: Attr0 Position */
+#define MPU_MAIR0_Attr0_Msk                (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/)            /*!< MPU MAIR0: Attr0 Mask */
+
+/* MPU Memory Attribute Indirection Register 1 Definitions */
+#define MPU_MAIR1_Attr7_Pos                24U                                            /*!< MPU MAIR1: Attr7 Position */
+#define MPU_MAIR1_Attr7_Msk                (0xFFUL << MPU_MAIR1_Attr7_Pos)                /*!< MPU MAIR1: Attr7 Mask */
+
+#define MPU_MAIR1_Attr6_Pos                16U                                            /*!< MPU MAIR1: Attr6 Position */
+#define MPU_MAIR1_Attr6_Msk                (0xFFUL << MPU_MAIR1_Attr6_Pos)                /*!< MPU MAIR1: Attr6 Mask */
+
+#define MPU_MAIR1_Attr5_Pos                 8U                                            /*!< MPU MAIR1: Attr5 Position */
+#define MPU_MAIR1_Attr5_Msk                (0xFFUL << MPU_MAIR1_Attr5_Pos)                /*!< MPU MAIR1: Attr5 Mask */
+
+#define MPU_MAIR1_Attr4_Pos                 0U                                            /*!< MPU MAIR1: Attr4 Position */
+#define MPU_MAIR1_Attr4_Msk                (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/)            /*!< MPU MAIR1: Attr4 Mask */
+
+/*@} end of group CMSIS_MPU */
+#endif
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_SAU     Security Attribution Unit (SAU)
+  \brief    Type definitions for the Security Attribution Unit (SAU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Security Attribution Unit (SAU).
+ */
+typedef struct
+{
+  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SAU Control Register */
+  __IM  uint32_t TYPE;                   /*!< Offset: 0x004 (R/ )  SAU Type Register */
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+  __IOM uint32_t RNR;                    /*!< Offset: 0x008 (R/W)  SAU Region Number Register */
+  __IOM uint32_t RBAR;                   /*!< Offset: 0x00C (R/W)  SAU Region Base Address Register */
+  __IOM uint32_t RLAR;                   /*!< Offset: 0x010 (R/W)  SAU Region Limit Address Register */
+#else
+        uint32_t RESERVED0[3];
+#endif
+  __IOM uint32_t SFSR;                   /*!< Offset: 0x014 (R/W)  Secure Fault Status Register */
+  __IOM uint32_t SFAR;                   /*!< Offset: 0x018 (R/W)  Secure Fault Address Register */
+} SAU_Type;
+
+/* SAU Control Register Definitions */
+#define SAU_CTRL_ALLNS_Pos                  1U                                            /*!< SAU CTRL: ALLNS Position */
+#define SAU_CTRL_ALLNS_Msk                 (1UL << SAU_CTRL_ALLNS_Pos)                    /*!< SAU CTRL: ALLNS Mask */
+
+#define SAU_CTRL_ENABLE_Pos                 0U                                            /*!< SAU CTRL: ENABLE Position */
+#define SAU_CTRL_ENABLE_Msk                (1UL /*<< SAU_CTRL_ENABLE_Pos*/)               /*!< SAU CTRL: ENABLE Mask */
+
+/* SAU Type Register Definitions */
+#define SAU_TYPE_SREGION_Pos                0U                                            /*!< SAU TYPE: SREGION Position */
+#define SAU_TYPE_SREGION_Msk               (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/)           /*!< SAU TYPE: SREGION Mask */
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+/* SAU Region Number Register Definitions */
+#define SAU_RNR_REGION_Pos                  0U                                            /*!< SAU RNR: REGION Position */
+#define SAU_RNR_REGION_Msk                 (0xFFUL /*<< SAU_RNR_REGION_Pos*/)             /*!< SAU RNR: REGION Mask */
+
+/* SAU Region Base Address Register Definitions */
+#define SAU_RBAR_BADDR_Pos                  5U                                            /*!< SAU RBAR: BADDR Position */
+#define SAU_RBAR_BADDR_Msk                 (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos)            /*!< SAU RBAR: BADDR Mask */
+
+/* SAU Region Limit Address Register Definitions */
+#define SAU_RLAR_LADDR_Pos                  5U                                            /*!< SAU RLAR: LADDR Position */
+#define SAU_RLAR_LADDR_Msk                 (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos)            /*!< SAU RLAR: LADDR Mask */
+
+#define SAU_RLAR_NSC_Pos                    1U                                            /*!< SAU RLAR: NSC Position */
+#define SAU_RLAR_NSC_Msk                   (1UL << SAU_RLAR_NSC_Pos)                      /*!< SAU RLAR: NSC Mask */
+
+#define SAU_RLAR_ENABLE_Pos                 0U                                            /*!< SAU RLAR: ENABLE Position */
+#define SAU_RLAR_ENABLE_Msk                (1UL /*<< SAU_RLAR_ENABLE_Pos*/)               /*!< SAU RLAR: ENABLE Mask */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+/* Secure Fault Status Register Definitions */
+#define SAU_SFSR_LSERR_Pos                  7U                                            /*!< SAU SFSR: LSERR Position */
+#define SAU_SFSR_LSERR_Msk                 (1UL << SAU_SFSR_LSERR_Pos)                    /*!< SAU SFSR: LSERR Mask */
+
+#define SAU_SFSR_SFARVALID_Pos              6U                                            /*!< SAU SFSR: SFARVALID Position */
+#define SAU_SFSR_SFARVALID_Msk             (1UL << SAU_SFSR_SFARVALID_Pos)                /*!< SAU SFSR: SFARVALID Mask */
+
+#define SAU_SFSR_LSPERR_Pos                 5U                                            /*!< SAU SFSR: LSPERR Position */
+#define SAU_SFSR_LSPERR_Msk                (1UL << SAU_SFSR_LSPERR_Pos)                   /*!< SAU SFSR: LSPERR Mask */
+
+#define SAU_SFSR_INVTRAN_Pos                4U                                            /*!< SAU SFSR: INVTRAN Position */
+#define SAU_SFSR_INVTRAN_Msk               (1UL << SAU_SFSR_INVTRAN_Pos)                  /*!< SAU SFSR: INVTRAN Mask */
+
+#define SAU_SFSR_AUVIOL_Pos                 3U                                            /*!< SAU SFSR: AUVIOL Position */
+#define SAU_SFSR_AUVIOL_Msk                (1UL << SAU_SFSR_AUVIOL_Pos)                   /*!< SAU SFSR: AUVIOL Mask */
+
+#define SAU_SFSR_INVER_Pos                  2U                                            /*!< SAU SFSR: INVER Position */
+#define SAU_SFSR_INVER_Msk                 (1UL << SAU_SFSR_INVER_Pos)                    /*!< SAU SFSR: INVER Mask */
+
+#define SAU_SFSR_INVIS_Pos                  1U                                            /*!< SAU SFSR: INVIS Position */
+#define SAU_SFSR_INVIS_Msk                 (1UL << SAU_SFSR_INVIS_Pos)                    /*!< SAU SFSR: INVIS Mask */
+
+#define SAU_SFSR_INVEP_Pos                  0U                                            /*!< SAU SFSR: INVEP Position */
+#define SAU_SFSR_INVEP_Msk                 (1UL /*<< SAU_SFSR_INVEP_Pos*/)                /*!< SAU SFSR: INVEP Mask */
+
+/*@} end of group CMSIS_SAU */
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_FPU     Floating Point Unit (FPU)
+  \brief    Type definitions for the Floating Point Unit (FPU)
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Floating Point Unit (FPU).
+ */
+typedef struct
+{
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t FPCCR;                  /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register */
+  __IOM uint32_t FPCAR;                  /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register */
+  __IOM uint32_t FPDSCR;                 /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register */
+  __IM  uint32_t MVFR0;                  /*!< Offset: 0x010 (R/ )  Media and VFP Feature Register 0 */
+  __IM  uint32_t MVFR1;                  /*!< Offset: 0x014 (R/ )  Media and VFP Feature Register 1 */
+  __IM  uint32_t MVFR2;                  /*!< Offset: 0x018 (R/ )  Media and VFP Feature Register 2 */
+} FPU_Type;
+
+/* Floating-Point Context Control Register Definitions */
+#define FPU_FPCCR_ASPEN_Pos                31U                                            /*!< FPCCR: ASPEN bit Position */
+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */
+
+#define FPU_FPCCR_LSPEN_Pos                30U                                            /*!< FPCCR: LSPEN Position */
+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */
+
+#define FPU_FPCCR_LSPENS_Pos               29U                                            /*!< FPCCR: LSPENS Position */
+#define FPU_FPCCR_LSPENS_Msk               (1UL << FPU_FPCCR_LSPENS_Pos)                  /*!< FPCCR: LSPENS bit Mask */
+
+#define FPU_FPCCR_CLRONRET_Pos             28U                                            /*!< FPCCR: CLRONRET Position */
+#define FPU_FPCCR_CLRONRET_Msk             (1UL << FPU_FPCCR_CLRONRET_Pos)                /*!< FPCCR: CLRONRET bit Mask */
+
+#define FPU_FPCCR_CLRONRETS_Pos            27U                                            /*!< FPCCR: CLRONRETS Position */
+#define FPU_FPCCR_CLRONRETS_Msk            (1UL << FPU_FPCCR_CLRONRETS_Pos)               /*!< FPCCR: CLRONRETS bit Mask */
+
+#define FPU_FPCCR_TS_Pos                   26U                                            /*!< FPCCR: TS Position */
+#define FPU_FPCCR_TS_Msk                   (1UL << FPU_FPCCR_TS_Pos)                      /*!< FPCCR: TS bit Mask */
+
+#define FPU_FPCCR_UFRDY_Pos                10U                                            /*!< FPCCR: UFRDY Position */
+#define FPU_FPCCR_UFRDY_Msk                (1UL << FPU_FPCCR_UFRDY_Pos)                   /*!< FPCCR: UFRDY bit Mask */
+
+#define FPU_FPCCR_SPLIMVIOL_Pos             9U                                            /*!< FPCCR: SPLIMVIOL Position */
+#define FPU_FPCCR_SPLIMVIOL_Msk            (1UL << FPU_FPCCR_SPLIMVIOL_Pos)               /*!< FPCCR: SPLIMVIOL bit Mask */
+
+#define FPU_FPCCR_MONRDY_Pos                8U                                            /*!< FPCCR: MONRDY Position */
+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */
+
+#define FPU_FPCCR_SFRDY_Pos                 7U                                            /*!< FPCCR: SFRDY Position */
+#define FPU_FPCCR_SFRDY_Msk                (1UL << FPU_FPCCR_SFRDY_Pos)                   /*!< FPCCR: SFRDY bit Mask */
+
+#define FPU_FPCCR_BFRDY_Pos                 6U                                            /*!< FPCCR: BFRDY Position */
+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */
+
+#define FPU_FPCCR_MMRDY_Pos                 5U                                            /*!< FPCCR: MMRDY Position */
+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */
+
+#define FPU_FPCCR_HFRDY_Pos                 4U                                            /*!< FPCCR: HFRDY Position */
+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */
+
+#define FPU_FPCCR_THREAD_Pos                3U                                            /*!< FPCCR: processor mode bit Position */
+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */
+
+#define FPU_FPCCR_S_Pos                     2U                                            /*!< FPCCR: Security status of the FP context bit Position */
+#define FPU_FPCCR_S_Msk                    (1UL << FPU_FPCCR_S_Pos)                       /*!< FPCCR: Security status of the FP context bit Mask */
+
+#define FPU_FPCCR_USER_Pos                  1U                                            /*!< FPCCR: privilege level bit Position */
+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */
+
+#define FPU_FPCCR_LSPACT_Pos                0U                                            /*!< FPCCR: Lazy state preservation active bit Position */
+#define FPU_FPCCR_LSPACT_Msk               (1UL /*<< FPU_FPCCR_LSPACT_Pos*/)              /*!< FPCCR: Lazy state preservation active bit Mask */
+
+/* Floating-Point Context Address Register Definitions */
+#define FPU_FPCAR_ADDRESS_Pos               3U                                            /*!< FPCAR: ADDRESS bit Position */
+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */
+
+/* Floating-Point Default Status Control Register Definitions */
+#define FPU_FPDSCR_AHP_Pos                 26U                                            /*!< FPDSCR: AHP bit Position */
+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */
+
+#define FPU_FPDSCR_DN_Pos                  25U                                            /*!< FPDSCR: DN bit Position */
+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */
+
+#define FPU_FPDSCR_FZ_Pos                  24U                                            /*!< FPDSCR: FZ bit Position */
+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */
+
+#define FPU_FPDSCR_RMode_Pos               22U                                            /*!< FPDSCR: RMode bit Position */
+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */
+
+/* Media and VFP Feature Register 0 Definitions */
+#define FPU_MVFR0_FP_rounding_modes_Pos    28U                                            /*!< MVFR0: FP rounding modes bits Position */
+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */
+
+#define FPU_MVFR0_Short_vectors_Pos        24U                                            /*!< MVFR0: Short vectors bits Position */
+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */
+
+#define FPU_MVFR0_Square_root_Pos          20U                                            /*!< MVFR0: Square root bits Position */
+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */
+
+#define FPU_MVFR0_Divide_Pos               16U                                            /*!< MVFR0: Divide bits Position */
+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */
+
+#define FPU_MVFR0_FP_excep_trapping_Pos    12U                                            /*!< MVFR0: FP exception trapping bits Position */
+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */
+
+#define FPU_MVFR0_Double_precision_Pos      8U                                            /*!< MVFR0: Double-precision bits Position */
+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */
+
+#define FPU_MVFR0_Single_precision_Pos      4U                                            /*!< MVFR0: Single-precision bits Position */
+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */
+
+#define FPU_MVFR0_A_SIMD_registers_Pos      0U                                            /*!< MVFR0: A_SIMD registers bits Position */
+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/)  /*!< MVFR0: A_SIMD registers bits Mask */
+
+/* Media and VFP Feature Register 1 Definitions */
+#define FPU_MVFR1_FP_fused_MAC_Pos         28U                                            /*!< MVFR1: FP fused MAC bits Position */
+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */
+
+#define FPU_MVFR1_FP_HPFP_Pos              24U                                            /*!< MVFR1: FP HPFP bits Position */
+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */
+
+#define FPU_MVFR1_D_NaN_mode_Pos            4U                                            /*!< MVFR1: D_NaN mode bits Position */
+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */
+
+#define FPU_MVFR1_FtZ_mode_Pos              0U                                            /*!< MVFR1: FtZ mode bits Position */
+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/)          /*!< MVFR1: FtZ mode bits Mask */
+
+/* Media and VFP Feature Register 2 Definitions */
+#define FPU_MVFR2_FPMisc_Pos                4U                                            /*!< MVFR2: FPMisc bits Position */
+#define FPU_MVFR2_FPMisc_Msk               (0xFUL << FPU_MVFR2_FPMisc_Pos)                /*!< MVFR2: FPMisc bits Mask */
+
+/*@} end of group CMSIS_FPU */
+
+
+
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup CMSIS_DCB       Debug Control Block
+  \brief    Type definitions for the Debug Control Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Debug Control Block Registers (DCB).
+ */
+typedef struct
+{
+  __IOM uint32_t DHCSR;                  /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register */
+  __OM  uint32_t DCRSR;                  /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register */
+  __IOM uint32_t DCRDR;                  /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register */
+  __IOM uint32_t DEMCR;                  /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */
+        uint32_t RESERVED0[1U];
+  __IOM uint32_t DAUTHCTRL;              /*!< Offset: 0x014 (R/W)  Debug Authentication Control Register */
+  __IOM uint32_t DSCSR;                  /*!< Offset: 0x018 (R/W)  Debug Security Control and Status Register */
+} DCB_Type;
+
+/* DHCSR, Debug Halting Control and Status Register Definitions */
+#define DCB_DHCSR_DBGKEY_Pos               16U                                            /*!< DCB DHCSR: Debug key Position */
+#define DCB_DHCSR_DBGKEY_Msk               (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos)             /*!< DCB DHCSR: Debug key Mask */
+
+#define DCB_DHCSR_S_RESTART_ST_Pos         26U                                            /*!< DCB DHCSR: Restart sticky status Position */
+#define DCB_DHCSR_S_RESTART_ST_Msk         (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos)          /*!< DCB DHCSR: Restart sticky status Mask */
+
+#define DCB_DHCSR_S_RESET_ST_Pos           25U                                            /*!< DCB DHCSR: Reset sticky status Position */
+#define DCB_DHCSR_S_RESET_ST_Msk           (0x1UL << DCB_DHCSR_S_RESET_ST_Pos)            /*!< DCB DHCSR: Reset sticky status Mask */
+
+#define DCB_DHCSR_S_RETIRE_ST_Pos          24U                                            /*!< DCB DHCSR: Retire sticky status Position */
+#define DCB_DHCSR_S_RETIRE_ST_Msk          (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos)           /*!< DCB DHCSR: Retire sticky status Mask */
+
+#define DCB_DHCSR_S_SDE_Pos                20U                                            /*!< DCB DHCSR: Secure debug enabled Position */
+#define DCB_DHCSR_S_SDE_Msk                (0x1UL << DCB_DHCSR_S_SDE_Pos)                 /*!< DCB DHCSR: Secure debug enabled Mask */
+
+#define DCB_DHCSR_S_LOCKUP_Pos             19U                                            /*!< DCB DHCSR: Lockup status Position */
+#define DCB_DHCSR_S_LOCKUP_Msk             (0x1UL << DCB_DHCSR_S_LOCKUP_Pos)              /*!< DCB DHCSR: Lockup status Mask */
+
+#define DCB_DHCSR_S_SLEEP_Pos              18U                                            /*!< DCB DHCSR: Sleeping status Position */
+#define DCB_DHCSR_S_SLEEP_Msk              (0x1UL << DCB_DHCSR_S_SLEEP_Pos)               /*!< DCB DHCSR: Sleeping status Mask */
+
+#define DCB_DHCSR_S_HALT_Pos               17U                                            /*!< DCB DHCSR: Halted status Position */
+#define DCB_DHCSR_S_HALT_Msk               (0x1UL << DCB_DHCSR_S_HALT_Pos)                /*!< DCB DHCSR: Halted status Mask */
+
+#define DCB_DHCSR_S_REGRDY_Pos             16U                                            /*!< DCB DHCSR: Register ready status Position */
+#define DCB_DHCSR_S_REGRDY_Msk             (0x1UL << DCB_DHCSR_S_REGRDY_Pos)              /*!< DCB DHCSR: Register ready status Mask */
+
+#define DCB_DHCSR_C_SNAPSTALL_Pos           5U                                            /*!< DCB DHCSR: Snap stall control Position */
+#define DCB_DHCSR_C_SNAPSTALL_Msk          (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos)           /*!< DCB DHCSR: Snap stall control Mask */
+
+#define DCB_DHCSR_C_MASKINTS_Pos            3U                                            /*!< DCB DHCSR: Mask interrupts control Position */
+#define DCB_DHCSR_C_MASKINTS_Msk           (0x1UL << DCB_DHCSR_C_MASKINTS_Pos)            /*!< DCB DHCSR: Mask interrupts control Mask */
+
+#define DCB_DHCSR_C_STEP_Pos                2U                                            /*!< DCB DHCSR: Step control Position */
+#define DCB_DHCSR_C_STEP_Msk               (0x1UL << DCB_DHCSR_C_STEP_Pos)                /*!< DCB DHCSR: Step control Mask */
+
+#define DCB_DHCSR_C_HALT_Pos                1U                                            /*!< DCB DHCSR: Halt control Position */
+#define DCB_DHCSR_C_HALT_Msk               (0x1UL << DCB_DHCSR_C_HALT_Pos)                /*!< DCB DHCSR: Halt control Mask */
+
+#define DCB_DHCSR_C_DEBUGEN_Pos             0U                                            /*!< DCB DHCSR: Debug enable control Position */
+#define DCB_DHCSR_C_DEBUGEN_Msk            (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/)         /*!< DCB DHCSR: Debug enable control Mask */
+
+/* DCRSR, Debug Core Register Select Register Definitions */
+#define DCB_DCRSR_REGWnR_Pos               16U                                            /*!< DCB DCRSR: Register write/not-read Position */
+#define DCB_DCRSR_REGWnR_Msk               (0x1UL << DCB_DCRSR_REGWnR_Pos)                /*!< DCB DCRSR: Register write/not-read Mask */
+
+#define DCB_DCRSR_REGSEL_Pos                0U                                            /*!< DCB DCRSR: Register selector Position */
+#define DCB_DCRSR_REGSEL_Msk               (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/)           /*!< DCB DCRSR: Register selector Mask */
+
+/* DCRDR, Debug Core Register Data Register Definitions */
+#define DCB_DCRDR_DBGTMP_Pos                0U                                            /*!< DCB DCRDR: Data temporary buffer Position */
+#define DCB_DCRDR_DBGTMP_Msk               (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/)     /*!< DCB DCRDR: Data temporary buffer Mask */
+
+/* DEMCR, Debug Exception and Monitor Control Register Definitions */
+#define DCB_DEMCR_TRCENA_Pos               24U                                            /*!< DCB DEMCR: Trace enable Position */
+#define DCB_DEMCR_TRCENA_Msk               (0x1UL << DCB_DEMCR_TRCENA_Pos)                /*!< DCB DEMCR: Trace enable Mask */
+
+#define DCB_DEMCR_MONPRKEY_Pos             23U                                            /*!< DCB DEMCR: Monitor pend req key Position */
+#define DCB_DEMCR_MONPRKEY_Msk             (0x1UL << DCB_DEMCR_MONPRKEY_Pos)              /*!< DCB DEMCR: Monitor pend req key Mask */
+
+#define DCB_DEMCR_UMON_EN_Pos              21U                                            /*!< DCB DEMCR: Unprivileged monitor enable Position */
+#define DCB_DEMCR_UMON_EN_Msk              (0x1UL << DCB_DEMCR_UMON_EN_Pos)               /*!< DCB DEMCR: Unprivileged monitor enable Mask */
+
+#define DCB_DEMCR_SDME_Pos                 20U                                            /*!< DCB DEMCR: Secure DebugMonitor enable Position */
+#define DCB_DEMCR_SDME_Msk                 (0x1UL << DCB_DEMCR_SDME_Pos)                  /*!< DCB DEMCR: Secure DebugMonitor enable Mask */
+
+#define DCB_DEMCR_MON_REQ_Pos              19U                                            /*!< DCB DEMCR: Monitor request Position */
+#define DCB_DEMCR_MON_REQ_Msk              (0x1UL << DCB_DEMCR_MON_REQ_Pos)               /*!< DCB DEMCR: Monitor request Mask */
+
+#define DCB_DEMCR_MON_STEP_Pos             18U                                            /*!< DCB DEMCR: Monitor step Position */
+#define DCB_DEMCR_MON_STEP_Msk             (0x1UL << DCB_DEMCR_MON_STEP_Pos)              /*!< DCB DEMCR: Monitor step Mask */
+
+#define DCB_DEMCR_MON_PEND_Pos             17U                                            /*!< DCB DEMCR: Monitor pend Position */
+#define DCB_DEMCR_MON_PEND_Msk             (0x1UL << DCB_DEMCR_MON_PEND_Pos)              /*!< DCB DEMCR: Monitor pend Mask */
+
+#define DCB_DEMCR_MON_EN_Pos               16U                                            /*!< DCB DEMCR: Monitor enable Position */
+#define DCB_DEMCR_MON_EN_Msk               (0x1UL << DCB_DEMCR_MON_EN_Pos)                /*!< DCB DEMCR: Monitor enable Mask */
+
+#define DCB_DEMCR_VC_SFERR_Pos             11U                                            /*!< DCB DEMCR: Vector Catch SecureFault Position */
+#define DCB_DEMCR_VC_SFERR_Msk             (0x1UL << DCB_DEMCR_VC_SFERR_Pos)              /*!< DCB DEMCR: Vector Catch SecureFault Mask */
+
+#define DCB_DEMCR_VC_HARDERR_Pos           10U                                            /*!< DCB DEMCR: Vector Catch HardFault errors Position */
+#define DCB_DEMCR_VC_HARDERR_Msk           (0x1UL << DCB_DEMCR_VC_HARDERR_Pos)            /*!< DCB DEMCR: Vector Catch HardFault errors Mask */
+
+#define DCB_DEMCR_VC_INTERR_Pos             9U                                            /*!< DCB DEMCR: Vector Catch interrupt errors Position */
+#define DCB_DEMCR_VC_INTERR_Msk            (0x1UL << DCB_DEMCR_VC_INTERR_Pos)             /*!< DCB DEMCR: Vector Catch interrupt errors Mask */
+
+#define DCB_DEMCR_VC_BUSERR_Pos             8U                                            /*!< DCB DEMCR: Vector Catch BusFault errors Position */
+#define DCB_DEMCR_VC_BUSERR_Msk            (0x1UL << DCB_DEMCR_VC_BUSERR_Pos)             /*!< DCB DEMCR: Vector Catch BusFault errors Mask */
+
+#define DCB_DEMCR_VC_STATERR_Pos            7U                                            /*!< DCB DEMCR: Vector Catch state errors Position */
+#define DCB_DEMCR_VC_STATERR_Msk           (0x1UL << DCB_DEMCR_VC_STATERR_Pos)            /*!< DCB DEMCR: Vector Catch state errors Mask */
+
+#define DCB_DEMCR_VC_CHKERR_Pos             6U                                            /*!< DCB DEMCR: Vector Catch check errors Position */
+#define DCB_DEMCR_VC_CHKERR_Msk            (0x1UL << DCB_DEMCR_VC_CHKERR_Pos)             /*!< DCB DEMCR: Vector Catch check errors Mask */
+
+#define DCB_DEMCR_VC_NOCPERR_Pos            5U                                            /*!< DCB DEMCR: Vector Catch NOCP errors Position */
+#define DCB_DEMCR_VC_NOCPERR_Msk           (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos)            /*!< DCB DEMCR: Vector Catch NOCP errors Mask */
+
+#define DCB_DEMCR_VC_MMERR_Pos              4U                                            /*!< DCB DEMCR: Vector Catch MemManage errors Position */
+#define DCB_DEMCR_VC_MMERR_Msk             (0x1UL << DCB_DEMCR_VC_MMERR_Pos)              /*!< DCB DEMCR: Vector Catch MemManage errors Mask */
+
+#define DCB_DEMCR_VC_CORERESET_Pos          0U                                            /*!< DCB DEMCR: Vector Catch Core reset Position */
+#define DCB_DEMCR_VC_CORERESET_Msk         (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/)      /*!< DCB DEMCR: Vector Catch Core reset Mask */
+
+/* DAUTHCTRL, Debug Authentication Control Register Definitions */
+#define DCB_DAUTHCTRL_INTSPNIDEN_Pos        3U                                            /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */
+#define DCB_DAUTHCTRL_INTSPNIDEN_Msk       (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos)        /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */
+
+#define DCB_DAUTHCTRL_SPNIDENSEL_Pos        2U                                            /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */
+#define DCB_DAUTHCTRL_SPNIDENSEL_Msk       (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos)        /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */
+
+#define DCB_DAUTHCTRL_INTSPIDEN_Pos         1U                                            /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */
+#define DCB_DAUTHCTRL_INTSPIDEN_Msk        (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos)         /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */
+
+#define DCB_DAUTHCTRL_SPIDENSEL_Pos         0U                                            /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */
+#define DCB_DAUTHCTRL_SPIDENSEL_Msk        (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/)     /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */
+
+/* DSCSR, Debug Security Control and Status Register Definitions */
+#define DCB_DSCSR_CDSKEY_Pos               17U                                            /*!< DCB DSCSR: CDS write-enable key Position */
+#define DCB_DSCSR_CDSKEY_Msk               (0x1UL << DCB_DSCSR_CDSKEY_Pos)                /*!< DCB DSCSR: CDS write-enable key Mask */
+
+#define DCB_DSCSR_CDS_Pos                  16U                                            /*!< DCB DSCSR: Current domain Secure Position */
+#define DCB_DSCSR_CDS_Msk                  (0x1UL << DCB_DSCSR_CDS_Pos)                   /*!< DCB DSCSR: Current domain Secure Mask */
+
+#define DCB_DSCSR_SBRSEL_Pos                1U                                            /*!< DCB DSCSR: Secure banked register select Position */
+#define DCB_DSCSR_SBRSEL_Msk               (0x1UL << DCB_DSCSR_SBRSEL_Pos)                /*!< DCB DSCSR: Secure banked register select Mask */
+
+#define DCB_DSCSR_SBRSELEN_Pos              0U                                            /*!< DCB DSCSR: Secure banked register select enable Position */
+#define DCB_DSCSR_SBRSELEN_Msk             (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/)          /*!< DCB DSCSR: Secure banked register select enable Mask */
+
+/*@} end of group CMSIS_DCB */
+
+
+
+/**
+  \ingroup  CMSIS_core_register
+  \defgroup CMSIS_DIB       Debug Identification Block
+  \brief    Type definitions for the Debug Identification Block Registers
+  @{
+ */
+
+/**
+  \brief  Structure type to access the Debug Identification Block Registers (DIB).
+ */
+typedef struct
+{
+  __OM  uint32_t DLAR;                   /*!< Offset: 0x000 ( /W)  SCS Software Lock Access Register */
+  __IM  uint32_t DLSR;                   /*!< Offset: 0x004 (R/ )  SCS Software Lock Status Register */
+  __IM  uint32_t DAUTHSTATUS;            /*!< Offset: 0x008 (R/ )  Debug Authentication Status Register */
+  __IM  uint32_t DDEVARCH;               /*!< Offset: 0x00C (R/ )  SCS Device Architecture Register */
+  __IM  uint32_t DDEVTYPE;               /*!< Offset: 0x010 (R/ )  SCS Device Type Register */
+} DIB_Type;
+
+/* DLAR, SCS Software Lock Access Register Definitions */
+#define DIB_DLAR_KEY_Pos                    0U                                            /*!< DIB DLAR: KEY Position */
+#define DIB_DLAR_KEY_Msk                   (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */)        /*!< DIB DLAR: KEY Mask */
+
+/* DLSR, SCS Software Lock Status Register Definitions */
+#define DIB_DLSR_nTT_Pos                    2U                                            /*!< DIB DLSR: Not thirty-two bit Position */
+#define DIB_DLSR_nTT_Msk                   (0x1UL << DIB_DLSR_nTT_Pos )                   /*!< DIB DLSR: Not thirty-two bit Mask */
+
+#define DIB_DLSR_SLK_Pos                    1U                                            /*!< DIB DLSR: Software Lock status Position */
+#define DIB_DLSR_SLK_Msk                   (0x1UL << DIB_DLSR_SLK_Pos )                   /*!< DIB DLSR: Software Lock status Mask */
+
+#define DIB_DLSR_SLI_Pos                    0U                                            /*!< DIB DLSR: Software Lock implemented Position */
+#define DIB_DLSR_SLI_Msk                   (0x1UL /*<< DIB_DLSR_SLI_Pos*/)                /*!< DIB DLSR: Software Lock implemented Mask */
+
+/* DAUTHSTATUS, Debug Authentication Status Register Definitions */
+#define DIB_DAUTHSTATUS_SNID_Pos            6U                                            /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */
+#define DIB_DAUTHSTATUS_SNID_Msk           (0x3UL << DIB_DAUTHSTATUS_SNID_Pos )           /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_SID_Pos             4U                                            /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */
+#define DIB_DAUTHSTATUS_SID_Msk            (0x3UL << DIB_DAUTHSTATUS_SID_Pos )            /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_NSNID_Pos           2U                                            /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */
+#define DIB_DAUTHSTATUS_NSNID_Msk          (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos )          /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */
+
+#define DIB_DAUTHSTATUS_NSID_Pos            0U                                            /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */
+#define DIB_DAUTHSTATUS_NSID_Msk           (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/)        /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */
+
+/* DDEVARCH, SCS Device Architecture Register Definitions */
+#define DIB_DDEVARCH_ARCHITECT_Pos         21U                                            /*!< DIB DDEVARCH: Architect Position */
+#define DIB_DDEVARCH_ARCHITECT_Msk         (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos )       /*!< DIB DDEVARCH: Architect Mask */
+
+#define DIB_DDEVARCH_PRESENT_Pos           20U                                            /*!< DIB DDEVARCH: DEVARCH Present Position */
+#define DIB_DDEVARCH_PRESENT_Msk           (0x1FUL << DIB_DDEVARCH_PRESENT_Pos )          /*!< DIB DDEVARCH: DEVARCH Present Mask */
+
+#define DIB_DDEVARCH_REVISION_Pos          16U                                            /*!< DIB DDEVARCH: Revision Position */
+#define DIB_DDEVARCH_REVISION_Msk          (0xFUL << DIB_DDEVARCH_REVISION_Pos )          /*!< DIB DDEVARCH: Revision Mask */
+
+#define DIB_DDEVARCH_ARCHVER_Pos           12U                                            /*!< DIB DDEVARCH: Architecture Version Position */
+#define DIB_DDEVARCH_ARCHVER_Msk           (0xFUL << DIB_DDEVARCH_ARCHVER_Pos )           /*!< DIB DDEVARCH: Architecture Version Mask */
+
+#define DIB_DDEVARCH_ARCHPART_Pos           0U                                            /*!< DIB DDEVARCH: Architecture Part Position */
+#define DIB_DDEVARCH_ARCHPART_Msk          (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/)     /*!< DIB DDEVARCH: Architecture Part Mask */
+
+/* DDEVTYPE, SCS Device Type Register Definitions */
+#define DIB_DDEVTYPE_SUB_Pos                4U                                            /*!< DIB DDEVTYPE: Sub-type Position */
+#define DIB_DDEVTYPE_SUB_Msk               (0xFUL << DIB_DDEVTYPE_SUB_Pos )               /*!< DIB DDEVTYPE: Sub-type Mask */
+
+#define DIB_DDEVTYPE_MAJOR_Pos              0U                                            /*!< DIB DDEVTYPE: Major type Position */
+#define DIB_DDEVTYPE_MAJOR_Msk             (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/)          /*!< DIB DDEVTYPE: Major type Mask */
+
+
+/*@} end of group CMSIS_DIB */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_bitfield     Core register bit field macros
+  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
+  @{
+ */
+
+/**
+  \brief   Mask and shift a bit field value for use in a register bit range.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted value.
+*/
+#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)
+
+/**
+  \brief     Mask and shift a register value to extract a bit filed value.
+  \param[in] field  Name of the register bit field.
+  \param[in] value  Value of register. This parameter is interpreted as an uint32_t type.
+  \return           Masked and shifted bit field value.
+*/
+#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)
+
+/*@} end of group CMSIS_core_bitfield */
+
+
+/**
+  \ingroup    CMSIS_core_register
+  \defgroup   CMSIS_core_base     Core Definitions
+  \brief      Definitions for base addresses, unions, and structures.
+  @{
+ */
+
+/* Memory mapping of Core Hardware */
+  #define SCS_BASE            (0xE000E000UL)                             /*!< System Control Space Base Address */
+  #define ITM_BASE            (0xE0000000UL)                             /*!< ITM Base Address */
+  #define DWT_BASE            (0xE0001000UL)                             /*!< DWT Base Address */
+  #define TPI_BASE            (0xE0040000UL)                             /*!< TPI Base Address */
+  #define DCB_BASE            (0xE000EDF0UL)                             /*!< DCB Base Address */
+  #define DIB_BASE            (0xE000EFB0UL)                             /*!< DIB Base Address */
+  #define EMSS_BASE           (0xE001E000UL)                             /*!<Enhanced Memory SubSystem Base Address */
+  
+  #define SysTick_BASE        (SCS_BASE +  0x0010UL)                     /*!< SysTick Base Address */
+  #define NVIC_BASE           (SCS_BASE +  0x0100UL)                     /*!< NVIC Base Address */
+  #define SCB_BASE            (SCS_BASE +  0x0D00UL)                     /*!< System Control Block Base Address */
+
+  #define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE         ) /*!< System control Register not in SCB */
+  #define SCB                 ((SCB_Type       *)     SCB_BASE         ) /*!< SCB configuration struct */
+  #define SysTick             ((SysTick_Type   *)     SysTick_BASE     ) /*!< SysTick configuration struct */
+  #define NVIC                ((NVIC_Type      *)     NVIC_BASE        ) /*!< NVIC configuration struct */
+  #define ITM                 ((ITM_Type       *)     ITM_BASE         ) /*!< ITM configuration struct */
+  #define DWT                 ((DWT_Type       *)     DWT_BASE         ) /*!< DWT configuration struct */
+  #define TPI                 ((TPI_Type       *)     TPI_BASE         ) /*!< TPI configuration struct */
+  #define DCB                 ((DCB_Type       *)     DCB_BASE         ) /*!< DCB configuration struct */
+  #define DIB                 ((DIB_Type       *)     DIB_BASE         ) /*!< DIB configuration struct */
+  #define EMSS                ((EMSS_Type      *)     EMSS_BASE        ) /*!<Ehanced MSS Registers struct */
+
+  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+    #define MPU_BASE          (SCS_BASE +  0x0D90UL)                     /*!< Memory Protection Unit */
+    #define MPU               ((MPU_Type       *)     MPU_BASE         ) /*!< Memory Protection Unit */
+  #endif
+
+  #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+    #define SAU_BASE          (SCS_BASE +  0x0DD0UL)                     /*!< Security Attribution Unit */
+    #define SAU               ((SAU_Type       *)     SAU_BASE         ) /*!< Security Attribution Unit */
+  #endif
+
+  #define FPU_BASE            (SCS_BASE +  0x0F30UL)                     /*!< Floating Point Unit */
+  #define FPU                 ((FPU_Type       *)     FPU_BASE         ) /*!< Floating Point Unit */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+  #define SCS_BASE_NS         (0xE002E000UL)                             /*!< System Control Space Base Address (non-secure address space) */
+
+  #define DCB_BASE_NS         (0xE002EDF0UL)                             /*!< DCB Base Address                  (non-secure address space) */
+  #define DIB_BASE_NS         (0xE002EFB0UL)                             /*!< DIB Base Address                  (non-secure address space) */
+  #define SysTick_BASE_NS     (SCS_BASE_NS +  0x0010UL)                  /*!< SysTick Base Address              (non-secure address space) */
+  #define NVIC_BASE_NS        (SCS_BASE_NS +  0x0100UL)                  /*!< NVIC Base Address                 (non-secure address space) */
+  #define SCB_BASE_NS         (SCS_BASE_NS +  0x0D00UL)                  /*!< System Control Block Base Address (non-secure address space) */
+
+  #define SCnSCB_NS           ((SCnSCB_Type    *)     SCS_BASE_NS      ) /*!< System control Register not in SCB(non-secure address space) */
+  #define SCB_NS              ((SCB_Type       *)     SCB_BASE_NS      ) /*!< SCB configuration struct          (non-secure address space) */
+  #define SysTick_NS          ((SysTick_Type   *)     SysTick_BASE_NS  ) /*!< SysTick configuration struct      (non-secure address space) */
+  #define NVIC_NS             ((NVIC_Type      *)     NVIC_BASE_NS     ) /*!< NVIC configuration struct         (non-secure address space) */
+  #define DCB_NS              ((DCB_Type       *)     DCB_BASE_NS      ) /*!< DCB configuration struct          (non-secure address space) */
+  #define DIB_NS              ((DIB_Type       *)     DIB_BASE_NS      ) /*!< DIB configuration struct          (non-secure address space) */
+
+  #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+    #define MPU_BASE_NS       (SCS_BASE_NS +  0x0D90UL)                  /*!< Memory Protection Unit            (non-secure address space) */
+    #define MPU_NS            ((MPU_Type       *)     MPU_BASE_NS      ) /*!< Memory Protection Unit            (non-secure address space) */
+  #endif
+
+  #define FPU_BASE_NS         (SCS_BASE_NS +  0x0F30UL)                  /*!< Floating Point Unit               (non-secure address space) */
+  #define FPU_NS              ((FPU_Type       *)     FPU_BASE_NS      ) /*!< Floating Point Unit               (non-secure address space) */
+
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+/*@} */
+
+
+
+/*******************************************************************************
+ *                Hardware Abstraction Layer
+  Core Function Interface contains:
+  - Core NVIC Functions
+  - Core SysTick Functions
+  - Core Debug Functions
+  - Core Register Access Functions
+ ******************************************************************************/
+/**
+  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
+*/
+
+
+
+/* ##########################   NVIC functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
+  \brief    Functions that manage interrupts and exceptions via the NVIC.
+  @{
+ */
+
+#ifdef CMSIS_NVIC_VIRTUAL
+  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE
+    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"
+  #endif
+  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping
+  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping
+  #define NVIC_EnableIRQ              __NVIC_EnableIRQ
+  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ
+  #define NVIC_DisableIRQ             __NVIC_DisableIRQ
+  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ
+  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ
+  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ
+  #define NVIC_GetActive              __NVIC_GetActive
+  #define NVIC_SetPriority            __NVIC_SetPriority
+  #define NVIC_GetPriority            __NVIC_GetPriority
+  #define NVIC_SystemReset            __NVIC_SystemReset
+  #define SW_SystemReset              __SW_SystemReset
+#endif /* CMSIS_NVIC_VIRTUAL */
+
+#ifdef CMSIS_VECTAB_VIRTUAL
+  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"
+  #endif
+  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE
+#else
+  #define NVIC_SetVector              __NVIC_SetVector
+  #define NVIC_GetVector              __NVIC_GetVector
+#endif  /* (CMSIS_VECTAB_VIRTUAL) */
+
+#define NVIC_USER_IRQ_OFFSET          16
+
+
+/* Special LR values for Secure/Non-Secure call handling and exception handling                                               */
+
+/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS                   */ 
+#define FNC_RETURN                 (0xFEFFFFFFUL)     /* bit [0] ignored when processing a branch                             */
+
+/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */
+#define EXC_RETURN_PREFIX          (0xFF000000UL)     /* bits [31:24] set to indicate an EXC_RETURN value                     */
+#define EXC_RETURN_S               (0x00000040UL)     /* bit [6] stack used to push registers: 0=Non-secure 1=Secure          */
+#define EXC_RETURN_DCRS            (0x00000020UL)     /* bit [5] stacking rules for called registers: 0=skipped 1=saved       */
+#define EXC_RETURN_FTYPE           (0x00000010UL)     /* bit [4] allocate stack for floating-point context: 0=done 1=skipped  */
+#define EXC_RETURN_MODE            (0x00000008UL)     /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode      */
+#define EXC_RETURN_SPSEL           (0x00000004UL)     /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP           */
+#define EXC_RETURN_ES              (0x00000001UL)     /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */
+
+/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking                            */
+#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)  /* Value for processors with floating-point extension:                  */
+#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125AUL)     /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE                   */
+#else 
+#define EXC_INTEGRITY_SIGNATURE     (0xFEFA125BUL)     /* Value for processors without floating-point extension                */
+#endif
+
+
+/**
+  \brief   Set Priority Grouping
+  \details Sets the priority grouping field using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */
+  SCB->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping
+  \details Reads the priority grouping field from the NVIC Interrupt Controller.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
+{
+  return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable Interrupt
+  \details Enables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    __COMPILER_BARRIER();
+    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+    __COMPILER_BARRIER();
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Enable status
+  \details Returns a device specific interrupt enable status from the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt is not enabled.
+  \return             1  Interrupt is enabled.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Disable Interrupt
+  \details Disables a device specific interrupt in the NVIC interrupt controller.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+    __DSB();
+    __ISB();
+  }
+}
+
+
+/**
+  \brief   Get Pending Interrupt
+  \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Pending Interrupt
+  \details Sets the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Clear Pending Interrupt
+  \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Active Interrupt
+  \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Interrupt Target State
+  \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+  \return             1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Interrupt Target State
+  \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+                      1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |=  ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Clear Interrupt Target State
+  \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  if interrupt is assigned to Secure
+                      1  if interrupt is assigned to Non Secure
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)));
+    return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+
+/**
+  \brief   Set Interrupt Priority
+  \details Sets the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+  \note    The priority cannot be set for every processor exception.
+ */
+__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority
+  \details Reads the priority of a device specific interrupt or a processor exception.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority.
+                      Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+
+
+/**
+  \brief   Encode Priority
+  \details Encodes the priority for an interrupt with the given priority group,
+           preemptive priority value, and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]     PriorityGroup  Used priority group.
+  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
+  \param [in]       SubPriority  Subpriority value (starting from 0).
+  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  return (
+           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
+         );
+}
+
+
+/**
+  \brief   Decode Priority
+  \details Decodes an interrupt priority value with a given priority group to
+           preemptive priority value and subpriority value.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
+  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
+  \param [in]     PriorityGroup  Used priority group.
+  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
+  \param [out]     pSubPriority  Subpriority value (starting from 0).
+ */
+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
+{
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
+  uint32_t PreemptPriorityBits;
+  uint32_t SubPriorityBits;
+
+  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+
+  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
+  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
+}
+
+
+/**
+  \brief   Set Interrupt Vector
+  \details Sets an interrupt vector in SRAM based interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+           VTOR must been relocated to SRAM before.
+  \param [in]   IRQn      Interrupt number
+  \param [in]   vector    Address of interrupt handler function
+ */
+__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
+{
+  uint32_t *vectors = (uint32_t *)SCB->VTOR;
+  vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector;
+  __DSB();
+}
+
+
+/**
+  \brief   Get Interrupt Vector
+  \details Reads an interrupt vector from interrupt vector table.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn      Interrupt number.
+  \return                 Address of interrupt handler function
+ */
+__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
+{
+  uint32_t *vectors = (uint32_t *)SCB->VTOR;
+  return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET];
+}
+
+
+/**
+  \brief   System Reset
+  \details Initiates a system reset request to reset the MCU.
+ */
+__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses including
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+/**
+  \brief   Software Reset
+  \details Initiates a system reset request to reset the CPU.
+ */
+__NO_RETURN __STATIC_INLINE void __SW_SystemReset(void)
+{
+  __DSB();                                                          /* Ensure all outstanding memory accesses including
+                                                                       buffered write are completed before reset */
+  SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |
+                           (SCB->AIRCR & SCB_AIRCR_BFHFNMINS_Msk) | /* Keep BFHFNMINS unchanged. Use this Reset function in case your case need to keep it */
+                           (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | /* Keep priority group unchanged */
+                            SCB_AIRCR_SYSRESETREQ_Msk    );         
+  __DSB();                                                          /* Ensure completion of memory access */
+
+  for(;;)                                                           /* wait until reset */
+  {
+    __NOP();
+  }
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Priority Grouping (non-secure)
+  \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence.
+           The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.
+           Only values from 0..7 are used.
+           In case of a conflict between priority grouping and available
+           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+  \param [in]      PriorityGroup  Priority grouping field.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup)
+{
+  uint32_t reg_value;
+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
+
+  reg_value  =  SCB_NS->AIRCR;                                                /* read old register configuration    */
+  reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
+  reg_value  =  (reg_value                                   |
+                ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+                (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */
+  SCB_NS->AIRCR =  reg_value;
+}
+
+
+/**
+  \brief   Get Priority Grouping (non-secure)
+  \details Reads the priority grouping field from the non-secure NVIC when in secure state.
+  \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void)
+{
+  return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+}
+
+
+/**
+  \brief   Enable Interrupt (non-secure)
+  \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Enable status (non-secure)
+  \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt is not enabled.
+  \return             1  Interrupt is enabled.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Disable Interrupt (non-secure)
+  \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Pending Interrupt (non-secure)
+  \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not pending.
+  \return             1  Interrupt status is pending.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Pending Interrupt (non-secure)
+  \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Clear Pending Interrupt (non-secure)
+  \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state.
+  \param [in]      IRQn  Device specific interrupt number.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+  }
+}
+
+
+/**
+  \brief   Get Active Interrupt (non-secure)
+  \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt.
+  \param [in]      IRQn  Device specific interrupt number.
+  \return             0  Interrupt status is not active.
+  \return             1  Interrupt status is active.
+  \note    IRQn must not be negative.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
+  }
+  else
+  {
+    return(0U);
+  }
+}
+
+
+/**
+  \brief   Set Interrupt Priority (non-secure)
+  \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]      IRQn  Interrupt number.
+  \param [in]  priority  Priority to set.
+  \note    The priority cannot be set for every non-secure processor exception.
+ */
+__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority)
+{
+  if ((int32_t)(IRQn) >= 0)
+  {
+    NVIC_NS->IPR[((uint32_t)IRQn)]               = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+  else
+  {
+    SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+  }
+}
+
+
+/**
+  \brief   Get Interrupt Priority (non-secure)
+  \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state.
+           The interrupt number can be positive to specify a device specific interrupt,
+           or negative to specify a processor exception.
+  \param [in]   IRQn  Interrupt number.
+  \return             Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller.
+ */
+__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn)
+{
+
+  if ((int32_t)(IRQn) >= 0)
+  {
+    return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)]               >> (8U - __NVIC_PRIO_BITS)));
+  }
+  else
+  {
+    return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS)));
+  }
+}
+#endif /*  defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_NVICFunctions */
+
+/* ##########################  MPU functions  #################################### */
+
+#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
+
+#include "mpu_armv8.h"
+
+#endif
+
+/* ##########################  FPU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_FpuFunctions FPU Functions
+  \brief    Function that provides FPU type.
+  @{
+ */
+
+/**
+  \brief   get FPU type
+  \details returns the FPU type
+  \returns
+   - \b  0: No FPU
+   - \b  1: Single precision FPU
+   - \b  2: Double + Single precision FPU
+ */
+__STATIC_INLINE uint32_t SCB_GetFPUType(void)
+{
+  uint32_t mvfr0;
+
+  mvfr0 = FPU->MVFR0;
+  if      ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U)
+  {
+    return 2U;           /* Double + Single precision FPU */
+  }
+  else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U)
+  {
+    return 1U;           /* Single precision FPU */
+  }
+  else
+  {
+    return 0U;           /* No FPU */
+  }
+}
+
+
+/*@} end of CMSIS_Core_FpuFunctions */
+
+
+
+/* ##########################   SAU functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SAUFunctions SAU Functions
+  \brief    Functions that configure the SAU.
+  @{
+ */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/**
+  \brief   Enable SAU
+  \details Enables the Security Attribution Unit (SAU).
+ */
+__STATIC_INLINE void TZ_SAU_Enable(void)
+{
+    SAU->CTRL |=  (SAU_CTRL_ENABLE_Msk);
+}
+
+
+
+/**
+  \brief   Disable SAU
+  \details Disables the Security Attribution Unit (SAU).
+ */
+__STATIC_INLINE void TZ_SAU_Disable(void)
+{
+    SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk);
+}
+
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_SAUFunctions */
+
+
+
+/* ##################################    Debug Control function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_DCBFunctions Debug Control Functions
+  \brief    Functions that access the Debug Control Block.
+  @{
+ */
+
+
+/**
+  \brief   Set Debug Authentication Control Register
+  \details writes to Debug Authentication Control register.
+  \param [in]  value  value to be writen.
+ */
+__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value)
+{
+    __DSB();
+    __ISB();
+    DCB->DAUTHCTRL = value;
+    __DSB();
+    __ISB();
+}
+
+
+/**
+  \brief   Get Debug Authentication Control Register
+  \details Reads Debug Authentication Control register.
+  \return             Debug Authentication Control Register.
+ */
+__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void)
+{
+    return (DCB->DAUTHCTRL);
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Set Debug Authentication Control Register (non-secure)
+  \details writes to non-secure Debug Authentication Control register when in secure state.
+  \param [in]  value  value to be writen
+ */
+__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value)
+{
+    __DSB();
+    __ISB();
+    DCB_NS->DAUTHCTRL = value;
+    __DSB();
+    __ISB();
+}
+
+
+/**
+  \brief   Get Debug Authentication Control Register (non-secure)
+  \details Reads non-secure Debug Authentication Control register when in secure state.
+  \return             Debug Authentication Control Register.
+ */
+__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void)
+{
+    return (DCB_NS->DAUTHCTRL);
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_DCBFunctions */
+
+
+
+
+/* ##################################    Debug Identification function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions
+  \brief    Functions that access the Debug Identification Block.
+  @{
+ */
+
+
+/**
+  \brief   Get Debug Authentication Status Register
+  \details Reads Debug Authentication Status register.
+  \return             Debug Authentication Status Register.
+ */
+__STATIC_INLINE uint32_t DIB_GetAuthStatus(void)
+{
+    return (DIB->DAUTHSTATUS);
+}
+
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   Get Debug Authentication Status Register (non-secure)
+  \details Reads non-secure Debug Authentication Status register when in secure state.
+  \return             Debug Authentication Status Register.
+ */
+__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void)
+{
+    return (DIB_NS->DAUTHSTATUS);
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+/*@} end of CMSIS_Core_DCBFunctions */
+
+
+#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \
+     (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)))
+
+/* ##########################  Cache functions  #################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_CacheFunctions Cache Functions
+  \brief    Functions that configure Instruction and Data cache.
+  @{
+ */
+
+/* Cache Size ID Register Macros */
+#define CCSIDR_WAYS(x)         (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos)
+#define CCSIDR_SETS(x)         (((x) & SCB_CCSIDR_NUMSETS_Msk      ) >> SCB_CCSIDR_NUMSETS_Pos      )
+
+#define __SCB_DCACHE_LINE_SIZE  32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */
+#define __SCB_ICACHE_LINE_SIZE  32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */
+
+/**
+  \brief   Enable I-Cache
+  \details Turns on I-Cache
+  */
+__STATIC_FORCEINLINE void SCB_EnableICache (void)
+{
+  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)
+    if (SCB->CCR & SCB_CCR_IC_Msk) return;  /* return if ICache is already enabled */
+
+    __DSB();
+    __ISB();
+    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */
+    __DSB();
+    __ISB();
+    SCB->CCR |=  (uint32_t)SCB_CCR_IC_Msk;  /* enable I-Cache */
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Disable I-Cache
+  \details Turns off I-Cache
+  */
+__STATIC_FORCEINLINE void SCB_DisableICache (void)
+{
+  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)
+    __DSB();
+    __ISB();
+    SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk;  /* disable I-Cache */
+    SCB->ICIALLU = 0UL;                     /* invalidate I-Cache */
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Invalidate I-Cache
+  \details Invalidates I-Cache
+  */
+__STATIC_FORCEINLINE void SCB_InvalidateICache (void)
+{
+  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)
+    __DSB();
+    __ISB();
+    SCB->ICIALLU = 0UL;
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   I-Cache Invalidate by address
+  \details Invalidates I-Cache for the given address.
+           I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.
+           I-Cache memory blocks which are part of given address + given size are invalidated.
+  \param[in]   addr    address
+  \param[in]   isize   size of memory block (in number of bytes)
+*/
+__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize)
+{
+  #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)
+    if ( isize > 0 ) {
+       int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U));
+      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */;
+
+      __DSB();
+
+      do {
+        SCB->ICIMVAU = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */
+        op_addr += __SCB_ICACHE_LINE_SIZE;
+        op_size -= __SCB_ICACHE_LINE_SIZE;
+      } while ( op_size > 0 );
+
+      __DSB();
+      __ISB();
+    }
+  #endif
+}
+
+
+/**
+  \brief   Enable D-Cache
+  \details Turns on D-Cache
+  */
+__STATIC_FORCEINLINE void SCB_EnableDCache (void)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    if (SCB->CCR & SCB_CCR_DC_Msk) return;  /* return if DCache is already enabled */
+
+    SCB->CSSELR = 0U;                       /* select Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |
+                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways-- != 0U);
+    } while(sets-- != 0U);
+    __DSB();
+
+    SCB->CCR |=  (uint32_t)SCB_CCR_DC_Msk;  /* enable D-Cache */
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Disable D-Cache
+  \details Turns off D-Cache
+  */
+__STATIC_FORCEINLINE void SCB_DisableDCache (void)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = 0U;                       /* select Level 1 data cache */
+    __DSB();
+
+    SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk;  /* disable D-Cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* clean & invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |
+                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways-- != 0U);
+    } while(sets-- != 0U);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Invalidate D-Cache
+  \details Invalidates D-Cache
+  */
+__STATIC_FORCEINLINE void SCB_InvalidateDCache (void)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = 0U;                       /* select Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) |
+                      ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways-- != 0U);
+    } while(sets-- != 0U);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Clean D-Cache
+  \details Cleans D-Cache
+  */
+__STATIC_FORCEINLINE void SCB_CleanDCache (void)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = 0U;                       /* select Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* clean D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) |
+                      ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways-- != 0U);
+    } while(sets-- != 0U);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   Clean & Invalidate D-Cache
+  \details Cleans and Invalidates D-Cache
+  */
+__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    uint32_t ccsidr;
+    uint32_t sets;
+    uint32_t ways;
+
+    SCB->CSSELR = 0U;                       /* select Level 1 data cache */
+    __DSB();
+
+    ccsidr = SCB->CCSIDR;
+
+                                            /* clean & invalidate D-Cache */
+    sets = (uint32_t)(CCSIDR_SETS(ccsidr));
+    do {
+      ways = (uint32_t)(CCSIDR_WAYS(ccsidr));
+      do {
+        SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) |
+                       ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk)  );
+        #if defined ( __CC_ARM )
+          __schedule_barrier();
+        #endif
+      } while (ways-- != 0U);
+    } while(sets-- != 0U);
+
+    __DSB();
+    __ISB();
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Invalidate by address
+  \details Invalidates D-Cache for the given address.
+           D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity.
+           D-Cache memory blocks which are part of given address + given size are invalidated.
+  \param[in]   addr    address
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    if ( dsize > 0 ) { 
+       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));
+      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;
+    
+      __DSB();
+
+      do {
+        SCB->DCIMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */
+        op_addr += __SCB_DCACHE_LINE_SIZE;
+        op_size -= __SCB_DCACHE_LINE_SIZE;
+      } while ( op_size > 0 );
+
+      __DSB();
+      __ISB();
+    }
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Clean by address
+  \details Cleans D-Cache for the given address
+           D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity.
+           D-Cache memory blocks which are part of given address + given size are cleaned.
+  \param[in]   addr    address
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    if ( dsize > 0 ) { 
+       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));
+      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;
+    
+      __DSB();
+
+      do {
+        SCB->DCCMVAC = op_addr;             /* register accepts only 32byte aligned values, only bits 31..5 are valid */
+        op_addr += __SCB_DCACHE_LINE_SIZE;
+        op_size -= __SCB_DCACHE_LINE_SIZE;
+      } while ( op_size > 0 );
+
+      __DSB();
+      __ISB();
+    }
+  #endif
+}
+
+
+/**
+  \brief   D-Cache Clean and Invalidate by address
+  \details Cleans and invalidates D_Cache for the given address
+           D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity.
+           D-Cache memory blocks which are part of given address + given size are cleaned and invalidated.
+  \param[in]   addr    address (aligned to 32-byte boundary)
+  \param[in]   dsize   size of memory block (in number of bytes)
+*/
+__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)
+{
+  #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U)
+    if ( dsize > 0 ) { 
+       int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U));
+      uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */;
+    
+      __DSB();
+
+      do {
+        SCB->DCCIMVAC = op_addr;            /* register accepts only 32byte aligned values, only bits 31..5 are valid */
+        op_addr +=          __SCB_DCACHE_LINE_SIZE;
+        op_size -=          __SCB_DCACHE_LINE_SIZE;
+      } while ( op_size > 0 );
+
+      __DSB();
+      __ISB();
+    }
+  #endif
+}
+
+/*@} end of CMSIS_Core_CacheFunctions */
+#endif
+
+
+/* ##################################    SysTick function  ############################################ */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
+  \brief    Functions that configure the System.
+  @{
+ */
+
+#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)
+
+/**
+  \brief   System Tick Configuration
+  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                   /* Reload value impossible */
+  }
+
+  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                   SysTick_CTRL_TICKINT_Msk   |
+                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                     /* Function successful */
+}
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+/**
+  \brief   System Tick Configuration (non-secure)
+  \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer.
+           Counter is in free running mode to generate periodic interrupts.
+  \param [in]  ticks  Number of ticks between two interrupts.
+  \return          0  Function succeeded.
+  \return          1  Function failed.
+  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
+           function <b>TZ_SysTick_Config_NS</b> is not included. In this case, the file <b><i>device</i>.h</b>
+           must contain a vendor-specific implementation of this function.
+
+ */
+__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks)
+{
+  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+  {
+    return (1UL);                                                         /* Reload value impossible */
+  }
+
+  SysTick_NS->LOAD  = (uint32_t)(ticks - 1UL);                            /* set reload register */
+  TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+  SysTick_NS->VAL   = 0UL;                                                /* Load the SysTick Counter Value */
+  SysTick_NS->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
+                      SysTick_CTRL_TICKINT_Msk   |
+                      SysTick_CTRL_ENABLE_Msk;                            /* Enable SysTick IRQ and SysTick Timer */
+  return (0UL);                                                           /* Function successful */
+}
+#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
+
+#endif
+
+/*@} end of CMSIS_Core_SysTickFunctions */
+
+
+
+/* ##################################### Debug In/Output function ########################################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_core_DebugFunctions ITM Functions
+  \brief    Functions that access the ITM debug interface.
+  @{
+ */
+
+extern volatile int32_t ITM_RxBuffer;                              /*!< External variable to receive characters. */
+#define                 ITM_RXBUFFER_EMPTY  ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
+
+
+/**
+  \brief   ITM Send Character
+  \details Transmits a character via the ITM channel 0, and
+           \li Just returns when no debugger is connected that has booked the output.
+           \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.
+  \param [in]     ch  Character to transmit.
+  \returns            Character to transmit.
+ */
+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)
+{
+  if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) &&      /* ITM enabled */
+      ((ITM->TER & 1UL               ) != 0UL)   )     /* ITM Port #0 enabled */
+  {
+    while (ITM->PORT[0U].u32 == 0UL)
+    {
+      __NOP();
+    }
+    ITM->PORT[0U].u8 = (uint8_t)ch;
+  }
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Receive Character
+  \details Inputs a character via the external variable \ref ITM_RxBuffer.
+  \return             Received character.
+  \return         -1  No character pending.
+ */
+__STATIC_INLINE int32_t ITM_ReceiveChar (void)
+{
+  int32_t ch = -1;                           /* no character available */
+
+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY)
+  {
+    ch = ITM_RxBuffer;
+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */
+  }
+
+  return (ch);
+}
+
+
+/**
+  \brief   ITM Check Character
+  \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer.
+  \return          0  No character available.
+  \return          1  Character available.
+ */
+__STATIC_INLINE int32_t ITM_CheckChar (void)
+{
+
+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY)
+  {
+    return (0);                              /* no character available */
+  }
+  else
+  {
+    return (1);                              /*    character available */
+  }
+}
+
+/*@} end of CMSIS_core_DebugFunctions */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CORE_STAR_H_DEPENDANT */
+
+#endif /* __CMSIS_GENERIC */

+ 206 - 0
CMSIS/Core/Include/pac_armv81.h

@@ -0,0 +1,206 @@
+/******************************************************************************
+ * @file     pac_armv81.h
+ * @brief    CMSIS PAC key functions for Armv8.1-M PAC extension
+ * @version  V1.0.0
+ * @date     23. March 2022
+ ******************************************************************************/
+/*
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if   defined ( __ICCARM__ )
+  #pragma system_include         /* treat file as system include file for MISRA check */
+#elif defined (__clang__)
+  #pragma clang system_header    /* treat file as system include file */
+#endif
+
+#ifndef PAC_ARMV81_H
+#define PAC_ARMV81_H
+
+
+/* ###################  PAC Key functions  ########################### */
+/**
+  \ingroup  CMSIS_Core_FunctionInterface
+  \defgroup CMSIS_Core_PacKeyFunctions PAC Key functions
+  \brief    Functions that access the PAC keys.
+  @{
+ */
+
+#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1))
+
+/**
+  \brief   read the PAC key used for privileged mode
+  \details Reads the PAC key stored in the PAC_KEY_P registers.
+  \param [out]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __get_PAC_KEY_P (uint32_t* pPacKey) {
+  __ASM volatile (
+  "mrs   r1, pac_key_p_0\n"
+  "str   r1,[%0,#0]\n"
+  "mrs   r1, pac_key_p_1\n"
+  "str   r1,[%0,#4]\n"
+  "mrs   r1, pac_key_p_2\n"
+  "str   r1,[%0,#8]\n"
+  "mrs   r1, pac_key_p_3\n"
+  "str   r1,[%0,#12]\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   write the PAC key used for privileged mode
+  \details writes the given PAC key to the PAC_KEY_P registers.
+  \param [in]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __set_PAC_KEY_P (uint32_t* pPacKey) {
+  __ASM volatile (
+  "ldr   r1,[%0,#0]\n"
+  "msr   pac_key_p_0, r1\n"
+  "ldr   r1,[%0,#4]\n"
+  "msr   pac_key_p_1, r1\n"
+  "ldr   r1,[%0,#8]\n"
+  "msr   pac_key_p_2, r1\n"
+  "ldr   r1,[%0,#12]\n"
+  "msr   pac_key_p_3, r1\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   read the PAC key used for unprivileged mode
+  \details Reads the PAC key stored in the PAC_KEY_U registers.
+  \param [out]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __get_PAC_KEY_U (uint32_t* pPacKey) {
+  __ASM volatile (
+  "mrs   r1, pac_key_u_0\n"
+  "str   r1,[%0,#0]\n"
+  "mrs   r1, pac_key_u_1\n"
+  "str   r1,[%0,#4]\n"
+  "mrs   r1, pac_key_u_2\n"
+  "str   r1,[%0,#8]\n"
+  "mrs   r1, pac_key_u_3\n"
+  "str   r1,[%0,#12]\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   write the PAC key used for unprivileged mode
+  \details writes the given PAC key to the PAC_KEY_U registers.
+  \param [in]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __set_PAC_KEY_U (uint32_t* pPacKey) {
+  __ASM volatile (
+  "ldr   r1,[%0,#0]\n"
+  "msr   pac_key_u_0, r1\n"
+  "ldr   r1,[%0,#4]\n"
+  "msr   pac_key_u_1, r1\n"
+  "ldr   r1,[%0,#8]\n"
+  "msr   pac_key_u_2, r1\n"
+  "ldr   r1,[%0,#12]\n"
+  "msr   pac_key_u_3, r1\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
+
+/**
+  \brief   read the PAC key used for privileged mode (non-secure)
+  \details Reads the PAC key stored in the non-secure PAC_KEY_P registers when in secure mode.
+  \param [out]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_P_NS (uint32_t* pPacKey) {
+  __ASM volatile (
+  "mrs   r1, pac_key_p_0_ns\n"
+  "str   r1,[%0,#0]\n"
+  "mrs   r1, pac_key_p_1_ns\n"
+  "str   r1,[%0,#4]\n"
+  "mrs   r1, pac_key_p_2_ns\n"
+  "str   r1,[%0,#8]\n"
+  "mrs   r1, pac_key_p_3_ns\n"
+  "str   r1,[%0,#12]\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   write the PAC key used for privileged mode (non-secure)
+  \details writes the given PAC key to the non-secure PAC_KEY_P registers when in secure mode.
+  \param [in]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_P_NS (uint32_t* pPacKey) {
+  __ASM volatile (
+  "ldr   r1,[%0,#0]\n"
+  "msr   pac_key_p_0_ns, r1\n"
+  "ldr   r1,[%0,#4]\n"
+  "msr   pac_key_p_1_ns, r1\n"
+  "ldr   r1,[%0,#8]\n"
+  "msr   pac_key_p_2_ns, r1\n"
+  "ldr   r1,[%0,#12]\n"
+  "msr   pac_key_p_3_ns, r1\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   read the PAC key used for unprivileged mode (non-secure)
+  \details Reads the PAC key stored in the non-secure PAC_KEY_U registers when in secure mode.
+  \param [out]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_U_NS (uint32_t* pPacKey) {
+  __ASM volatile (
+  "mrs   r1, pac_key_u_0_ns\n"
+  "str   r1,[%0,#0]\n"
+  "mrs   r1, pac_key_u_1_ns\n"
+  "str   r1,[%0,#4]\n"
+  "mrs   r1, pac_key_u_2_ns\n"
+  "str   r1,[%0,#8]\n"
+  "mrs   r1, pac_key_u_3_ns\n"
+  "str   r1,[%0,#12]\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+/**
+  \brief   write the PAC key used for unprivileged mode (non-secure)
+  \details writes the given PAC key to the non-secure PAC_KEY_U registers when in secure mode.
+  \param [in]    pPacKey  128bit PAC key
+ */
+__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_U_NS (uint32_t* pPacKey) {
+  __ASM volatile (
+  "ldr   r1,[%0,#0]\n"
+  "msr   pac_key_u_0_ns, r1\n"
+  "ldr   r1,[%0,#4]\n"
+  "msr   pac_key_u_1_ns, r1\n"
+  "ldr   r1,[%0,#8]\n"
+  "msr   pac_key_u_2_ns, r1\n"
+  "ldr   r1,[%0,#12]\n"
+  "msr   pac_key_u_3_ns, r1\n"
+  : : "r" (pPacKey) : "memory", "r1"
+  );
+}
+
+#endif /* (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) */
+
+#endif /* (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) */
+
+/*@} end of CMSIS_Core_PacKeyFunctions */
+
+
+#endif /* PAC_ARMV81_H */

+ 4 - 4
CMSIS/CoreValidation/Tests/bootloader/config/core_m/rtebuild.sct

@@ -36,9 +36,9 @@
 #define __STACK_SIZE    0x00000400
 #define __HEAP_SIZE     0x00000C00
 
-/*--------------------- CMSE Venner Configuration ---------------------------
-; <h> CMSE Venner Configuration
-;   <o0>  CMSE Venner Size (in Bytes) <0x0-0xFFFFFFFF:32>
+/*--------------------- CMSE Veneer Configuration ---------------------------
+; <h> CMSE Veneer Configuration
+;   <o0>  CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
 ; </h>
  *----------------------------------------------------------------------------*/
 #define __CMSEVENEER_SIZE    0x200
@@ -115,7 +115,7 @@ LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
 }
 
 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
-LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Venners
+LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Veneers
   ER_CMSE_VENEER __CV_BASE __CV_SIZE  {
    *(Veneer$$CMSE)
   }

+ 4 - 4
CMSIS/CoreValidation/Tests/config/core_m/rtebuild.sct

@@ -36,9 +36,9 @@
 #define __STACK_SIZE    0x00000400
 #define __HEAP_SIZE     0x00000C00
 
-/*--------------------- CMSE Venner Configuration ---------------------------
-; <h> CMSE Venner Configuration
-;   <o0>  CMSE Venner Size (in Bytes) <0x0-0xFFFFFFFF:32>
+/*--------------------- CMSE Veneer Configuration ---------------------------
+; <h> CMSE Veneer Configuration
+;   <o0>  CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
 ; </h>
  *----------------------------------------------------------------------------*/
 #define __CMSEVENEER_SIZE    0x200
@@ -115,7 +115,7 @@ LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
 }
 
 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
-LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Venners
+LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Veneers
   ER_CMSE_VENEER __CV_BASE __CV_SIZE  {
    *(Veneer$$CMSE)
   }

+ 4 - 4
CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ac5.sct

@@ -33,9 +33,9 @@
 #define __STACK_SIZE    0x00000400
 #define __HEAP_SIZE     0x00000C00
 
-/*--------------------- CMSE Venner Configuration ---------------------------
-; <h> CMSE Venner Configuration
-;   <o0>  CMSE Venner Size (in Bytes) <0x0-0xFFFFFFFF:32>
+/*--------------------- CMSE Veneer Configuration ---------------------------
+; <h> CMSE Veneer Configuration
+;   <o0>  CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
 ; </h>
  *----------------------------------------------------------------------------*/
 #define __CMSEVENEER_SIZE    0x200
@@ -112,7 +112,7 @@ LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
 }
 
 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
-LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Venners
+LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Veneers
   ER_CMSE_VENEER __CV_BASE __CV_SIZE  {
    *(Veneer$$CMSE)
   }

+ 4 - 4
CMSIS/CoreValidation/Tests/config/core_m/rtebuild_ns.sct

@@ -36,9 +36,9 @@
 #define __STACK_SIZE    0x00000400
 #define __HEAP_SIZE     0x00000C00
 
-/*--------------------- CMSE Venner Configuration ---------------------------
-; <h> CMSE Venner Configuration
-;   <o0>  CMSE Venner Size (in Bytes) <0x0-0xFFFFFFFF:32>
+/*--------------------- CMSE Veneer Configuration ---------------------------
+; <h> CMSE Veneer Configuration
+;   <o0>  CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
 ; </h>
  *----------------------------------------------------------------------------*/
 #define __CMSEVENEER_SIZE    0x200
@@ -115,7 +115,7 @@ LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
 }
 
 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
-LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Venners
+LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Veneers
   ER_CMSE_VENEER __CV_BASE __CV_SIZE  {
    *(Veneer$$CMSE)
   }

+ 4 - 4
CMSIS/CoreValidation/Tests/config/core_m/rtebuild_s.sct

@@ -36,9 +36,9 @@
 #define __STACK_SIZE    0x00000400
 #define __HEAP_SIZE     0x00000C00
 
-/*--------------------- CMSE Venner Configuration ---------------------------
-; <h> CMSE Venner Configuration
-;   <o0>  CMSE Venner Size (in Bytes) <0x0-0xFFFFFFFF:32>
+/*--------------------- CMSE Veneer Configuration ---------------------------
+; <h> CMSE Veneer Configuration
+;   <o0>  CMSE Veneer Size (in Bytes) <0x0-0xFFFFFFFF:32>
 ; </h>
  *----------------------------------------------------------------------------*/
 #define __CMSEVENEER_SIZE    0x200
@@ -115,7 +115,7 @@ LR_ROM __RO_BASE __RO_SIZE  {                       ; load region size_region
 }
 
 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
-LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Venners
+LR_CMSE_VENEER __CV_BASE ALIGN 32 __CV_SIZE  {      ; own load/execution region for CMSE Veneers
   ER_CMSE_VENEER __CV_BASE __CV_SIZE  {
    *(Veneer$$CMSE)
   }

+ 3 - 19
CMSIS/Core_A/Include/cmsis_gcc.h

@@ -1,11 +1,11 @@
 /**************************************************************************//**
  * @file     cmsis_gcc.h
  * @brief    CMSIS compiler specific macros, functions, instructions
- * @version  V1.3.1
- * @date     05. May 2021
+ * @version  V1.3.2
+ * @date     24. March 2022
  ******************************************************************************/
 /*
- * Copyright (c) 2009-2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2009-2022 Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -459,23 +459,7 @@ __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
 __STATIC_FORCEINLINE  uint32_t __RBIT(uint32_t value)
 {
   uint32_t result;
-
-#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
-     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
-     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
    __ASM ("rbit %0, %1" : "=r" (result) : "r" (value) );
-#else
-  int32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */
-
-  result = value;                      /* r will be reversed bits of v; first get LSB of v */
-  for (value >>= 1U; value; value >>= 1U)
-  {
-    result <<= 1U;
-    result |= value & 1U;
-    s--;
-  }
-  result <<= s;                        /* shift when v's highest bits are zero */
-#endif
   return result;
 }
 

+ 22 - 22
CMSIS/DAP/Firmware/Config/DAP_config.h

@@ -30,9 +30,9 @@
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Debug_gr CMSIS-DAP Debug Unit Information
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 Provides definitions about the hardware and configuration of the Debug Unit.
 
@@ -59,7 +59,7 @@ This information includes:
 /// This value is used to calculate the SWD/JTAG clock speed that is generated with I/O
 /// Port write operations in the Debug Unit by a Cortex-M MCU. Most Cortex-M processors
 /// require 2 processor cycles for a I/O Port Write operation.  If the Debug Unit uses
-/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be 
+/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be
 /// required.
 #define IO_PORT_WRITE_CYCLES    2U              ///< I/O Cycles: 2=default, 1=Cortex-M0+ fast I/0.
 
@@ -263,13 +263,13 @@ __STATIC_INLINE uint8_t DAP_GetProductFirmwareVersionString (char *str) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_PortIO_gr CMSIS-DAP Hardware I/O Pin Access
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 
 Standard I/O Pins of the CMSIS-DAP Hardware Debug Port support standard JTAG mode
-and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug 
+and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug
 interface of a device. The following I/O Pins are provided:
 
 JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mode
@@ -277,19 +277,19 @@ JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mod
 TCK: Test Clock              | SWCLK: Clock         | Output Push/Pull
 TMS: Test Mode Select        | SWDIO: Data I/O      | Output Push/Pull; Input (for receiving data)
 TDI: Test Data Input         |                      | Output Push/Pull
-TDO: Test Data Output        |                      | Input             
+TDO: Test Data Output        |                      | Input
 nTRST: Test Reset (optional) |                      | Output Open Drain with pull-up resistor
 nRESET: Device Reset         | nRESET: Device Reset | Output Open Drain with pull-up resistor
 
 
 DAP Hardware I/O Pin Access Functions
 -------------------------------------
-The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to 
-these I/O Pins. 
+The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to
+these I/O Pins.
 
 For the SWDIO I/O Pin there are additional functions that are called in SWD I/O mode only.
-This functions are provided to achieve faster I/O that is possible with some advanced GPIO 
-peripherals that can independently write/read a single I/O pin without affecting any other pins 
+This functions are provided to achieve faster I/O that is possible with some advanced GPIO
+peripherals that can independently write/read a single I/O pin without affecting any other pins
 of the same I/O port. The following SWDIO I/O Pin functions are provided:
  - \ref PIN_SWDIO_OUT_ENABLE to enable the output mode from the DAP hardware.
  - \ref PIN_SWDIO_OUT_DISABLE to enable the input mode to the DAP hardware.
@@ -304,16 +304,16 @@ of the same I/O port. The following SWDIO I/O Pin functions are provided:
 Configures the DAP Hardware I/O pins for JTAG mode:
  - TCK, TMS, TDI, nTRST, nRESET to output mode and set to high level.
  - TDO to input mode.
-*/ 
+*/
 __STATIC_INLINE void PORT_JTAG_SETUP (void) {
   ;
 }
- 
+
 /** Setup SWD I/O pins: SWCLK, SWDIO, and nRESET.
 Configures the DAP Hardware I/O pins for Serial Wire Debug (SWD) mode:
  - SWCLK, SWDIO, nRESET to output mode and set to default high level.
  - TDI, nTRST to HighZ mode (pins are unused in SWD mode).
-*/ 
+*/
 __STATIC_INLINE void PORT_SWD_SETUP (void) {
   ;
 }
@@ -393,7 +393,7 @@ Configure the SWDIO DAP hardware I/O pin to output mode. This function is
 called prior \ref PIN_SWDIO_OUT function calls.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_OUT_ENABLE  (void) {
-  ; 
+  ;
 }
 
 /** SWDIO I/O pin: Switch to Input mode (used in SWD mode only).
@@ -447,7 +447,7 @@ __STATIC_FORCEINLINE uint32_t PIN_nTRST_IN   (void) {
            - 1: release JTAG TRST Test Reset.
 */
 __STATIC_FORCEINLINE void     PIN_nTRST_OUT  (uint32_t bit) {
-  ; 
+  ;
 }
 
 // nRESET Pin I/O------------------------------------------
@@ -472,7 +472,7 @@ __STATIC_FORCEINLINE void     PIN_nRESET_OUT (uint32_t bit) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_LEDs_gr CMSIS-DAP Hardware Status LEDs
 \ingroup DAP_ConfigIO_gr
 @{
@@ -502,13 +502,13 @@ __STATIC_INLINE void LED_RUNNING_OUT (uint32_t bit) {}
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Timestamp_gr CMSIS-DAP Timestamp
 \ingroup DAP_ConfigIO_gr
 @{
 Access function for Test Domain Timer.
 
-The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By 
+The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By
 default, the DWT timer is used.  The frequency of this timer is configured with \ref TIMESTAMP_CLOCK.
 
 */
@@ -524,7 +524,7 @@ __STATIC_INLINE uint32_t TIMESTAMP_GET (void) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Initialization_gr CMSIS-DAP Initialization
 \ingroup DAP_ConfigIO_gr
 @{
@@ -533,7 +533,7 @@ CMSIS-DAP Hardware I/O and LED Pins are initialized with the function \ref DAP_S
 */
 
 /** Setup of the Debug Unit I/O pins and LEDs (called when Debug Unit is initialized).
-This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the 
+This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the
 Status LEDs. In detail the operation of Hardware I/O and LED pins are enabled and set:
  - I/O clock system enabled.
  - all I/O pins: input buffer enabled, output pins are set to HighZ mode.
@@ -546,7 +546,7 @@ __STATIC_INLINE void DAP_SETUP (void) {
 
 /** Reset Target Device with custom specific I/O pin or command sequence.
 This function allows the optional implementation of a device specific reset sequence.
-It is called when the command \ref DAP_ResetTarget and is for example required 
+It is called when the command \ref DAP_ResetTarget and is for example required
 when a device needs a time-critical unlock sequence that enables the debug port.
 \return 0 = no device specific reset sequence is implemented.\n
         1 = a device specific reset sequence is implemented.

+ 1 - 1
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/CMSIS_DAP.uvguix → CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvguix

@@ -1864,7 +1864,7 @@
       <Size>100</Size>
       <ActiveTab>0</ActiveTab>
       <Doc>
-        <Name>.\Abstract.txt</Name>
+        <Name>.\README.md</Name>
         <ColumnNumber>0</ColumnNumber>
         <TopLine>1</TopLine>
         <CurrentLine>1</CurrentLine>

+ 7 - 7
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/CMSIS_DAP.uvoptx → CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvoptx

@@ -432,8 +432,8 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>.\Abstract.txt</PathWithFileName>
-      <FilenameWithoutPath>Abstract.txt</FilenameWithoutPath>
+      <PathWithFileName>.\README.md</PathWithFileName>
+      <FilenameWithoutPath>README.md</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -464,7 +464,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\DAP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\DAP.c</PathWithFileName>
       <FilenameWithoutPath>DAP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -476,7 +476,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\JTAG_DP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\JTAG_DP.c</PathWithFileName>
       <FilenameWithoutPath>JTAG_DP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -488,7 +488,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\SW_DP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\SW_DP.c</PathWithFileName>
       <FilenameWithoutPath>SW_DP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -500,7 +500,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\SWO.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\SWO.c</PathWithFileName>
       <FilenameWithoutPath>SWO.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -512,7 +512,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\UART.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\UART.c</PathWithFileName>
       <FilenameWithoutPath>UART.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>

+ 16 - 16
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/CMSIS_DAP.uvprojx → CMSIS/DAP/Firmware/Examples/LPC-Link2/CMSIS_DAP.uvprojx

@@ -339,7 +339,7 @@
               <MiscControls></MiscControls>
               <Define></Define>
               <Undefine></Undefine>
-              <IncludePath>.;..\..\..\Include</IncludePath>
+              <IncludePath>.;..\..\Include</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -465,9 +465,9 @@
           <GroupName>Documentation</GroupName>
           <Files>
             <File>
-              <FileName>Abstract.txt</FileName>
+              <FileName>README.md</FileName>
               <FileType>5</FileType>
-              <FilePath>.\Abstract.txt</FilePath>
+              <FilePath>.\README.md</FilePath>
             </File>
           </Files>
         </Group>
@@ -482,27 +482,27 @@
             <File>
               <FileName>DAP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\DAP.c</FilePath>
+              <FilePath>..\..\Source\DAP.c</FilePath>
             </File>
             <File>
               <FileName>JTAG_DP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\JTAG_DP.c</FilePath>
+              <FilePath>..\..\Source\JTAG_DP.c</FilePath>
             </File>
             <File>
               <FileName>SW_DP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SW_DP.c</FilePath>
+              <FilePath>..\..\Source\SW_DP.c</FilePath>
             </File>
             <File>
               <FileName>SWO.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SWO.c</FilePath>
+              <FilePath>..\..\Source\SWO.c</FilePath>
             </File>
             <File>
               <FileName>UART.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\UART.c</FilePath>
+              <FilePath>..\..\Source\UART.c</FilePath>
             </File>
           </Files>
         </Group>
@@ -853,7 +853,7 @@
               <MiscControls></MiscControls>
               <Define>TARGET_POWER_EN LPC_LINK2_ONBOARD</Define>
               <Undefine></Undefine>
-              <IncludePath>.;..\..\..\Include</IncludePath>
+              <IncludePath>.;..\..\Include</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -928,9 +928,9 @@
           <GroupName>Documentation</GroupName>
           <Files>
             <File>
-              <FileName>Abstract.txt</FileName>
+              <FileName>README.md</FileName>
               <FileType>5</FileType>
-              <FilePath>.\Abstract.txt</FilePath>
+              <FilePath>.\README.md</FilePath>
             </File>
           </Files>
         </Group>
@@ -945,27 +945,27 @@
             <File>
               <FileName>DAP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\DAP.c</FilePath>
+              <FilePath>..\..\Source\DAP.c</FilePath>
             </File>
             <File>
               <FileName>JTAG_DP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\JTAG_DP.c</FilePath>
+              <FilePath>..\..\Source\JTAG_DP.c</FilePath>
             </File>
             <File>
               <FileName>SW_DP.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SW_DP.c</FilePath>
+              <FilePath>..\..\Source\SW_DP.c</FilePath>
             </File>
             <File>
               <FileName>SWO.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SWO.c</FilePath>
+              <FilePath>..\..\Source\SWO.c</FilePath>
             </File>
             <File>
               <FileName>UART.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\Source\UART.c</FilePath>
+              <FilePath>..\..\Source\UART.c</FilePath>
             </File>
           </Files>
         </Group>

+ 20 - 20
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/DAP_config.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/DAP_config.h

@@ -30,9 +30,9 @@
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Debug_gr CMSIS-DAP Debug Unit Information
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 Provides definitions about the hardware and configuration of the Debug Unit.
 
@@ -64,7 +64,7 @@ This information includes:
 /// This value is used to calculate the SWD/JTAG clock speed that is generated with I/O
 /// Port write operations in the Debug Unit by a Cortex-M MCU. Most Cortex-M processors
 /// require 2 processor cycles for a I/O Port Write operation.  If the Debug Unit uses
-/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be 
+/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be
 /// required.
 #define IO_PORT_WRITE_CYCLES    2U              ///< I/O Cycles: 2=default, 1=Cortex-M0+ fast I/0.
 
@@ -339,13 +339,13 @@ __STATIC_INLINE uint8_t DAP_GetProductFirmwareVersionString (char *str) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_PortIO_gr CMSIS-DAP Hardware I/O Pin Access
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 
 Standard I/O Pins of the CMSIS-DAP Hardware Debug Port support standard JTAG mode
-and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug 
+and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug
 interface of a device. The following I/O Pins are provided:
 
 JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mode
@@ -353,19 +353,19 @@ JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mod
 TCK: Test Clock              | SWCLK: Clock         | Output Push/Pull
 TMS: Test Mode Select        | SWDIO: Data I/O      | Output Push/Pull; Input (for receiving data)
 TDI: Test Data Input         |                      | Output Push/Pull
-TDO: Test Data Output        |                      | Input             
+TDO: Test Data Output        |                      | Input
 nTRST: Test Reset (optional) |                      | Output Open Drain with pull-up resistor
 nRESET: Device Reset         | nRESET: Device Reset | Output Open Drain with pull-up resistor
 
 
 DAP Hardware I/O Pin Access Functions
 -------------------------------------
-The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to 
-these I/O Pins. 
+The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to
+these I/O Pins.
 
 For the SWDIO I/O Pin there are additional functions that are called in SWD I/O mode only.
-This functions are provided to achieve faster I/O that is possible with some advanced GPIO 
-peripherals that can independently write/read a single I/O pin without affecting any other pins 
+This functions are provided to achieve faster I/O that is possible with some advanced GPIO
+peripherals that can independently write/read a single I/O pin without affecting any other pins
 of the same I/O port. The following SWDIO I/O Pin functions are provided:
  - \ref PIN_SWDIO_OUT_ENABLE to enable the output mode from the DAP hardware.
  - \ref PIN_SWDIO_OUT_DISABLE to enable the input mode to the DAP hardware.
@@ -385,17 +385,17 @@ of the same I/O port. The following SWDIO I/O Pin functions are provided:
 Configures the DAP Hardware I/O pins for JTAG mode:
  - TCK, TMS, TDI, nTRST, nRESET to output mode and set to high level.
  - TDO to input mode.
-*/ 
+*/
 __STATIC_INLINE void PORT_JTAG_SETUP (void) {
   LPC_GPIO_PORT->MASK[PIN_SWDIO_TMS_PORT] = 0U;
   LPC_GPIO_PORT->MASK[PIN_TDI_PORT] = ~(1U << PIN_TDI_BIT);
 }
- 
+
 /** Setup SWD I/O pins: SWCLK, SWDIO, and nRESET.
 Configures the DAP Hardware I/O pins for Serial Wire Debug (SWD) mode:
  - SWCLK, SWDIO, nRESET to output mode and set to default high level.
  - TDI, nTRST to HighZ mode (pins are unused in SWD mode).
-*/ 
+*/
 __STATIC_INLINE void PORT_SWD_SETUP (void) {
   LPC_GPIO_PORT->MASK[PIN_TDI_PORT] = 0U;
   LPC_GPIO_PORT->MASK[PIN_SWDIO_TMS_PORT] = ~(1U << PIN_SWDIO_TMS_BIT);
@@ -567,7 +567,7 @@ __STATIC_FORCEINLINE void     PIN_nRESET_OUT (uint32_t bit) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_LEDs_gr CMSIS-DAP Hardware Status LEDs
 \ingroup DAP_ConfigIO_gr
 @{
@@ -602,13 +602,13 @@ __STATIC_INLINE void LED_RUNNING_OUT (uint32_t bit) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Timestamp_gr CMSIS-DAP Timestamp
 \ingroup DAP_ConfigIO_gr
 @{
 Access function for Test Domain Timer.
 
-The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By 
+The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By
 default, the DWT timer is used.  The frequency of this timer is configured with \ref TIMESTAMP_CLOCK.
 
 */
@@ -624,7 +624,7 @@ __STATIC_INLINE uint32_t TIMESTAMP_GET (void) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Initialization_gr CMSIS-DAP Initialization
 \ingroup DAP_ConfigIO_gr
 @{
@@ -633,7 +633,7 @@ CMSIS-DAP Hardware I/O and LED Pins are initialized with the function \ref DAP_S
 */
 
 /** Setup of the Debug Unit I/O pins and LEDs (called when Debug Unit is initialized).
-This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the 
+This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the
 Status LEDs. In detail the operation of Hardware I/O and LED pins are enabled and set:
  - I/O clock system enabled.
  - all I/O pins: input buffer enabled, output pins are set to HighZ mode.
@@ -694,7 +694,7 @@ __STATIC_INLINE void DAP_SETUP (void) {
 
 /** Reset Target Device with custom specific I/O pin or command sequence.
 This function allows the optional implementation of a device specific reset sequence.
-It is called when the command \ref DAP_ResetTarget and is for example required 
+It is called when the command \ref DAP_ResetTarget and is for example required
 when a device needs a time-critical unlock sequence that enables the debug port.
 \return 0 = no device specific reset sequence is implemented.\n
         1 = a device specific reset sequence is implemented.

+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/DebugConfig/LPC-Link2_LPC4370_Cortex-M4.dbgconf → CMSIS/DAP/Firmware/Examples/LPC-Link2/DebugConfig/LPC-Link2_LPC4370_Cortex-M4.dbgconf


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/DebugConfig/LPC-Link2_on-board_LPC4322_Cortex-M4.dbgconf → CMSIS/DAP/Firmware/Examples/LPC-Link2/DebugConfig/LPC-Link2_on-board_LPC4322_Cortex-M4.dbgconf


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/Objects/CMSIS_DAP.hex → CMSIS/DAP/Firmware/Examples/LPC-Link2/Objects/CMSIS_DAP.hex


+ 8 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/README.md

@@ -0,0 +1,8 @@
+CMSIS-DAP v2 firmware for NXP LPC-Link2 debug probe.
+
+CMSIS-DAP v2 uses USB bulk endpoints for the communication with the host PC and is therefore faster.
+Optionally, support for streaming SWO trace is provided via an additional USB endpoint.
+
+Following targets are available:
+ - LPC-Link2: stand-alone debug probe
+ - LPC-Link2 on-board: on-board debug probe (LPC55S69-EVK, MIMXRT1064-EVK, ...)

+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/CMSIS/RTX_Config.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/CMSIS/RTX_Config.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/CMSIS/RTX_Config.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/CMSIS/RTX_Config.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4322_Cortex-M4/RTE_Device.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/RTE_Device.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/Device/LPC4370_Cortex-M4/startup_LPC43xx.s → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/startup_LPC43xx.s


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/Device/LPC4370_Cortex-M4/system_LPC43xx.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4322_Cortex-M4/system_LPC43xx.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4370_Cortex-M4/RTE_Device.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/RTE_Device.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4322_Cortex-M4/startup_LPC43xx.s → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/startup_LPC43xx.s


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4322_Cortex-M4/system_LPC43xx.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/Device/LPC4370_Cortex-M4/system_LPC43xx.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/USB/USBD_Config_0.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_0.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/USB/USBD_Config_CDC_0.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_CDC_0.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/USB/USBD_Config_CustomClass_0.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/RTE/USB/USBD_Config_CustomClass_0.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/USBD_User_CDC_ACM_UART_0.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/USBD_User_CDC_ACM_UART_0.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/USBD_User_CustomClass_0.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/USBD_User_CustomClass_0.c


+ 0 - 4
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/Abstract.txt

@@ -1,4 +0,0 @@
-CMSIS-DAP V1 USB HID Firmware for NXP LPC-Link2 debug probe.
-
-CMSIS-DAP with V1 configuration uses USB HID interface to host PC and is 
-therefore compatible with previous versions of CMSIS-DAP.

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1801
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/CMSIS_DAP.uvguix


+ 0 - 664
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/CMSIS_DAP.uvprojx

@@ -1,664 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>LPC-Link2</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed>
-      <uAC6>1</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>LPC4370:Cortex-M4</Device>
-          <Vendor>NXP</Vendor>
-          <PackID>Keil.LPC4300_DFP.2.9.0</PackID>
-          <PackURL>http://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x10000000,0x20000) IRAM2(0x20000000,0x10000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD10000000 -FC1000)</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:LPC4370$Device\Include\LPC43xx.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:LPC4370$SVD\LPC43xx.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>CMSIS_DAP</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>0</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --bin -o  "$L@L.bin" "#L"</UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments>  -MPU</SimDllArguments>
-          <SimDlgDll>DCM.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> -MPU</TargetDllArguments>
-          <TargetDlgDll>TCM.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>0</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4096</DriverSelection>
-          </Flash1>
-          <bUseTDR>1</bUseTDR>
-          <Flash2>BIN\UL2CM3.DLL</Flash2>
-          <Flash3></Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M4"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>1</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>0</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>2</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <RvdsCdeCp>0</RvdsCdeCp>
-            <hadIRAM2>1</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>1</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>0</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>0</RoSelD>
-            <RwSelD>4</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>1</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>0</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>1</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x10000000</StartAddress>
-                <Size>0x20000</Size>
-              </IRAM>
-              <IROM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x14000000</StartAddress>
-                <Size>0x400000</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x10000000</StartAddress>
-                <Size>0x20000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x10000</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>4</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>3</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>0</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>0</v6Lang>
-            <v6LangP>3</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>DAP_FW_V1</Define>
-              <Undefine></Undefine>
-              <IncludePath>.;..\..\..\Include</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <ClangAsOpt>1</ClangAsOpt>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>1</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x00000000</TextAddressRange>
-            <DataAddressRange>0x10000000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile></ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>Source</GroupName>
-          <Files>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\main.c</FilePath>
-            </File>
-            <File>
-              <FileName>USBD_User_HID_0.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>.\USBD_User_HID_0.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>Documentation</GroupName>
-          <Files>
-            <File>
-              <FileName>Abstract.txt</FileName>
-              <FileType>5</FileType>
-              <FilePath>.\Abstract.txt</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>CMSIS DAP</GroupName>
-          <Files>
-            <File>
-              <FileName>DAP_config.h</FileName>
-              <FileType>5</FileType>
-              <FilePath>.\DAP_config.h</FilePath>
-            </File>
-            <File>
-              <FileName>DAP.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\Source\DAP.c</FilePath>
-            </File>
-            <File>
-              <FileName>JTAG_DP.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\Source\JTAG_DP.c</FilePath>
-            </File>
-            <File>
-              <FileName>SW_DP.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SW_DP.c</FilePath>
-            </File>
-            <File>
-              <FileName>SWO.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\Source\SWO.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>2</IncludeInBuild>
-                  <AlwaysBuild>2</AlwaysBuild>
-                  <GenerateAssemblyFile>2</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>2</AssembleAssemblyFile>
-                  <PublicsOnly>2</PublicsOnly>
-                  <StopOnExitCode>11</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>2</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <uGnu>2</uGnu>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls></MiscControls>
-                      <Define>USART_PORT=1</Define>
-                      <Undefine></Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>::CMSIS</GroupName>
-        </Group>
-        <Group>
-          <GroupName>::CMSIS Driver</GroupName>
-        </Group>
-        <Group>
-          <GroupName>::Device</GroupName>
-        </Group>
-        <Group>
-          <GroupName>::USB</GroupName>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis>
-      <api Capiversion="2.01" Cclass="CMSIS Driver" Cgroup="USART" exclusive="0">
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.3.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </api>
-      <api Capiversion="2.01" Cclass="CMSIS Driver" Cgroup="USB Device" exclusive="0">
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.3.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </api>
-      <api Capiversion="2.1.2" Cclass="CMSIS" Cgroup="RTOS2" exclusive="1">
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.2.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </api>
-    </apis>
-    <components>
-      <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.4.0" condition="ARMv6_7_8-M Device">
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.2" condition="RTOS2 RTX5">
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cbundle="MDK-Pro" Cclass="USB" Cgroup="CORE" Cvariant="Release" Cvendor="Keil" Cversion="6.14.4" condition="USB Core">
-        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.12.1-dev21-emWin"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cbundle="MDK-Pro" Cclass="USB" Cgroup="Device" Cvendor="Keil" Cversion="6.14.4" condition="USB Core and Device Instance and Device Driver" maxInstances="4">
-        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.12.1-dev21-emWin"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cbundle="MDK-Pro" Cclass="USB" Cgroup="Device" Csub="HID" Cvendor="Keil" Cversion="6.14.4" condition="USB Core and Device Instance and Device Driver" maxInstances="4">
-        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.12.1-dev21-emWin"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Capiversion="2.1" Cclass="CMSIS Driver" Cgroup="USART" Cvendor="Keil" Cversion="2.14" condition="LPC4300 CMSIS SCU GPDMA">
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Capiversion="2.1" Cclass="CMSIS Driver" Cgroup="USB Device" Csub="USB0" Cvendor="Keil" Cversion="2.12" condition="LPC4300 CMSIS SCU">
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cclass="Device" Cgroup="GPDMA" Cvendor="Keil" Cversion="1.6" condition="LPC4300 CMSIS">
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cclass="Device" Cgroup="SCU" Cvendor="Keil" Cversion="1.1" condition="LPC4300 CMSIS">
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </component>
-      <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="1.0.0" condition="LPC4300 CMSIS">
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2">
-            <c>
-              <Define>USE_SPIFI=1</Define>
-            </c>
-            <asm>
-              <Define>NO_CRP</Define>
-            </asm>
-          </targetInfo>
-        </targetInfos>
-      </component>
-    </components>
-    <files>
-      <file attr="config" category="source" name="CMSIS\RTOS2\RTX\Config\RTX_Config.c" version="5.1.0">
-        <instance index="0">RTE\CMSIS\RTX_Config.c</instance>
-        <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.2" condition="RTOS2 RTX5"/>
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="header" name="CMSIS\RTOS2\RTX\Config\RTX_Config.h" version="5.5.1">
-        <instance index="0">RTE\CMSIS\RTX_Config.h</instance>
-        <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.2" condition="RTOS2 RTX5"/>
-        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="header" name="RTE_Driver\Config\RTE_Device.h" version="2.2.1">
-        <instance index="0">RTE\Device\LPC4370_Cortex-M4\RTE_Device.h</instance>
-        <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="1.0.0" condition="LPC4300 CMSIS"/>
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="source" condition="CM4 ARM Compiler" name="Device\Source\ARM\startup_LPC43xx.s" version="1.0.0">
-        <instance index="0">RTE\Device\LPC4370_Cortex-M4\startup_LPC43xx.s</instance>
-        <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="1.0.0" condition="LPC4300 CMSIS"/>
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="source" condition="CM4" name="Device\Source\system_LPC43xx.c" version="1.0.3">
-        <instance index="0">RTE\Device\LPC4370_Cortex-M4\system_LPC43xx.c</instance>
-        <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="1.0.0" condition="LPC4300 CMSIS"/>
-        <package name="LPC4300_DFP" schemaVersion="1.4.9" url="http://www.keil.com/pack/" vendor="Keil" version="2.9.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="source" name="USB\Config\USBD_Config.c" version="5.2.0">
-        <instance index="0">RTE\USB\USBD_Config_0.c</instance>
-        <component Cbundle="MDK-Pro" Cclass="USB" Cgroup="Device" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4"/>
-        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-      <file attr="config" category="header" name="USB\Config\USBD_Config_HID.h" version="5.0.2">
-        <instance index="0">RTE\USB\USBD_Config_HID_0.h</instance>
-        <component Cbundle="MDK-Pro" Cclass="USB" Cgroup="Device" Csub="HID" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4"/>
-        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
-        <targetInfos>
-          <targetInfo name="LPC-Link2"/>
-        </targetInfos>
-      </file>
-    </files>
-  </RTE>
-
-  <LayerInfo>
-    <Layers>
-      <Layer>
-        <LayName>CMSIS_DAP</LayName>
-        <LayPrjMark>1</LayPrjMark>
-      </Layer>
-    </Layers>
-  </LayerInfo>
-
-</Project>

+ 0 - 3459
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/Objects/CMSIS_DAP.hex

@@ -1,3459 +0,0 @@
-:020000041400E6
-:10000000D07C0010FD7A0014057B0014077B0014DF
-:10001000097B00140B7B00140D7B00145A5A5A5AAA
-:100020000000000000000000000000001D88001417
-:10003000117B001400000000B5880014C58800146E
-:10004000177B0014177B00142D78001400000000AB
-:10005000177B0014177B0014177B0014177B001408
-:10006000C5620014177B0014177B0014177B001463
-:10007000177B0014177B0014177B0014177B0014E8
-:10008000177B0014177B0014177B0014177B0014D8
-:10009000177B0014177B0014177B0014177B0014C8
-:1000A000177B001409570014177B0014177B0014EA
-:1000B000177B0014177B0014177B0014177B0014A8
-:1000C000177B0014177B0014177B0014177B001498
-:1000D000177B0014177B0014177B0014177B001488
-:1000E000177B0014177B0014177B0014177B001478
-:1000F00000000000177B0014177B0014177B00140E
-:1001000000000000177B0014177B0014177B0014FD
-:10011000177B0014DFF80CD008F056FC00480047AD
-:1001200081010014D07C001001F00AFF00200BF0C8
-:10013000ABFD00200AF092F900200AF07DF90028BA
-:10014000FAD044F20804C4F20F04012020704FF4E6
-:10015000FA7000F021F90020207040F2B120C1F2C5
-:1001600000400021002209F047FB40F63C11C1F29B
-:10017000000108604FF0FF3008F04EFDFEE700BFC1
-:1001800008F0A8F808F086FD40F22910C1F20040FE
-:100190000021002209F030FB08F050FD012808BFC3
-:1001A00008F08EFDFEE7000040F60000C1F20000FE
-:1001B000002141808180C180018141818181C18193
-:1001C0000182012101707047704700BF10B50128FE
-:1001D0004FF0000008BF012900D010BD40F6000418
-:1001E000C1F20004E089218A884203D101202070F5
-:1001F000002010BDA08943F67E11C1F2000101EB81
-:10020000802118464FF4806208F09BFBA0890130E2
-:10021000A081A089042804BF0020A081208A013089
-:1002200020824FF4806010BD10B502283DD1029AA3
-:10023000DAB31878072807D140F61400C1F200009D
-:1002400001210170012010BD40F60004C1F200043C
-:10025000E0882189401A80B2042809D140F63C1078
-:10026000C1F200000068802109F088FA012010BD69
-:10027000608842F67E11C1F2000101EB8020194630
-:1002800008F05FFB608801210130608060880428ED
-:1002900004BF00206080E0880130E08040F63C1020
-:1002A000C1F20000006809F069FA012010BD00BF2A
-:1002B00040F6000542F67E1643F67E184FF0000920
-:1002C000C1F20005C1F200067F27C1F2000800BF9D
-:1002D000812000214FF0FF3209F07CFAE88829895B
-:1002E0008842F5D0AC88A002305C7E2818D106EB9D
-:1002F000842005E0A002305C7E2806EB84200FD12C
-:100300000770601C6988041F18BF04468C42F1D135
-:10031000812000214FF0FF3209F05CFA0006E9D598
-:10032000A888698906EB802008EB812101F0DEFDB9
-:10033000A8880130A880A888042808BFA5F80490E0
-:1003400028890130288168890130688168890428FA
-:1003500008BFA5F80A90E8890130E88128780028CC
-:10036000BCD0E889298A8842B8D0A8894FF4806334
-:10037000411CA981A98908EB8022042908BFA5F89E
-:100380000C90298A002001312982002185F80090F3
-:100390000BF0B6FAA2E700004EF660214843401E7B
-:1003A000FDD17047FF224FF001100A70704700BF67
-:1003B0002DE9F04F89B0814690F900000D46B0F16B
-:1003C000FF3FC0B208DC9F2806D84846294609B03E
-:1003D000BDE8F04FFFF7E6BFAA460AF8010B4E460C
-:1003E00016F8010B1E2800F2B182DFE810F01F00A2
-:1003F0003F0051006F009B00B3005B02AF02B702E9
-:10040000D502E902AF02AF02AF02AF02AF02F302C0
-:100410003103450361036F03A703BF03E303ED0348
-:10042000F70301040B0415041F0467043278A91CA8
-:10043000A2F1F0030F2B4FF0000001F26180DFE822
-:1004400013F01100E308F708F708F708F708F708B2
-:10045000F708F708F708F708F708F708E908EF08BA
-:10046000F30800BF372001F0E1B800BF3078012861
-:1004700000F09982002840F0458499F8020044F287
-:10048000080100F00100C4F20F0108708BE200BF08
-:1004900031780020002908BF0121022900F03484AE
-:1004A000012940F0428440F61401C1F2000101200C
-:1004B000087146F20011C4F20F01002241F8802CAD
-:1004C0006FF4007241F87C2C00F02FBC40F6140051
-:1004D000C1F200000021017146F20010C4F20F00C9
-:1004E0004FF48052C0F800214FF40072C0F804218C
-:1004F0004FF48072C0F804214FF40052C0F800217C
-:1005000050F8EC2C012422F0200240F8EC2C402280
-:10051000C0F894218AF8001004F1011009B0BDE878
-:10052000F08F00BF99F8010040F61401C1F20001FC
-:100530000874B9F8020001248882B9F80400C0F2F6
-:100540000504C88200208AF8000004F1011009B0F7
-:10055000BDE8F08F40F6140BC1F2000B9BF80400CD
-:10056000022800F0EB83012840F0D8854FF0000806
-:100570008BF8008099F80230E81C0790002B09F1F5
-:1005800003074FF0000001F0748404904FF0000E58
-:10059000002000219846B9460691059319F8014BB1
-:1005A000A10713D4BEF1000F52D00397BBF814700B
-:1005B0000E2008A902F04EFFC7B3022836D19BF8DF
-:1005C0000000013F0028F3D001F054B8BEF1000F45
-:1005D0002AD00397BBF8147004F011000128029090
-:1005E00010D10137204608A902F034FF02285FD15C
-:1005F000013F01F03F809BF800000028F2D001F09D
-:1006000039B800BF0E2008A902F024FF002F4FF0D8
-:10061000000E4FD002284DD19BF80000013F00286A
-:10062000F0D001F0D3B800BF002368E0012841F00A
-:100630003584DDE9071008700898000A4870BDF895
-:10064000220088709DF82300C870081D0790039F42
-:10065000D7F80100A10607F10509089010D4BBF8EE
-:100660001470204608A902F0F5FE7FB102280DD1D2
-:100670009BF80000013F0028F3D001F0A7B800BFAD
-:10068000CBF818004FF0000E0120DEE0012841F009
-:100690000984200605D5DBF80C00079941F8040B06
-:1006A00007914FF0000E012001210491CDE000BF21
-:1006B0004FF0010E012841F08C80DDE90710029B0C
-:1006C00008700898039F000A4870BDF822000A1DB0
-:1006D00088709DF82300012BC8700DD1200605D528
-:1006E0000799DBF80C0001F10802486000210120A5
-:1006F0000123079204E000BF00230120079201219B
-:10070000E206039314D45F46BBF814B0E20729D184
-:10071000204608A902F09EFEBBF1000F34D002284B
-:1007200032D13878ABF1010B0028F1D001F0A4B937
-:10073000D7F8010007F105090290BBF816000190F7
-:10074000E00730D0BBF814702046002102F082FE92
-:1007500027B3022822D19BF80000013F0028F3D0E4
-:1007600001F032BA002959D02046002102F072FE71
-:10077000BBF1000F58D0022856D13878ABF1010BED
-:100780000028F1D001F078B9012841F07681DDF838
-:100790000CE02006BB4669D407996CE0DDF80CE05C
-:1007A000012841F01680BBF81470204608A902F019
-:1007B00051FE3FB1022805D19BF80000013F0028FF
-:1007C000F3D017E0012816D1019BDDF80CE04FF0C3
-:1007D000010093B10899DBF818201140029A914268
-:1007E0000BD09BF80000013B00280193DBD00120D7
-:1007F00001E000BF0220DDF80CE00899DBF81820CA
-:100800001140029A914218BF40F01000012840F0B8
-:10081000E08700200490012017E000BF0021049130
-:100820004FF0010EBB4610E0012841F02681200662
-:10083000BB4605D5DBF80C00079941F8040B07917E
-:100840000020049001204FF0010E059B9BF8001042
-:100850000029069901F10101069140F0BA87B8F12B
-:1008600001084F467FF49AAE01F0FEBADBF80C00A7
-:10087000079941F8040B0898059B01F8040B0898A8
-:100880000A46000A01F8030CBDF82200079101F89E
-:10089000020C9DF8230001F8010C002004900120B7
-:1008A000D4E700BF40F61407C1F2000738790228E8
-:1008B00000F05284012840F0AB8400223A70B9F86D
-:1008C000021005F1040B002900F07C8599F8044022
-:1008D000A00700F1B58600200DF12008CDF814B076
-:1008E0000790049156F8040FBB46BF8A0139069160
-:1008F00008902046414602F0ADFD4FB1022807D1D5
-:100900009BF80000013F0028F3D000F0ADBE00BF0F
-:100910000699012840F0A9860798002900F10100F6
-:100920005F460790DED1B88A441C0E20002102F0F9
-:1009300091FD022841F0BB82013C01F0B78238787A
-:1009400000284FF00200F0D001F0B1BAFF2028706B
-:100950004FF0011009B0BDE8F08F00BF40F6140061
-:10096000C1F200000179022900F05A84012940F007
-:100970006784D9F802000124089008A90020C0F279
-:100980000504002502F066FD8AF8005004F101100C
-:1009900009B0BDE8F08F00BFB9F80100C0EB00104E
-:1009A0008000401EFDD100208AF800000120C0F226
-:1009B0000500A0F5403404F1011009B0BDE8F08F46
-:1009C0000020A5F80100022404F1011009B0BDE8DF
-:1009D000F08F00BF99F8023099F80140D9F8032050
-:1009E00046F2001013F00109C4F20F0007D0E1072E
-:1009F0004FF480510CBFC0F88011C0F8001113F003
-:100A0000020E08D0A6074FF482764FF4007558BF47
-:100A10004FF4C276855113F0040B1EBF4FF4FC2532
-:100A200005EAC425C0F8805013F08001079100F05A
-:100A3000D684250600F1CA844025C0F8145150F828
-:100A4000EC5C45F0200540F8EC5C00F0C8BC00BF51
-:100A5000D9F80100002800F03D814AF24051C0F26F
-:100A6000AE218842C0F0F08340F61401C1F20001CB
-:100A70000120487100F0FFBB99F8014009F1020123
-:100A8000002C08BF4FF48074204602F04BFC00207D
-:100A90008AF800004FF4604000EB44303FFA80F0E9
-:100AA00000F1011404F1011009B0BDE8F08F00BF9E
-:100AB000307840F6140200F003010131C1F2000267
-:100AC000C0F380001177507700202EE100208AF8D3
-:100AD000000096F800A0BAF1000F00F0FD8009F1C7
-:100AE000020402354FF001084FF0010914F8016BC0
-:100AF0002A4616F03F0000F107004FEAD0073046C3
-:100B00002146AAF1010A08BF082701F08FFA09EB74
-:100B1000070016F080013C441CBF3D44B844BAF1C4
-:100B2000000F00F10109E1D14FEA094048EA000451
-:100B300004F1011009B0BDE8F08F00BF96F8008005
-:100B400040F6140BC1F2000BB8F1000F8BF81E80B9
-:100B500000F02C84A8F1010CBCF1030F08F0030E87
-:100B600080F09C8300240023BCE300BF40F6140007
-:100B7000C1F200000179022940F0AA803178827F19
-:100B8000C177914280F0A4800E2001F033FC01F087
-:100B9000C1FA00216970010AA870E970010C000E09
-:100BA000052429716871C0F2010404F1011009B033
-:100BB000BDE8F08F3046514603F06AFF044604F169
-:100BC000011009B0BDE8F08F3046514603F078FFC0
-:100BD000044604F1011009B0BDE8F08F30465146DB
-:100BE00003F096FF044604F1011009B0BDE8F08F50
-:100BF0003046514603F0A4FF044604F1011009B049
-:100C0000BDE8F08F504603F0CDFF044604F101101B
-:100C100009B0BDE8F08F00BF3046514604F0B8F887
-:100C2000044604F1011009B0BDE8F08F00208AF8F5
-:100C300000003678002E5BD009F1020405F1020BAA
-:100C40004FF001094FF4807A012704E078192C4411
-:100C5000471C013E2AD014F8010B46F2001210F096
-:100C60003F0101F107014FEAD1054FF4C27108BFFE
-:100C7000082510F0800808BF4FF48271C4F20F02FB
-:100C800042F801A021465A4602F07EFB012E02BF27
-:100C900046F20010C4F20F00C0F804A1B8F1000F32
-:100CA000D4D00137AB44A944013ED4D149EA07442A
-:100CB00004F1011009B0BDE8F08F00BF3046514685
-:100CC00003F0C4FF044604F1011009B0BDE8F08F41
-:100CD000FF202AE0FF20D4E24FF001084FF48030DB
-:100CE00048EA000404F1011009B0BDE8F08F00BF2C
-:100CF00001274FF0010949EA074404F1011009B046
-:100D0000BDE8F08FFF204FE640F61401C1F200016C
-:100D100002220A7146F20011C4F20F0141F87C0C64
-:100D20006FF4005041F8800C02208AF800004FF068
-:100D3000011404F1011009B0BDE8F08F00248BF814
-:100D4000004099F801009BF81E1005F1030E88423F
-:100D50008BF81F0080F0E08399F8021009F1030777
-:100D6000002900F02B850020079005224FF0000C91
-:100D70000020894605900291BB461BF8014B234693
-:100D8000A00762F35F0323D4BCF1000F6BD003977D
-:100D9000CDF818E0079898460A2802D00A2001F0FA
-:100DA00029FB40F61400C1F20000878A0E2008A932
-:100DB00001F004FDE7B302283AD140F61400C1F275
-:100DC00000000078013F0028F0D000F0E5BD00BF32
-:100DD000BCF1000F049327D040F614000799C1F22C
-:100DE0000000B0F8148081EA030004F01002104300
-:100DF00000920190CDF818E060D1039708F1010747
-:100E0000204608A901F0DAFC022840F08380013F67
-:100E100000F0C48540F61400C1F2000000780028FC
-:100E2000EED000F0BBBD00BF04F010009EE000BF9C
-:100E3000012841F03F8043460898DDF818800A21D8
-:100E400088F8000008980791000A88F80100BDF8AA
-:100E50002200039F88F802009DF8230088F8030011
-:100E600008F104008646D7F8010040F61408A106F0
-:100E700007F10507C1F20008089019D4CDF818E071
-:100E800004930798BB46984202D0049801F0B2FA46
-:100E9000B8F81470204608A901F090FC57B3022856
-:100EA00028D198F80000013F0028F3D000F086BE5A
-:100EB000C8F818004FF0000C1AE100BF0A2902D050
-:100EC0000A2001F097FA0E2008A901F077FC0A2207
-:100ED000B8F1000F4FF0000C20D002281ED140F6D0
-:100EE0001400C1F200000078A8F101080028EAD03F
-:100EF00000F076BE012840F0E987DDF818E0200612
-:100F0000049944BFD8F80C004EF8040B5F464FF02C
-:100F1000000CECE0039F079A4FF0010C01280792A8
-:100F200040F069860898DDF818C001998CF8000037
-:100F30000898B1FA81F1000A8CF80100BDF822008E
-:100F400049098CF802009DF82310049B0CF1040061
-:100F50008CF8031008D0210600F1AE804FF0010C90
-:100F600086465F46A2E000BF86460098CDF818E0AE
-:100F700040B3D7F80100B846039040F61400C1F220
-:100F80000000B0F816B00798984202D0049801F01B
-:100F900031FA40F61400C1F20000878A08F1050812
-:100FA0002046002101F00AFC57B3022828D140F660
-:100FB0001400C1F200000078013F0028F0D000F0DA
-:100FC00007BE00BF07989846984202D0404601F0FD
-:100FD00011FA40F61400C1F20000878A2046002171
-:100FE00001F0ECFB002F55D0022853D140F614003D
-:100FF000C1F200000078013F0028EFD000F0F6BDFC
-:10100000012840F0678740F61403C1F200039F8A6D
-:10101000204608A901F0D2FB57B1022808D140F6BA
-:101020001400C1F200000078013F0028F0D019E060
-:10103000012818D1BBF1000F4FF00100474667D0DF
-:1010400040F61403C1F2000308999A691140039A0B
-:1010500091420DD01878ABF1010B0028D7D00120B8
-:1010600005E000BF022040F61403C1F2000347462A
-:1010700008999A694FF0000C1140039A914218BFE9
-:1010800040F01000DDF818E00499012840F02687B0
-:1010900098462CE0012840F02587DDF818E020066E
-:1010A000414619D44FF0010C5F46079140F61408F1
-:1010B000C1F200081CE000BF40F61408C1F20008AD
-:1010C000D8F80C005F46CCF804000CF108004FF093
-:1010D000010C86460CE000BF40F61408C1F200087F
-:1010E000D8F80C004FF0010C4EF8040B5F46079146
-:1010F000059998F8000001310028059140F0C88654
-:10110000B9F101094FF005027FF436AE00F0C4BE1C
-:1011100040F61403C1F20003AAE700BF99F80200E9
-:1011200009F10301002800F02B8410F00303A0F163
-:10113000010C00F0E58399F8037009F10804F90641
-:10114000214658BF09F10401BF0758BF2146012BB2
-:1011500040F024836046D3E300223A703078B97FB0
-:1011600005F1040B8842F87780F02C81B9F8020071
-:101170000028069000F0268399F8048008F001000A
-:1011800004900A3001F036F95FEA887000F13A8382
-:101190000020CDF80CB00790069908AC56F8040F63
-:1011A000BB46BF8A0139059108904046214601F0AF
-:1011B00005FB3FB1022805D19BF80000013F002844
-:1011C000F3D031E30599012840F02F8307980029D7
-:1011D00000F101005F460790E0D1049810B10A20A9
-:1011E00001F008F9BBF81400441C0E20002101F0A6
-:1011F000E5FA022840F06586013C00F061869BF824
-:10120000000000284FF00200EFD000F05ABE00BFEF
-:101210000020A5F80100E870032000F008BE00BF20
-:101220003178827FC177914280F07C81082001F083
-:10123000E1F8D9F8020000F0F5FF002073E100BFEB
-:101240000124FF2070E100BF44F67F21C0F25D5110
-:101250000144B1FBF0F14AF6AB20CAF6AA20A1FB8B
-:10126000000240F61400C1F2000000234371012087
-:10127000022988BF500840F61401C1F200018860BD
-:1012800000208AF800000120C0F20500A0F580349B
-:1012900004F1011009B0BDE8F08F00BF08F0FC07B1
-:1012A0000024002309EB0406B5780BEB04010BEBDB
-:1012B000440081F820500385F2782B4481F82120E6
-:1012C000438535791A4481F82250828573792A44FE
-:1012D000043481F82330A7421344C285E2D109EBDC
-:1012E0000400461CBEF1000F1ED070780BF11E07E3
-:1012F0003919887007EB44014B81BEF1010F03449B
-:1013000012D0601CB1783A1807EB4000917043810D
-:10131000BEF1020F0B4407D0A01CF1783A1807EB7E
-:101320004000917043810B44BCF1030F02D20027AF
-:101330001CE000BF08F0FC0600270BEB070090F84C
-:1013400020100BEB4702591A118790F8213004370F
-:10135000C91A518790F82230BE42A1EB0301918750
-:1013600090F82300A1EB0003D387E6D1BEF1000F74
-:101370001CD00BF11E02D0198078BEF1010FA3EB37
-:10138000000302EB4700438310D0781C11188978C2
-:1013900002EB40005B1ABEF1020F438306D0B81C7B
-:1013A0001118897802EB4000591A418300208AF80D
-:1013B00000004FF0011000EB084404F1011009B0E7
-:1013C000BDE8F08F002000F02CBD00BF50F8EC5CB1
-:1013D00025F0200540F8EC5C4025C0F89451002A27
-:1013E00000F05E8203F02003B3FA83F35F094CF24E
-:1013F000C06341F20401C0F22D03CEF200019A4213
-:1014000038BF1346B42204F0E00C5A430B68BCFA10
-:101410008CF14909E6094FEA5408A508B9F1000F13
-:1014200047EA01073ED1BEF1000F40F0878041F24C
-:101430000404BBF1000FCEF2000440F01F81002F26
-:1014400000F00A820799002900F02A824169C1F35D
-:1014500040118E4200F024822168C91A914280F026
-:101460001F824169C1F340118E4200F01982216848
-:10147000C91A914280F014824169C1F340118E4231
-:1014800000F00E822168C91A914280F009824169F8
-:10149000C1F340118E4200F003822168C91A9142C3
-:1014A000D4D3FDE1BEF1000F40F07E80AC4641F2A6
-:1014B0000405CEF2000504E02968C91A914280F0C3
-:1014C000EF810168C1F30031A142F5D1BBF1000FFA
-:1014D00002D1002FF0D009E00168C1F34031ACEB3C
-:1014E0000101B1FA81F149090F42E5D007990029BC
-:1014F00000F0D6814169C1F340118E42DCD1CFE1C9
-:10150000042A40F095803020888042F63160C2F68F
-:101510003360086006208BE009F10207002000F02C
-:1015200049BC00BFFF200124C0F205048AF8000076
-:1015300004F1011009B0BDE8F08F00BF41F20404CE
-:10154000BBF1000FCEF2000440F0E080EFB941683B
-:101550002168C91A914280F0A38141682168C91AA3
-:10156000914280F09D8141682168C91A914280F0C2
-:10157000978141682168C91A9142E8D390E100BF80
-:101580002168C91A914280F08B814168C1F34021E2
-:101590008845F5D10799002900F082814169C1F39E
-:1015A00040118E42ECD17BE1B44641F20406CEF20A
-:1015B000000604E03168C91A914280F07181016827
-:1015C000C1F30031A142F5D14168C1F34021884502
-:1015D000F0D1BBF1000F03D1002FEBD009E000BF29
-:1015E0000168C1F34031691AB1FA81F149090F422A
-:1015F000E0D00799002900F053814169C1F34011FF
-:101600008C45D7D14CE100BF49F20050C0F6BA205A
-:1016100002E000BF4FF40050C5F80200042007E0CC
-:1016200004200870012003E04FF4806068800220ED
-:101630008AF8000000F1021009B0BDE8F08F00BF89
-:10164000E00700F0B281BE8A88462046002101F002
-:1016500001FF002E00F0A681022840F0A381387817
-:10166000013E0028F1D0DCE00220DDF814B0079A3A
-:10167000D7E300BF4FF0010EAAE000BFFFB9079902
-:1016800061BB01682168C91A914280F00981016833
-:101690002168C91A914280F0038101682168C91A42
-:1016A000914280F0FD8001682168C91A9142E8D317
-:1016B000F6E000BF2168C91A914280F0F18001680C
-:1016C000C1F340318D42F5D10799002900F0E8803F
-:1016D0004169C1F340118E42ECD1E1E0016821681B
-:1016E000C91A914280F0DC8001682168C91A9142D0
-:1016F00080F0D68001682168C91A914280F0D080BC
-:1017000001682168C91A9142E8D3C9E08FBB4168DA
-:10171000C1F34021884508BF01682168C91A914278
-:1017200080F0BE804168C1F34021884508BF016850
-:101730002168C91A914280F0B3804168C1F3402109
-:10174000884508BF01682168C91A914280F0A880C5
-:101750004168C1F34021884508BF01682168C91A62
-:101760009142D4D39CE000BF2168C91A914280F015
-:1017700097804168C1F340218845F5D10168C1F3E4
-:1017800040318D42F0D10799002900F089804169EC
-:10179000C1F340118E42E7D182E000BF0F4617F837
-:1017A000014B4A1DE10648BF1746A107394658BFFD
-:1017B0001146022B40F098800238A1E0002400205E
-:1017C000F8E200BF002200202BE300BF4FF0000E24
-:1017D0000220B8F1000F00F0A98118F00302A8F16F
-:1017E000010C00F05D8109F1050319F8017BF90690
-:1017F00048BF9946B90758BF9946012A1AD1E04611
-:101800004EE100BFBC8A4046002100F0D7FF002C0B
-:1018100000F0FE80022840F0FB803878013C002870
-:10182000F1D002200022FCE20220DDF80CB0079A81
-:10183000F7E200BF494611F8013B09F10507DC0654
-:1018400048BF39469B07894658BFB946022A40F02F
-:101850001981A8F1020823E1079989B92168C91AF9
-:1018600091421DD22168C91A914219D22168C91A20
-:10187000914215D22168C91A9142EFD310E000BFFE
-:101880002168C91A91420BD22168C91A914207D224
-:101890002168C91A914203D22168C91A9142EFD333
-:1018A000016842680223C1F3003103EA12221144A5
-:1018B0000268042303EAD2221144426808234069E3
-:1018C00003EA1212114400F0200041EA80008AF875
-:1018D00000000120C0F2050000F5803404F1011081
-:1018E00009B0BDE8F08F00BF0A4612F8013B053190
-:1018F000DF0648BF0A469B0758BF0A460338114611
-:10190000BCF1030F3CD30A784C1D02F0020312F025
-:1019100010024FF00502274604BF01224F1C002B86
-:1019200008BF0522895C08BF274601F002027C1D22
-:1019300011F010014FF00501234604BF01217B1C6B
-:10194000002A08BF0521795C08BF234601F0020286
-:101950005C1D11F010014FF00501274604BF012165
-:101960005F1C002A04BF052127465A5C7B1DD10657
-:10197000194658BF791C920758BF19460438C2D17E
-:101980000020A5F80100881B0004841C04F101104C
-:1019900009B0BDE8F08F00BF0A2007904FF0010C9E
-:1019A000022028E10128414664D1002008AE0790BA
-:1019B0000491E007204618BF0E20B7F814800139C3
-:1019C0000691002908BF04462046314601F042FD39
-:1019D000B8F1000F08D0022806D13878A8F1010824
-:1019E0000028F1D010E000BF012840F019820898CB
-:1019F0004BF8040B07980130079006990120002945
-:101A0000D7D1049A0DE200BF079A022009E200BF75
-:101A100001282FD1049800280698A0F101014FF069
-:101A2000000040F0D3810790BC8A4646059100290A
-:101A300008BF0E26304608A900F0C0FE44B10228B7
-:101A400006D13878013C00284FF00200F2D0E7E1DF
-:101A5000012840F0E58108984BF8040B0798013005
-:101A6000079005980028A0F101014FF00100DBD19B
-:101A7000D3E100BF0022D4E10220DDF80CE0BB4638
-:101A8000A7E600BF494611F8012B09F10503D70667
-:101A900048BF1946920758BF1946A8F1030889465E
-:101AA000BCF1030F42D399F8001009F1050701F0CA
-:101AB000020211F010014FF005013B4604BF012165
-:101AC00009F10103002A08BF052119F8011008BF18
-:101AD0003B4601F002025C1D11F010014FF00501C0
-:101AE000274604BF01215F1C002A08BF0521595C5D
-:101AF00008BF274601F002027C1D11F010014FF0D3
-:101B00000501234604BF01217B1C002A04BF0521D7
-:101B10002346795C5A1DCF06914658BF03F101094F
-:101B2000890758BF9146B8F10408BCD1DDF8188088
-:101B30004F46012840F09D81BEF1000F14D0B946F8
-:101B4000BBF8147008AC0E20214601F083FC0FB3E3
-:101B500002281FD19BF80000013F0028F3D007990D
-:101B600002204F4686E100BF049858B3BBF814002A
-:101B7000441C0E20002101F06DFC022840F0798108
-:101B8000013C00F011819BF8000000284FF002009A
-:101B9000EFD06EE101284F4640F06B81DDE9071080
-:101BA00008700898000A4870BDF8220088709DF8F7
-:101BB0002300C870043101205CE100BF4FF0000C2D
-:101BC000022009E0012054E1DDF80CE000E600BF4E
-:101BD0004FF0000C0220C346049907910BE000BFB0
-:101BE0000A2007904FF0000C022004E04FF0000C98
-:101BF0000220CDF81C80DDF818E0B9F1000F7AD092
-:101C0000E04619F00302A9F1010C2DD00BF10503F8
-:101C10001BF8017BF90648BF9B46B90758BF9B4696
-:101C2000012A01D1E1461FE0594611F8013B0BF1B1
-:101C30000507DC0648BF39469B078B4658BFBB46A5
-:101C4000022A03D1A9F102090EE000BF594611F89A
-:101C5000012B0BF10503D70648BF1946920758BF61
-:101C60001946A9F103098B46BCF1030FC44642D3C0
-:101C70009BF800100BF1050701F0020211F01001B2
-:101C80004FF005013B4604BF01210BF10103002A7F
-:101C900008BF05211BF8011008BF3B4601F00202F6
-:101CA0005C1D11F010014FF00501274604BF012112
-:101CB0005F1C002A08BF0521595C08BF274601F0B8
-:101CC00002027C1D11F010014FF00501234604BFF4
-:101CD00001217B1C002A04BF05212346795C5A1D83
-:101CE000CF06934658BF03F1010B890758BF9346AF
-:101CF000B9F10409BCD1059C01285F465AD1CDF841
-:101D000018E00798B9460A2804D00A20674600F070
-:101D100071FBBC4640F61408C1F20008B8F8147014
-:101D2000A346BCF1000F13D008AC0E20214600F0F2
-:101D300045FDFFB102281DD198F80000013F0028A1
-:101D4000F3D0DDF818E002205C464F4632E000BFD9
-:101D50007C1C4F460E20002100F030FD022826D1C9
-:101D6000013C23D098F8000000284FF00200F1D089
-:101D70001DE000BF01285C464F4611D10898DDF8F0
-:101D80001890A9F80000BDF8220009F1040189F8B3
-:101D900002009DF823008E4689F80300012009E027
-:101DA000DDF818E006E000BF022062E00220DDF866
-:101DB00018E05C46A870B81BAEEB0A016C7041EAF3
-:101DC000004404F1011009B0BDE8F08F08AC0790A1
-:101DD000059121B90A2000F00DFB4FF00E08BE8AD4
-:101DE0004046214600F0EAFC46B1022806D1387888
-:101DF000013E00284FF00200F2D011E001280FD17F
-:101E000008984BF8040B07980130079005980028B4
-:101E1000A0F101014FF00100DAD1069A01E000BF04
-:101E2000079A110A6A70A970E870ABEB0A0099F87A
-:101E30000410890710D499F8031099F80220890634
-:101E400041EA824101F5802141EA000404F10110D8
-:101E500009B0BDE8F08F00BF40F4802404F1011008
-:101E600009B0BDE8F08F00BF98464F4601283FF407
-:101E700063AE0799A870B81BA1EB0A0185F8018031
-:101E800041EA004404F1011009B0BDE8F08F00BF41
-:101E90000120BB46B1E600BF029C30E74FF0010EC7
-:101EA00097E400BF4FF0000E93E400BF0220DDE98D
-:101EB000042BB6E70A2107914FF0010C9BE600BF07
-:101EC0000220069ADDF80CB0ABE700BF4FF0000C23
-:101ED00082E600BF4FF0000C7DE600BFBB460791D5
-:101EE0008BE600BF4FF0000C83E600BFF0B581B079
-:101EF00002787F2A18D17F220A7047784F70CFB1BD
-:101F00008D1C861C4FF0021430462946013FFEF717
-:101F10004FFA044406EB1046002F15FA80F5F3D172
-:101F2000204601B0F0BD00BF01B0BDE8F040FEF7B3
-:101F30003FBA00BF4FF00214204601B0F0BD00BF11
-:101F400040F61401C1F20001582300228B60642383
-:101F500041F21440C1E905320123C4F205008A8030
-:101F60000A748B838A77032140F8041C0168C9072F
-:101F700009D10168C90704BF01685FEAC17102D1D4
-:101F80000168C907F2D046F28400C4F2080050216B
-:101F9000442201644161016141644163C0F89020C1
-:101FA0005422C0F89420016046F20000C4F20F00F1
-:101FB0004FF48051C0F800124FF40071C0F80412C1
-:101FC0004FF480724FF40051C0F80422C0F80012A0
-:101FD00020214023C0F89412C0F89432036843F4DF
-:101FE00080530360436843F400734360436843F4E1
-:101FF00080734360036843F400530360436823F035
-:1020000080034360436923F020034361436943F045
-:1020100040034361C0F88022026842F4807202608B
-:102020004EF20840CEF20000017070472DE9F043F7
-:1020300010F03F0C08BF4FF0400C470646F2041367
-:102040004FF48077C4F20F0358BF4FF4C0774FF4BA
-:1020500000760006FE5025D440F618024FF480505A
-:10206000C1F2000203E000BFBCEB050C50D011F838
-:10207000017BACF1010600247D03DD67C3F87C0120
-:1020800055686D1EFDD11D68C3F8FC0055686D1EB6
-:10209000FDD1A64204F10105E6D07F08072C2C46AD
-:1020A000EAD1E1E740F618084FF4805EC1F200087B
-:1020B0000BE000BFC0F1080426FA04F4BCEB000CEE
-:1020C00002F8014B08BFBDE8F08311F8014BACF1F9
-:1020D00001090027002600BF6003D867C3F87CE130
-:1020E000D8F80400401EFDD11868C3F8FCE0D8F809
-:1020F000045000F080006D1EFDD140EA5606B9453F
-:1021000007F10100D6D06408072F0746E4D1D1E7D4
-:10211000BDE8F083B0B546F20021C4F20F014FF4E0
-:1021200000724FF4805040F6180C4A60C1F88000ED
-:10213000C1F2000CDCF804305B1EFDD10860DCF855
-:1021400004305B1EFDD1C1F88420C1F88000DCF8AA
-:102150000420521EFDD10860DCF80420521EFDD17F
-:10216000C1F88000DCF80420521EFDD10860DCF8C4
-:102170000420521EFDD19CF81B2062B1C1F88000E2
-:10218000DCF804305B1EFDD10860DCF804305B1E17
-:10219000FDD1013AF2D100236FF01E02C1F8800098
-:1021A000DCF80440641EFDD151F8FC4C0860DCF8FA
-:1021B00004506D1EFDD104F0800543EA0563013231
-:1021C0004FEA5303EAD34FF400704FF48052486053
-:1021D000C1F88020DCF80440641EFDD151F8FC5C9D
-:1021E0000A60DCF80440641EFDD1C1F88020DCF8F0
-:1021F0000440641EFDD10A60DCF80440641EFDD179
-:10220000C1F88400C1F88020DCF8044005F08005A6
-:10221000641EFDD10A6043EA0560DCF80410491E23
-:10222000FDD1B0BD10B546F20021C4F20F014FF44C
-:1022300000724FF4805340F6180C4A60C1F88030A9
-:10224000C1F2000CDCF80440641EFDD10B60DCF828
-:102250000440641EFDD1C1F88420C1F88030DCF850
-:102260000420521EFDD10B60DCF80420521EFDD16B
-:10227000C1F88030DCF80420521EFDD10B60DCF880
-:102280000420521EFDD19CF81B2062B1C1F88030A1
-:10229000DCF80440641EFDD10B60DCF80440641ED1
-:1022A000FDD1013AF2D1002241F8802CC1F88030F2
-:1022B000DCF80420521EFDD10B60DCF80420521E15
-:1022C000FDD1C1F88030DCF80420521EFDD10B6036
-:1022D000DCF80420521EFDD1C1F88030DCF8042067
-:1022E000521EFDD10B60DCF80420521EFDD16FF0B0
-:1022F0001E0200BF440341F8804CC1F88030DCF876
-:102300000440641EFDD10B60DCF80440641EFDD166
-:1023100001324FEA5000EDD39CF81B209CF81A3094
-:10232000D44314EB030E31D0400341F8800C4FF43A
-:102330008050C1F88000DCF80440641EFDD10860C4
-:10234000DCF80440641EFDD1BEF1010F0FD0D21A9B
-:10235000023200BFC1F88000DCF804305B1EFDD102
-:102360000860DCF804305B1EFDD10132F2D34FF47B
-:1023700000724A60C1F88000DCF80420521EFDD1D2
-:102380000860DCF80400401EFDD112E04FF400723A
-:1023900040034A6041F8800C4FF48050C1F880003F
-:1023A000DCF80420521EFDD10860DCF80400401E59
-:1023B000FDD14FF48050C1F88000DCF80420521E9B
-:1023C000FDD10860DCF80420521EFDD14FF40072EC
-:1023D000C1F88420C1F88000DCF80420521EFDD131
-:1023E0000860DCF80400401EFDD14FF4005041F8B5
-:1023F000800C10BDF0B540F61802C1F2000257780B
-:1024000046F20021C4F20F014FF400754FF48053DF
-:102410004D60C1F880309FB30B60C1F880300B6015
-:10242000C1F88450C1F880300B60C1F880300B6077
-:102430004FF4005341F8803C92F81BE002EB4E0C45
-:10244000BCF82450002D00F0BB8015F00306A5F168
-:10245000010400F0A1804FF48057012E2346C1F8FB
-:1024600080700F6000F09980022EC1F880700F60BC
-:1024700040F00881AB1E032C80F09180A0E000BFEB
-:102480005468641EFDD10B605468641EFDD1C1F810
-:1024900080305468641EFDD10B605468641EFDD109
-:1024A000C1F88450C1F880305468641EFDD10B60BF
-:1024B0005468641EFDD1C1F880305468641EFDD19B
-:1024C0000B6053685B1EFDD14FF4005341F8803C14
-:1024D000D37E02EB4307BD8C75B14FF4805300BF30
-:1024E000C1F880305468641EFDD10B605468641ECE
-:1024F000FDD1013DF4D1D37ED7183F7F012F15D0F8
-:102500007B424FF4805500BF470341F8807CC1F8FF
-:1025100080505468641EFDD10D605468641EFDD166
-:1025200001335F1C4FEA5000EED1D37E02EB430330
-:102530009B8E002B00F06880400341F8800C4FF424
-:102540008050C1F880005468641EFDD10860546852
-:10255000641EFDD14FF40057012B41F8807C0DD053
-:102560005B4200BFC1F880005468641EFDD1086062
-:102570005468641EFDD101335F1CF3D14FF4007326
-:102580004B60C1F8800053685B1EFDD10860506845
-:10259000401EFDD149E000BF2B46032C10D34FF461
-:1025A000805400BF043BC1F880400C60C1F88040FB
-:1025B0000C60C1F880400C60C1F880400C60F1D123
-:1025C0007244147F631E17D013F00305A4F1020EAA
-:1025D00014D0420341F8802C4FF48053012D4FEA70
-:1025E0005002C1F880300B603CD173461046BEF1FA
-:1025F000030F80F05F8084E0024682E0BEF1030FAB
-:1026000080F058807DE000BF4FF4007340034B60C2
-:1026100041F8800C4FF48050C1F8800053685B1E75
-:10262000FDD108605068401EFDD14FF48050C1F8C4
-:10263000800053685B1EFDD1086053685B1EFDD1AE
-:102640004FF40073C1F88430C1F8800053685B1EFA
-:10265000FDD108605068401EFDD14FF4005041F894
-:10266000800CF0BD520341F8802C022D4FEA9002FD
-:10267000C1F880300B600FD1E31E1046BEF1030F8E
-:1026800018D23EE04FF48053C1F880300B60EB1E4F
-:10269000032CBFF484AF93E7520341F8802C4FF42E
-:1026A0008052C1F880200A60C208231F1046BEF184
-:1026B000030F26D34EF2000E4FF48054CFF6FF7E68
-:1026C000024600BF500341F8800C0EEA0230C1F808
-:1026D00080400C6041F8800C0EEAC220C1F88040B6
-:1026E0000C6041F8800C0EEA8220043B4FEA121283
-:1026F000C1F880400C6041F8800CC1F880400C604B
-:10270000E0D1BCF834300BB3500341F8800C4FF4E7
-:102710008050C1F8800008604FF40052581E41F804
-:10272000802C33D010F00306A3F102021CD04FF42A
-:102730008057012E1046C1F880700F6014D0022E11
-:10274000C1F880700F6009D1D81E0DE04FF4007001
-:102750004860500341F8800C1BE000BF4FF48050EC
-:10276000C1F880000860181F032A0FD34FF480526D
-:102770000438C1F880200A60C1F880200A60C1F8DE
-:1027800080200A60C1F880200A60F1D14FF4007007
-:1027900048604FF480504FF40072C1F88000086028
-:1027A000C1F880000860C1F88420C1F8800008608A
-:1027B0004FF4005041F8800CF0BD00BF2DE9F04F00
-:1027C0009DB040F61802C1F20002567846F200238E
-:1027D0004EF2000C8346C4F20F034FF400704FF426
-:1027E0008057CFF6FF7C5860C3F8807056B31F60E7
-:1027F000C3F88400C3F880701F60C3F880701F6046
-:1028000092F81BE0BEF1000F00F0F0801EF0030014
-:10281000AEF1010600F0D6804FF48055012837460E
-:10282000C3F880501D6000F0CE800228C3F88050AD
-:102830001D6040F09583AEF10207032E80F0C58045
-:10284000D4E000BF55686D1EFDD11F6055686D1E38
-:10285000FDD1C3F88400C3F880705068401EFDD1DC
-:102860001F605068401EFDD1C3F880705068401E44
-:10287000FDD11F605068401EFDD1D07E68B14FF47D
-:10288000805700BFC3F8807055686D1EFDD11F6072
-:1028900055686D1EFDD10138F4D10CEA0B304FF4B0
-:1028A000805743F8800CC3F880705068401EFDD1FB
-:1028B00053F8FC0C1F6055680CEACB266D1EFDD149
-:1028C00043F8806CC3F8807055686D1EFDD10226F8
-:1028D00053F8FC5C1F60546806EA90100CEA8B26E3
-:1028E000641EFDD143F8806CC3F880705468C5F352
-:1028F000C016641EFDD153F8FC5C1F6030440426F2
-:10290000546806EA5516641EFDD100EB0608B8F1BE
-:10291000010F40F049805FEA8B7000F1D5820968B1
-:102920006FF01E004FF480574E0343F8806CC3F8DD
-:1029300080705468641EFDD11F605468641EFDD110
-:1029400001304FEA5101EFD3D07E977EC643F6198E
-:1029500000F02E83490343F8801C4FF48051C3F8E4
-:1029600080105468641EFDD119605468641EFDD146
-:10297000012E0CD0C01B0230C3F880105468641EB6
-:10298000FDD119605468641EFDD10130F4D34FF4B9
-:1029900000705860C3F880105068401EFDD1196067
-:1029A0005068401EFDD12BE34FF400705860C3F80F
-:1029B00080705068401EFDD11F605068401EFDD1E0
-:1029C0001EE300BF7746032E10D34FF4805000BFA4
-:1029D000043FC3F880001860C3F880001860C3F893
-:1029E00080001860C3F880001860F1D10CEA0B3049
-:1029F00043F8800C4FF48050C3F880000CEACB25DC
-:102A000053F8FC7C186043F8805CC3F8800053F8EE
-:102A1000FC5C022606EA9717C5F3C01637440CEA99
-:102A20008B26186043F8806CC3F8800053F8FC6C68
-:102A3000042505EA561607EB0608B8F1010F1860E1
-:102A400040F03E815FEA8B70CDF8708000F13C81F0
-:102A50000D684FF48051680343F8800C0CEA053090
-:102A6000C3F88010196043F8800C0CEAC520C3F845
-:102A70008010196043F8800C0CEA8520C3F88010A0
-:102A8000196043F8800C0CEA4520C3F880101960E7
-:102A900043F8800C0CEA0520C3F88010196043F855
-:102AA000800C0CEAC510C3F88010196043F8800C44
-:102AB0000CEA8510C3F88010196043F8800C0CEA0A
-:102AC0004510C3F88010196043F8800C0CEA05101B
-:102AD000C3F88010196043F8800C0CEAC500C3F8F5
-:102AE0008010196043F8800C0CEA8500C3F8801050
-:102AF000196043F8800C0CEA4500C3F88010196097
-:102B000043F8800C4EF200004EF2000CC7F6FF7046
-:102B1000C0F23F0C00EA55080CF17F5000EA95091D
-:102B20000CF1FE5000EAD500C3F8801019601B902C
-:102B30000CF17C6000EA15101A900CF1F86000EAC4
-:102B4000551019900CF1707000EA951018900CF166
-:102B5000E07000EAD51017900CF5400000EA15204F
-:102B600016900CF5800000EA552015900CEA95208F
-:102B700014904FF4FF1000EAD5264FF47E2000EAAF
-:102B8000153428466FF30C0043F8800CC3F880100E
-:102B9000196043F8808CC3F88010196043F8809C5A
-:102BA000C3F8801019601B9F4FF4FC2043F8807C11
-:102BB000C3F8801019601A9F00EA553C43F8807CE6
-:102BC000C3F880101960199F4FF4783043F8807C67
-:102BD000C3F880101960189F4FF4F03A43F8807CD6
-:102BE000C3F880101960179F4FF4604943F8807C48
-:102BF000C3F880101960169F4FF4C04843F8807CDA
-:102C0000C3F880101960159F00EA953043F8807C66
-:102C1000C3F880101960149F0AEAD53A09EA1549E9
-:102C200008EA554843F8807CC3F88010196043F8DF
-:102C3000806CC3F88010196043F8804CC3F8801092
-:102C4000196043F880CCC3F88010196043F8800CF9
-:102C5000C3F88010196043F880ACC3F88010196085
-:102C600043F8809CC3F88010196043F8808CC3F847
-:102C700080101960907E6FEA0E07C6194FEAD5776B
-:102C800000F07A817F0343F8807CC3F880101960DC
-:102C9000DDF87080771E00F01582A0EB0E00811C1D
-:102CA00011F00301A0F1030000F0FA814FF4805706
-:102CB0000129C3F880701F6040F0DC81B71EEFE18E
-:102CC0004FF40071596002E24FF48058C3F88080DD
-:102CD00053F8FCCCC3F80080C3F8808053F8FC6C38
-:102CE000C3F80080C3F8808053F8FC7CC3F80080F0
-:102CF000C3F8808053F8FC9CC3F80080C3F8808040
-:102D000053F8FC4CC3F80080C3F8808053F8FC0CE7
-:102D10001B90C3F80080C3F8808053F8FC0C1A9015
-:102D2000C3F80080C3F8808053F8FC0C1990C3F8F6
-:102D30000080C3F8808053F8FC0C1890C3F8008022
-:102D4000C3F8808053F8FC0C1790C3F80080C3F8D8
-:102D5000808053F8FC0C1690C3F80080C3F8808084
-:102D600053F8FC0C1590C3F80080C3F8808053F82A
-:102D7000FC0C1490C3F80080C3F8808053F8FC0C5E
-:102D80001390C3F80080C3F8808053F8FC0C1290B5
-:102D9000C3F80080C3F8808053F8FC0C1190C3F88E
-:102DA0000080C3F8808053F8FC0C1090C3F80080BA
-:102DB000C3F8808053F8FC0C0F90C3F80080C3F870
-:102DC000808053F8FC0C0E90C3F80080C3F880801C
-:102DD00053F8FC0C0D90C3F80080C3F8808053F8C2
-:102DE000FC0C0C90C3F80080C3F8808053F8FC0CF6
-:102DF0000B90C3F80080C3F8808053F8FC0C0A9055
-:102E0000C3F80080C3F8808053F8FC0C0990C3F825
-:102E10000080C3F8808053F8FC0C0890C3F8008051
-:102E2000C3F8808053F8FC0C0790C3F80080C3F807
-:102E3000808053F8FC0C0690C3F80080C3F88080B3
-:102E400053F8FC0C0590C3F80080C3F8808053F859
-:102E5000FC0C0490C3F80080C3F8808053F8FC0C8D
-:102E60000390C3F80080C3F8808053F8FC0C0290F4
-:102E7000C3F80080957E6FEA0E0015EB000A00F0A3
-:102E800087800194C3F8808053F8FC0CBAF10104E8
-:102E90000090C3F80080DDF8708000F08981A5EB18
-:102EA0000E05A81C10F00300A5F1030500F06D81CC
-:102EB0004FF480540128C3F880401C6040F0E28049
-:102EC000AAF1020461E100BF00276FF01E004FF479
-:102ED000805600BFC3F880605468641EFDD153F86B
-:102EE000FC5C1E60546805F08005641EFDD147EA55
-:102EF000056701304FEA5707ECD3D07E947EC64376
-:102F000016EB040E00F066804FF48055C3F8805035
-:102F10005668761EFDD153F8FCCC1D605668761EAF
-:102F2000FDD1BEF1010F0CD0001B0230C3F8805060
-:102F30005468641EFDD11D605468641EFDD10130CB
-:102F4000F4D34FF400705860C3F880505068401EAE
-:102F5000FDD11D605068401EFDD100294BD14FE0CE
-:102F60004FF48050C3F880001860AEF10307032EC1
-:102F7000BFF42BAD3AE500BF4FF400705860780302
-:102F800043F8800CC3F880101960DDF87080A1E070
-:102F90004FF400705860C3F8808053F8FCECDDF803
-:102FA00070804FF480500029186040F0108191E04B
-:102FB0004FF400705860480343F8800C4FF4805081
-:102FC000C3F880005168491EFDD118605068401E4A
-:102FD000FDD115E04FF4007058604FF48050C3F8F5
-:102FE00080005468641EFDD153F8FCCC1860506812
-:102FF000401EFDD121B10CF0800047EA006008605E
-:103000004FF48050C3F880005168491EFDD118600C
-:103010005168491EFDD14FF40071C3F88410C3F804
-:1030200080005168491EFDD118605068401EFDD1D6
-:103030004FF400505FEA0B6143F8800C05D541F274
-:103040000400CEF2000000689060107B002800F0C1
-:1030500087804FF4805100BFC3F880105468641E0D
-:10306000FDD1196054680138641EFDD10028F3D1E8
-:1030700076E000BF0229C3F880701F600AD1F71EF6
-:103080000EE000BF0228C3F880401C6076D1AAF190
-:1030900003047AE04FF48051C3F880101960371FA1
-:1030A00003280FD34FF48050043FC3F8800018600A
-:1030B000C3F880001860C3F880001860C3F880006F
-:1030C0001860F1D14FF4007058604FF48050C3F88D
-:1030D000800018604FF480504FF40071C3F88000F6
-:1030E0001860C3F88410C3F8800018604FF40050D3
-:1030F0005FEA0B6143F8800C05D541F20400CEF283
-:10310000000000689060127B52B312F00307A2F136
-:10311000010111D04FF48056012F0846C3F880609A
-:103120001E600AD0022FC3F880601E601CD1901E62
-:10313000032915D303E000BF1046032910D34FF431
-:10314000805100BF0438C3F880101960C3F88010A4
-:103150001960C3F880101960C3F880101960F1D1AC
-:1031600040461DB0BDE8F08FD01E4FF48052C3F82A
-:1031700080201A600329F3D3E1E700BF4FF48050A9
-:10318000C3F880001860AAF10404032D10D34FF493
-:10319000805500BF043CC3F880501D60C3F88050C8
-:1031A0001D60C3F880501D60C3F880501D60F1D1D0
-:1031B0004FF4007058604FF48050C3F88000DDE990
-:1031C00000E44FF48050002918603FF483AF4FF0C3
-:1031D000804000EACC5006F0800540EA056007F028
-:1031E0008005ED0545EA900009F0800540EA05609C
-:1031F00004F080051B9FED0545EA900007F080056F
-:103200001A9F40EA056007F08005199FED0545EA21
-:10321000900007F08005189F40EA056007F08005E0
-:10322000179FED0545EA900007F08005169F40EADC
-:10323000056007F08005159FED0545EA900007F051
-:103240008005149F40EA056007F08005139FED0597
-:1032500045EA900007F08005129F40EA056007F0FC
-:103260008005119FED0545EA900007F08005109F4D
-:1032700040EA056007F080050F9FED0545EA9000E4
-:1032800007F080050E9F40EA056007F080050D9F5E
-:10329000ED0545EA900007F080050C9F40EA0560C7
-:1032A00007F080050B9FED0545EA900007F08005CB
-:1032B0000A9F40EA056007F08005099FED0545EA91
-:1032C000900007F08005089F40EA056007F0800540
-:1032D000079FED0545EA900007F08005069F40EA4C
-:1032E000056007F08005059FED0545EA900007F0B1
-:1032F0008005049F40EA056007F08005039FED0507
-:1033000045EA900007F08005029F40EA056007F05B
-:103310008006F60546EA90000EF0800740EA076056
-:103320000860D7E670B5002808BF70BD46F20022DD
-:1033300040F618040023C4F20F024FF4007C4FF44F
-:10334000805EC1F20004002516E000BFEE074FF0DA
-:10335000040608BF842642F806C0C2F880E066680A
-:10336000761EFDD1C2F800E066680138761EFDD1F8
-:103370006D08A3F1010328B1002BE7D111F8015B1F
-:103380000823E3E770BD00BF2DE9F04110F03F0CCA
-:1033900008BF4FF0400C000646F28410C4F20F0044
-:1033A00026D440F618034FF4805EC1F2000304E017
-:1033B000BCEB060C08BFBDE8F08111F8012BACF1A5
-:1033C0000104002556020660C0F8FCE05E68761E27
-:1033D000FDD1C0F87CE05E68761EFDD1AC4205F1FF
-:1033E0000106E5D05208072D3546EBD1E0E700BFD6
-:1033F00040F618034FF48058C1F200036FF07F0EBF
-:1034000009E000BFC7F1080125FA01F1BCEB070C88
-:1034100002F8011B1CD0ACF101040026002500BFFE
-:10342000C0F8FC805F687F1EFDD10768C0F87C8013
-:103430005968491EFDD10EEA970141EA5505B4428B
-:1034400006F10107DED0072E3E46E9D1DAE700BFDC
-:10345000BDE8F0812DE9F04740F61809C1F20009F6
-:1034600099F8013046F2002A4FF6FC7C4FF6FE78C0
-:10347000C4F20F0AC0F2FF1CC0F2FF084FF400753F
-:103480004FF48054002B4AF87C5CCAF8804000F06E
-:10349000A5804302CAF800404AF87C3C43085B021E
-:1034A000CAF88040CAF800404AF87C3C00EB500360
-:1034B0008608760203EB9003CAF88040CAF8004001
-:1034C0004AF87C6CC60803EBD00376025B02CAF8AC
-:1034D0008040CAF800404AF87C6CCAF88040CAF8BC
-:1034E00000404AF87C3C0023CAF88040CAF80040FB
-:1034F0004AF87C3C4FF48073CAF88040CAF8004018
-:103500004AF87C5CCAF88040CAF80040CAF88430A7
-:1035100099F818E0BEF1000F2ED0AEF101051EF0B3
-:103520000303744611D04FF48056012B2C46CAF881
-:103530008060CAF8006008D0022BCAF88060CAF820
-:10354000006040F0A385AEF10204032D14D34FF4C4
-:10355000805300BF043CCAF88030CAF80030CAF873
-:103560008030CAF80030CAF88030CAF80030CAF893
-:103570008030CAF80030EDD14FF48053CAF8803063
-:103580005AF87C4CCAF80030CAF880305AF87C5C93
-:10359000CAF80030CAF880305AF87C6C08EA152561
-:1035A00045EA54240CEAD61644EA060CBCF1040F92
-:1035B000CAF8003018BFBCF1020F40F0278499F818
-:1035C000191010F0020018BF002940F04584BEF128
-:1035D000000F40F0CB8400F01FBE00BFD9F80420DC
-:1035E000521EFDD1CAF80040D9F80420521EFDD168
-:1035F00042024AF87C2CCAF88040D9F80420521EB6
-:10360000FDD1CAF80040D9F80420521EFDD142086D
-:1036100052024AF87C2CCAF88040D9F80420521E85
-:10362000FDD1CAF80040D9F80420521EFDD182080D
-:1036300052024AF87C2CCAF88040D9F80420521E65
-:10364000FDD1CAF80040D9F80420521EFDD1C208AD
-:1036500052024AF87C2CCAF88040D9F80420521E45
-:10366000FDD1CAF8004000EB5003D9F8042003EB69
-:103670009003521EFDD103EBD00252024AF87C2C7B
-:10368000CAF88040D9F80420521EFDD1CAF8004083
-:10369000D9F80420521EFDD100224AF87C2CCAF829
-:1036A0008040D9F80420521EFDD1CAF80040D9F854
-:1036B0000420521EFDD14AF87C5CCAF88040D9F83B
-:1036C0000420521EFDD1CAF80040D9F80420521E31
-:1036D000FDD14FF48072CAF8842099F818307BB17C
-:1036E0004FF48055CAF88050D9F80420521EFDD1FD
-:1036F000CAF80050D9F80420521EFDD1013BF1D187
-:103700004FF48052CAF88020D9F804305B1EFDD1F6
-:103710005AF87C3CCAF80020D9F80440641EFDD158
-:10372000CAF88020D9F80440641EFDD15AF87C7C88
-:10373000CAF80020D9F80440641EFDD1CAF88020E0
-:10374000D9F80440641EFDD15AF87C6CCAF80020F8
-:10375000D9F8042008EA1727521EFDD147EA53235F
-:103760000CEAD61243EA020CBCF1040F18BFBCF1FC
-:10377000020F40F0178410F0020000F0938199F8D6
-:103780001910002900F08E814FF48051CAF8801082
-:10379000D9F80420521EFDD1CAF80010D9F804202F
-:1037A000521EFDD1CAF88010D9F80420521EFDD156
-:1037B000CAF80010D9F80420521EFDD1CAF88010B2
-:1037C000D9F80420521EFDD1CAF80010D9F80420FF
-:1037D000521EFDD1CAF88010D9F80420521EFDD126
-:1037E000CAF80010D9F80420521EFDD1CAF8801082
-:1037F000D9F80420521EFDD1CAF80010D9F80420CF
-:10380000521EFDD1CAF88010D9F80420521EFDD1F5
-:10381000CAF80010D9F80420521EFDD1CAF8801051
-:10382000D9F80420521EFDD1CAF80010D9F804209E
-:10383000521EFDD1CAF88010D9F80420521EFDD1C5
-:10384000CAF80010D9F80420521EFDD1CAF8801021
-:10385000D9F80420521EFDD1CAF80010D9F804206E
-:10386000521EFDD1CAF88010D9F80420521EFDD195
-:10387000CAF80010D9F80420521EFDD1CAF88010F1
-:10388000D9F80420521EFDD1CAF80010D9F804203E
-:10389000521EFDD1CAF88010D9F80420521EFDD165
-:1038A000CAF80010D9F80420521EFDD1CAF88010C1
-:1038B000D9F80420521EFDD1CAF80010D9F804200E
-:1038C000521EFDD1CAF88010D9F80420521EFDD135
-:1038D000CAF80010D9F80420521EFDD1CAF8801091
-:1038E000D9F80420521EFDD1CAF80010D9F80420DE
-:1038F000521EFDD1CAF88010D9F80420521EFDD105
-:10390000CAF80010D9F80420521EFDD1CAF8801060
-:10391000D9F80420521EFDD1CAF80010D9F80420AD
-:10392000521EFDD1CAF88010D9F80420521EFDD1D4
-:10393000CAF80010D9F80420521EFDD1CAF8801030
-:10394000D9F80420521EFDD1CAF80010D9F804207D
-:10395000521EFDD1CAF88010D9F80420521EFDD1A4
-:10396000CAF80010D9F80420521EFDD1CAF8801000
-:10397000D9F80420521EFDD1CAF80010D9F804204D
-:10398000521EFDD1CAF88010D9F80420521EFDD174
-:10399000CAF80010D9F80420521EFDD1CAF88010D0
-:1039A000D9F80420521EFDD1CAF80010D9F804201D
-:1039B000521EFDD1CAF88010D9F80420521EFDD144
-:1039C000CAF80010D9F80420521EFDD1CAF88010A0
-:1039D000D9F80420521EFDD1CAF80010D9F80420ED
-:1039E000521EFDD1CAF88010D9F80420521EFDD114
-:1039F000CAF80010D9F80420521EFDD1CAF8801070
-:103A0000D9F80420521EFDD1CAF80010D9F80420BC
-:103A1000521EFDD1CAF88010D9F80420521EFDD1E3
-:103A2000CAF80010D9F80420521EFDD1CAF880103F
-:103A3000D9F80420521EFDD1CAF80010D9F804208C
-:103A4000521EFDD1CAF88010D9F80420521EFDD1B3
-:103A5000CAF80010D9F80420521EFDD1CAF880100F
-:103A6000D9F80420521EFDD1CAF80010D9F804205C
-:103A7000521EFDD1CAF88010D9F80420521EFDD183
-:103A8000CAF80010D9F80420521EFDD1CAF88010DF
-:103A9000D9F80420521EFDD1CAF80010D9F804103C
-:103AA000491EFDD199F8181081B14FF4805300BF21
-:103AB000CAF88030D9F80420521EFDD1CAF800306F
-:103AC000D9F80420521EFDD10139F1D14FF4807193
-:103AD0000028CAF8041040F0B78699F819000028A9
-:103AE00000F0B28600204AF87C0C4FF48050CAF8EF
-:103AF0008000D9F80410491EFDD1CAF80000D9F899
-:103B00000410491EFDD1CAF88000D9F80410491EDE
-:103B1000FDD1CAF80000D9F80410491EFDD1CAF839
-:103B20008000D9F80410491EFDD1CAF80000D9F868
-:103B30000410491EFDD1CAF88000D9F80410491EAE
-:103B4000FDD1CAF80000D9F80410491EFDD1CAF809
-:103B50008000D9F80410491EFDD1CAF80000D9F838
-:103B60000410491EFDD1CAF88000D9F80410491E7E
-:103B7000FDD1CAF80000D9F80410491EFDD1CAF8D9
-:103B80008000D9F80410491EFDD1CAF80000D9F808
-:103B90000410491EFDD1CAF88000D9F80410491E4E
-:103BA000FDD1CAF80000D9F80410491EFDD1CAF8A9
-:103BB0008000D9F80410491EFDD1CAF80000D9F8D8
-:103BC0000410491EFDD1CAF88000D9F80410491E1E
-:103BD000FDD1CAF80000D9F80410491EFDD1CAF879
-:103BE0008000D9F80410491EFDD1CAF80000D9F8A8
-:103BF0000410491EFDD1CAF88000D9F80410491EEE
-:103C0000FDD1CAF80000D9F80410491EFDD1CAF848
-:103C10008000D9F80410491EFDD1CAF80000D9F877
-:103C20000410491EFDD1CAF88000D9F80410491EBD
-:103C3000FDD1CAF80000D9F80410491EFDD1CAF818
-:103C40008000D9F80410491EFDD1CAF80000D9F847
-:103C50000410491EFDD1CAF88000D9F80410491E8D
-:103C6000FDD1CAF80000D9F80410491EFDD1CAF8E8
-:103C70008000D9F80410491EFDD1CAF80000D9F817
-:103C80000410491EFDD1CAF88000D9F80410491E5D
-:103C9000FDD1CAF80000D9F80410491EFDD1CAF8B8
-:103CA0008000D9F80410491EFDD1CAF80000D9F8E7
-:103CB0000410491EFDD1CAF88000D9F80410491E2D
-:103CC000FDD1CAF80000D9F80410491EFDD1CAF888
-:103CD0008000D9F80410491EFDD1CAF80000D9F8B7
-:103CE0000410491EFDD1CAF88000D9F80410491EFD
-:103CF000FDD1CAF80000D9F80410491EFDD1CAF858
-:103D00008000D9F80410491EFDD1CAF80000D9F886
-:103D10000410491EFDD1CAF88000D9F80410491ECC
-:103D2000FDD1CAF80000D9F80410491EFDD1CAF827
-:103D30008000D9F80410491EFDD1CAF80000D9F856
-:103D40000410491EFDD1CAF88000D9F80410491E9C
-:103D5000FDD1CAF80000D9F80410491EFDD1CAF8F7
-:103D60008000D9F80410491EFDD1CAF80000D9F826
-:103D70000410491EFDD1CAF88000D9F80410491E6C
-:103D8000FDD1CAF80000D9F80410491EFDD1CAF8C7
-:103D90008000D9F80410491EFDD1CAF80000D9F8F6
-:103DA0000410491EFDD1CAF88000D9F80410491E3C
-:103DB000FDD1CAF80000D9F80410491EFDD1CAF897
-:103DC0008000D9F80410491EFDD1CAF80000D9F8C6
-:103DD0000410491EFDD1CAF88000D9F80410491E0C
-:103DE000FDD1CAF80000D9F80410491EFDD1CAF867
-:103DF0008000D9F80410491EFDD1CAF80000D9F896
-:103E00000400401EFDD100F01FBD00BFBCF1010F3A
-:103E100040F01481830700F14781BEF1000F00F0EC
-:103E20005983AEF101051EF00303764600F03C8392
-:103E30004FF48054012B2E46CAF88040CAF8004047
-:103E400000F03283022BCAF88040CAF8004040F0EC
-:103E50002383AEF1020627E34FF48053CAF8803083
-:103E6000CAF80030CAF88030CAF80030CAF880308A
-:103E7000CAF80030CAF88030CAF80030CAF880307A
-:103E8000CAF80030CAF88030CAF80030CAF880306A
-:103E9000CAF80030CAF88030CAF80030CAF880305A
-:103EA000CAF80030CAF88030CAF80030CAF880304A
-:103EB000CAF80030CAF88030CAF80030CAF880303A
-:103EC000CAF80030CAF88030CAF80030CAF880302A
-:103ED000CAF80030CAF88030CAF80030CAF880301A
-:103EE000CAF80030CAF88030CAF80030CAF880300A
-:103EF000CAF80030CAF88030CAF80030CAF88030FA
-:103F0000CAF80030CAF88030CAF80030CAF88030E9
-:103F1000CAF80030CAF88030CAF80030CAF88030D9
-:103F2000CAF80030CAF88030CAF80030CAF88030C9
-:103F3000CAF80030CAF88030CAF80030CAF88030B9
-:103F4000CAF80030CAF88030CAF80030CAF88030A9
-:103F5000CAF80030CAF88030CAF80030CAF8803099
-:103F6000CAF80030BEF1000F00F05681AEF1010436
-:103F70001EF00305734600F039814FF48056012D81
-:103F80002346CAF88060CAF8006000F02F81022D35
-:103F9000CAF88060CAF8006040F02081AEF10203E8
-:103FA00024E100BFBCF1010F40F05A80820700F10C
-:103FB000D98199F818307BB14FF48056CAF88060E7
-:103FC000D9F80420521EFDD1CAF80060D9F80420A7
-:103FD000521EFDD1013BF1D14FF48072CAF804208A
-:103FE0000B6800216FF01F064FF480555A024AF803
-:103FF0007C2CCAF88050D9F80420521EFDD1CAF892
-:104000000050D9F80420521EFDD1194401364FEA60
-:104010005303EBD349024AF87C1C4FF48051CAF891
-:104020008010D9F80420521EFDD1CAF80010D9F82A
-:1040300004104FF0010C491EFDD1E1E10EF1210009
-:1040400010F0030100F008824FF480500129CAF8F3
-:104050008000CAF8000040F07B810EF12000FBE1F7
-:1040600099F818004FF48051213000BFCAF8801031
-:10407000D9F80420521EFDD1CAF80010D9F8042046
-:10408000521EFDD10138F1D1FAE100BF4FF4805248
-:10409000CAF88020CAF80020AEF10304032DBFF453
-:1040A00056AAFFF769BA00BF00236FF01F064FF44E
-:1040B00080550024CAF880505AF87C7CCAF8005019
-:1040C000CAF880507A0A03EB57235AF87C7CD2074F
-:1040D00042EA54027C0ACAF80050CAF8805003EB46
-:1040E0005723E7075AF87C4CCAF80050CAF88050AA
-:1040F00047EA5202670A03EB54235AF87C4CFF0745
-:10410000CAF80050CAF8805047EA5202670A03EB27
-:1041100054235AF87C4CFF07CAF80050CAF8805064
-:1041200047EA5202670A03EB54235AF87C4CFF0714
-:10413000CAF80050CAF8805047EA5202670A03EBF7
-:1041400054235AF87C4CFF07CAF80050CAF8805034
-:1041500047EA5202670A03EB54235AF87C4CFF07E4
-:1041600047EA5202670AFF0703EB5423083647EA7F
-:104170005204CAF800509DD14FF48052CAF88020F2
-:104180005AF87C7C4FF0080C83EA5723DB0708BF02
-:104190004FF0010C0029CAF8002018BF0C60BEF1D6
-:1041A000000F00F00783AEF101041EF00303714617
-:1041B00000F0EA824FF48055012B2146CAF8805066
-:1041C000CAF8005000F0E082022BCAF88050CAF80A
-:1041D000005040F0D182AEF10201D5E24FF480529E
-:1041E000CAF88020CAF80020AEF10303032C13D3D1
-:1041F0004FF48057043BCAF88070CAF80070CAF8C0
-:104200008070CAF80070CAF88070CAF80070CAF8E6
-:104210008070CAF80070EDD14FF480720028CAF89F
-:10422000042040F01183002900F00E8300204AF89A
-:104230007C0C4FF48050CAF88000CAF80000CAF81D
-:104240008000CAF80000CAF88000CAF80000CAF866
-:104250008000CAF80000CAF88000CAF80000CAF856
-:104260008000CAF80000CAF88000CAF80000CAF846
-:104270008000CAF80000CAF88000CAF80000CAF836
-:104280008000CAF80000CAF88000CAF80000CAF826
-:104290008000CAF80000CAF88000CAF80000CAF816
-:1042A0008000CAF80000CAF88000CAF80000CAF806
-:1042B0008000CAF80000CAF88000CAF80000CAF8F6
-:1042C0008000CAF80000CAF88000CAF80000CAF8E6
-:1042D0008000CAF80000CAF88000CAF80000CAF8D6
-:1042E0008000CAF80000CAF88000CAF80000CAF8C6
-:1042F0008000CAF80000CAF88000CAF80000CAF8B6
-:104300008000CAF80000CAF88000CAF80000CAF8A5
-:104310008000CAF80000CAF88000CAF80000CAF895
-:104320008000CAF80000CAF88000CAF80000CAF885
-:104330008000CAF80000CAF88000CAF800004FF4F4
-:1043400000715FFA8CF04AF87C1CBDE8F08700BF72
-:104350000229CAF88000CAF8000040F075800EF10A
-:104360001F0079E000256FF01F034FF4805C0026EA
-:10437000CAF880C0D9F80420521EFDD15AF87C2C0E
-:10438000CAF800C0D9F80470540A7F1EFDD105EBAD
-:104390005225E207013342EA5606E9D34FF4805230
-:1043A000CAF88020D9F804305B1EFDD15AF87C3C55
-:1043B000CAF80020D9F80420521EFDD185EA532204
-:1043C000D2074FF0080C08BF4FF0010C002918BFAE
-:1043D0000E6099F8181079B14FF48053CAF8803004
-:1043E000D9F80420521EFDD1CAF80030D9F80420B3
-:1043F000521EFDD10139F1D14FF48071CAF8041079
-:10440000000606D541F20400CEF200000068C9F8AB
-:10441000080099F80C00002800F0168200214AF8E4
-:104420007C1C4FF4805100BFCAF88010D9F80420DA
-:10443000521EFDD1CAF80010D9F80420521EFDD139
-:104440000138F1D100E200BF4FF48050CAF880007B
-:10445000CAF800000EF11E004FF480510438CAF86B
-:104460008010CAF80010CAF88010CAF80010CAF804
-:104470008010CAF80010CAF88010CAF80010EDD1F8
-:104480004FF48070CAF804004FF400715FFA8CF0AA
-:104490004AF87C1CBDE8F0874FF48052CAF88020AF
-:1044A000CAF80020AEF10306032D13D34FF4805356
-:1044B000043ECAF88030CAF80030CAF88030CAF822
-:1044C0000030CAF88030CAF80030CAF88030CAF824
-:1044D0000030EDD14FF48072CAF804200C684FF020
-:1044E000010C61026208A3084AF87C1C4FF4805159
-:1044F00052025B02CAF88010CAF800104AF87C2CFD
-:10450000CAF88010CAF800104AF87C3CE3085B0245
-:10451000CAF88010CAF800104AF87C3C23095B02F4
-:10452000CAF88010CAF800104AF87C3C63095B02A4
-:10453000CAF88010CAF800104AF87C3CA3095B0254
-:10454000CAF88010CAF800104AF87C3CE3095B0204
-:10455000CAF88010CAF800104AF87C3C230A5B02B3
-:10456000CAF88010CAF800104AF87C3C40F2FF13E9
-:1045700024EA0303CAF88010CAF800104AF87C3C09
-:10458000A30A5B02CAF88010CAF800104AF87C3C03
-:10459000E30A5B02CAF88010CAF800104AF87C3CB3
-:1045A000230B5B02CAF88010CAF800104AF87C3C62
-:1045B000630B5B02CAF88010CAF800104AF87C3C12
-:1045C000A30B5B02CAF88010CAF800104AF87C3CC2
-:1045D000E30B5B0204EB5402CAF88010CAF8001027
-:1045E0004AF87C3C230C02EB94025B0202EBD402FF
-:1045F000CAF88010CAF800104AF87C3C630C02EB41
-:1046000014125B0202EB5412CAF88010CAF80010B0
-:104610004AF87C3CA30C02EB94125B0202EBD4122E
-:10462000CAF88010CAF800104AF87C3CE30C02EB90
-:1046300014225B0202EB5422CAF88010CAF8001060
-:104640004AF87C3C230D02EB94225B0202EBD4225D
-:10465000CAF88010CAF800104AF87C3C630D02EBDF
-:1046600014325B0202EB5432CAF88010CAF8001010
-:104670004AF87C3CA30D02EB94325B0202EBD4328D
-:10468000CAF88010CAF800104AF87C3CE30D02EB2F
-:1046900014425B0202EB5442CAF88010CAF80010C0
-:1046A0004AF87C3C230E02EB94425B0202EBD442BC
-:1046B000CAF88010CAF800104AF87C3C630E02EB7E
-:1046C00014525B0202EB5452CAF88010CAF8001070
-:1046D0004AF87C3CA30E02EB94525B0202EBD452EC
-:1046E000CAF88010CAF800104AF87C3CE30E02EBCE
-:1046F00014625B0202EB5462CAF88010CAF8001020
-:104700004AF87C3C230F02EB94625B02CAF88010EB
-:10471000CAF8001002EBD4624AF87C3C630F02EB4B
-:1047200014725B02CAF88010CAF800104AF87C3C88
-:1047300002EB5472A30F5B0202EB9472CAF8801072
-:10474000CAF800104AF87C3CE30F02EBD4725B021B
-:104750005202CAF88010CAF800104AF87C3CCAF825
-:104760008010CAF800104AF87C2CCAF88010CAF8E9
-:104770000010000624D42AE04FF48051CAF88010BB
-:10478000CAF80010AEF10301032C13D34FF4805389
-:104790000439CAF88030CAF80030CAF88030CAF844
-:1047A0000030CAF88030CAF80030CAF88030CAF841
-:1047B0000030EDD14FF48071CAF80410000606D520
-:1047C00041F20400CEF200000068C9F8080099F830
-:1047D0000C30CBB300204AF87C0C13F00307A3F194
-:1047E000010011D04FF48056012F0146CAF88060B5
-:1047F000CAF8006011D0022FCAF88060CAF80060C1
-:1048000004D1991E09E000BF194606E04FF480511B
-:10481000CAF88010CAF80010D91E032814D34FF428
-:10482000805000BF0439CAF88000CAF80000CAF8F6
-:104830008000CAF80000CAF88000CAF80000CAF870
-:104840008000CAF80000EDD14FF400715FFA8CF0DF
-:104850004AF87C1CBDE8F08770B540F65C01C1F2F7
-:10486000000100220A70A8B14CF2F474C1F20044B5
-:10487000A16844F6B900C1F20040884700281CBF77
-:10488000002070BD21690220884798B1E068804708
-:10489000002070BD4CF2F470C1F20040866AD0E98D
-:1048A000034516200021B04719200021B047002001
-:1048B000A847A047012070BDB0B540F65C0504468E
-:1048C0008007C1F2000527D541F20400CEF20000B6
-:1048D0000068A8612A69A868E968084400F03F01F7
-:1048E000821A01F5FE539A42A860686102D903203A
-:1048F00068700FE04CF2F472C1F2004240F64513CA
-:104900006FF35F309269C1F20003C1F140011844B6
-:10491000E960904701202871A00605D568792844F0
-:10492000817941F08001817114F4607F08BFB0BDCE
-:1049300068792844817941F040018171B0BD00BFA0
-:104940002DE9F04149F2806440F65C06C0F298041B
-:10495000C1F200064CF2F478A04238BF04467078E9
-:10496000C1F20048D8F82850C00710D01620002106
-:10497000A847D8F82C008047800708D5D8F824002D
-:104980008047B1680844B06019200021A847012081
-:1049900021460127A84728B1002420463470BDE8ED
-:1049A000F08100BF70783770C10714D080070FD432
-:1049B000B06840F6451300F03F016FF35F30D8F860
-:1049C0001820C1F20003C1F140011844F160904782
-:1049D00016200121A8472046BDE8F08170B5B8B186
-:1049E00040F65C00C1F20000017801290DD14CF2C3
-:1049F000F4740121C1F20044A269C16040F645107F
-:104A0000C1F2000001219047E0B1002070BD00BF5D
-:104A10004CF2F475C1F20045D5E90A461620002192
-:104A2000A047B047800715D5686A804740F65C010B
-:104A3000C1F200018A681044886019200021A04753
-:104A400008E000BFA26A16200121904700281CBF81
-:104A5000002070BD012070BD4CF2F473C1F2004320
-:104A600040F65C029B69C1F20002D160184700BFAA
-:104A700010B54CF2F474C1F20044E06A804780073C
-:104A80005CBF002010BD606ABDE81040004700BF59
-:104A900040F65C02C1F200025378DB070AD10078CD
-:104AA00001289ABF90700022FF224FF001100A7077
-:104AB000704700BFFF224FF001100A70704700BF1F
-:104AC000F0B581B040F65C05C1F20005EA780778E0
-:104AD000012A0C4602D10020FFF7BEFE4FF000066F
-:104AE00067B1012F06D101200127FFF7B5FE08B1FC
-:104AF000002105E0FF21002702E000BF0027002180
-:104B0000EF706E704FF00110217001B0F0BD00BF6A
-:104B1000B0B540F65C05C1F20005EA780C46012A02
-:104B200008D10068FFF70CFF014618B14FF00410E0
-:104B30002160B0BD002169704FF004102160B0BD4C
-:104B400070B540F65C06C1F200060078727800F09D
-:104B5000010502F0010085420C4605D100214FF00D
-:104B60000110217070BD00BF3DB10020F071A6F8AA
-:104B70000500B06030617061B061F07801280BD140
-:104B80002846FFF72BFF00281ABF75700021FF2170
-:104B90004FF00110217070BDFF214FF00110217006
-:104BA00070BD00BF2DE9F04381B040F65C07C1F253
-:104BB00000070446787997F8019080F001013844A5
-:104BC00090F8068079710021B9F1010F817113D13C
-:104BD000F878012814D10120002500BF3D71B96883
-:104BE0003A690128A1EB020602D1FFF741FF064412
-:104BF0003879E8B1F878F1E7B8683969461A17E00A
-:104C0000002000BF3871B9683A693B797BB13871CF
-:104C1000B9683A693B7953B13871B9683A693B79F7
-:104C20002BB13871B9683A693B79002BEAD18E1AF9
-:104C300048EA09002070300AA070300C310E66700E
-:104C4000E0700520217101B0BDE8F0832DE9F04747
-:104C500090F800A088464FF000095FEACA700E463F
-:104C60000AD15FEA8A701ED45FEA4A7060D409F5FF
-:104C70008030BDE8F08700BF40F65C00C1F2000064
-:104C80004179427881F0010301448F79437147EA09
-:104C90000200464681F8069006F8010B4FF0010924
-:104CA0005FEA8A70E0D540F65C04C1F200046078E7
-:104CB000012813D1E078012814D10120002500BF7C
-:104CC0002571A16822690128A1EB020702D1FFF733
-:104CD000CFFE07442079E8B1E078F1E7A0682169C8
-:104CE000471A17E0002000BF2071A16822692379CC
-:104CF0007BB12071A1682269237953B12071A16829
-:104D0000226923792BB12071A16822692379002BB4
-:104D1000EAD18F1A380A08F809707070380CB07030
-:104D2000380EF070043609F104095FEA4A709ED526
-:104D300040F65C01C1F20001002200BF0A714B691C
-:104D400088690F797FB10A714B6988690F7957B10A
-:104D50000A714B6988690F792FB10A714B698869AB
-:104D60000F79002FEAD1190A7170190CB170190E60
-:104D7000F170010A30717171010C000E09F1040922
-:104D80003370B171F07109F58030BDE8F08700BF74
-:104D90002DE9F04381B040F65C06C1F20006804682
-:104DA00070790C4680F00102304471788379727119
-:104DB00043EA010900220129827113D1F078012808
-:104DC00024D10120002700BF3771B1683269012862
-:104DD000A1EB020502D1FFF74BFE0544307920B16B
-:104DE000F078F1E7B0683169451AB0785FFA89F177
-:104DF000012828D1B8F80070B7F57F7F28BF4FF49D
-:104E00007F77BD4298BF2F461EE000BF002000BF45
-:104E10003071B168326933797BB13071B168326910
-:104E2000337953B13071B168326933792BB1307154
-:104E3000B16832693379002BEAD18D1AB0785FFA04
-:104E400089F10128D6D000272170390A012867701E
-:104E5000A17075D1D6F81080002F55D040F64511BD
-:104E6000A7F1010E17F00305C1F200010ED0434671
-:104E70006FF35F33581CCB5C012DE3700ED104F14E
-:104E8000040C7546BEF1030F23D23DE004F1030C80
-:104E900040463D46BEF1030F1BD235E06FF35F3055
-:104EA000431C085C022D207108D104F1050CBD1EC5
-:104EB0001846BEF1030F0CD226E000BF6FF35F333C
-:104EC000CA5C581C04F1060C6271FD1EBEF1030F92
-:104ED0001AD3ACF1040300BF02466FF35F328A5C61
-:104EE000441C03F8042F6FF35F340A5D841C5A706E
-:104EF0006FF35F340A5DC41C9A706FF35F340A5D10
-:104F0000601C043DDA70E7D108EB0700306170786F
-:104F1000032815D1B06831690022411AB2EB513F24
-:104F20000ED1F17801290BD10121717040F64511A4
-:104F30006FF35F30C1F2000108440121FFF78CFDDF
-:104F4000F81C40F4003001B0BDE8F083FEE700BF7C
-:104F5000FEE700002DE9F04F81B08946096C044658
-:104F60000968C1F3046003F025F90203010D10463E
-:104F7000224600234FF0000B03F0B2FCD9F860206A
-:104F800092F83020062A40F0C18099ED190A4CF6BB
-:104F9000341EBDEEC00A009410EE101A4FF0FF3818
-:104FA000C1F2004E00244FF0000C4FF0000A04E064
-:104FB0001034B4F5907F00F085813EF80420B0FBFA
-:104FC000F2F3B3FBF1F6BBEB164F21D1032E0EEB40
-:104FD000040303D2022E1BD103260DE006FB02F5CB
-:104FE000B5FBF1F73D1A38BFC51B454503D293F811
-:104FF00002C0B246A84601367243B2FBF1F52A1A46
-:1050000038BF421B424503D293F802C0B2469046D5
-:105010000EEB04039A88B0FBF2F5B5FBF1F6BBEB9F
-:10502000164F1FD1032E03D2022E1BD103260DE0F3
-:1050300006FB02F5B5FBF1F73D1A38BFC51B454528
-:1050400003D293F806C0B246A84601367243B2FBBB
-:10505000F1F52A1A38BF421B424503D293F806C025
-:10506000B24690461A89B0FBF2F5B5FBF1F6BBEB00
-:10507000164F1FD1032E03D2022E1BD103260DE0A3
-:1050800006FB02F5B5FBF1F73D1A38BFC51B4545D8
-:1050900003D293F80AC0B246A84601367243B2FB67
-:1050A000F1F52A1A38BF421B424503D293F80AC0D1
-:1050B000B24690469A89B0FBF2F5B5FBF1F6BBEB30
-:1050C000164F7FF475AF032E04D2022E7FF470AF1B
-:1050D00003260DE006FB02F5B5FBF1F73D1A38BFDC
-:1050E000C51B454503D293F80EC0B246A84601360B
-:1050F0007243B2FBF1F52A1A38BF421B4245BFF496
-:1051000057AF93F80EC0B246904651E74FF6FF7284
-:1051100020EA0202824209D1020C42EA014A00233B
-:1051200010214FF0000C4FF00008CDE04FF6FF7B50
-:10513000C0F20F0BABF54D21884240F2F7804CF6E0
-:10514000341E00264FF0FF38C1F2004E4FF0000C25
-:1051500000214FF0000A009405E000BF1036B6F5BC
-:10516000907F00F0AF803EF80620B0FBF2F55D4581
-:1051700024D82C091201302D0EEB060302D21F2D6C
-:105180000DD81BE002FB04F52F1A38BF02FB1407F1
-:10519000474504D293F802C01021B846A246671CC6
-:1051A00002FB07F4241A38BF02FB1704444505D25A
-:1051B00093F802C01021BA46A04600BF0EEB0603CA
-:1051C0009A88B0FBF2F55D4524D82C09302D4FEAC2
-:1051D000021203D2202D0ED21CE000BF02FB04F508
-:1051E0002F1A38BF02FB1407474504D293F806C0B4
-:1051F0001021B846A246671C02FB07F4241A38BFE8
-:1052000002FB1704444505D293F806C01021BA46A4
-:10521000A04600BF1A89B0FBF2F55D4524D82C09E1
-:10522000302D4FEA021203D2202D0ED21CE000BF17
-:1052300002FB04F52F1A38BF02FB1407474504D2BE
-:1052400093F80AC01021B846A246671C02FB07F477
-:10525000241A38BF02FB1704444505D293F80AC04C
-:105260001021BA46A04600BF9A89B0FBF2F55D4511
-:105270003FF674AF2C09302D4FEA021204D2202DD4
-:10528000FFF46CAF0DE000BF02FB04F52F1A38BF2E
-:1052900002FB1407474504D293F80EC01021B8460C
-:1052A000A246671C02FB07F4241A38BF02FB17044E
-:1052B0004445BFF453AF93F80EC01021BA46A04640
-:1052C0004CE700BF0023009C642208FB02F2B2FB03
-:1052D000F0F0032804D94FF0FF3001B0BDE8F08FA3
-:1052E000D9F80400C26842F08002C2601FFA8AF254
-:1052F000120A4260D9F804005FFA8AF20260D9E922
-:105300000102C76827F08007C7605FFA8CF78762E1
-:1053100022B989B243EA01111039C162D9F860009B
-:10532000C462002001B0BDE8F08F00BFD9F80810BA
-:105330000029D0D14CF6CC41884205D9B0F5403F88
-:105340005ED90F2197E000BF00944FF0FF3C4FF46F
-:10535000504B4FF44A4E4FF0000A00270EF5C06242
-:10536000ABEB0008824238BFA0EB0B08E0453ABF28
-:105370004FF0010A1746E0460EF580620021B1EBBE
-:10538000923F35D0ABF50075291A824238BF411BD8
-:1053900041454546ABF58064A2F500733CBF174616
-:1053A0000D46261A834238BF061BAE422B46ABF58C
-:1053B000C064A2F5806B3CBF0EF500773346A4EBCA
-:1053C000000C834538BFA0EB040C414538BF4FF0BB
-:1053D000010AAE4238BF4FF0010A9C453ABF4FF078
-:1053E000010A77469C46AEF5006EA2F5C06BB5E7A4
-:1053F000BAB20E23110B03EA12234FF0000C62E73E
-:10540000B0F5343F02D90E2135E000BFB0F5283F9A
-:1054100002D90D212FE000BFB0F5183F02D90C21B1
-:1054200029E000BFB0F50C3F02D90B2123E000BFFB
-:10543000B0F5003F02D90A211DE000BFB0F5E83FFA
-:1054400002D9092117E000BFB0F5D03F02D90821E9
-:1054500011E000BFB0F5B83F02D907210BE000BF53
-:10546000B0F5983F02D9062105E000BF0421B0F550
-:10547000803F88BF0521B0FBF1F2130500F0A88042
-:105480004CF6341EA34601EB410700264FF0FF38CF
-:10549000C1F2004E4FF0000C00244FF0000A04E06F
-:1054A0002436B6F5907F00F08F803EF8063007FB7B
-:1054B00003F2121A38BF07FB1302424507D20EEB64
-:1054C000060393F802C04FF0030A0C4690460EEB19
-:1054D00006039D8807FB05F2121A38BF07FB150269
-:1054E000424505D293F806C04FF0030A0C46904699
-:1054F0001D8907FB05F2121A38BF07FB150242454A
-:1055000005D293F80AC04FF0030A0C4690469D89D5
-:1055100007FB05F2121A38BF07FB1502424505D2F8
-:1055200093F80EC04FF0030A0C4690461D8A07FB05
-:1055300005F2121A38BF07FB1502424505D293F84F
-:1055400012C04FF0030A0C4690469D8A07FB05F2F5
-:10555000121A38BF07FB1502424505D293F816C050
-:105560004FF0030A0C4690461D8B07FB05F2121AFA
-:1055700038BF07FB1502424505D293F81AC04FF019
-:10558000030A0C4690469D8B07FB05F2121A38BFA2
-:1055900007FB1502424505D293F81EC04FF0030ADF
-:1055A0000C4690461D8C07FB05F2121A38BF07FB0C
-:1055B00015024245BFF474AF93F822C04FF0030ABE
-:1055C0000C4690466CE700BFA2B221465C4606E05E
-:1055D0004FEA123A4FF0000C0A464FF000080CF068
-:1055E0000F03CCF303171FFA8AF63B4472435A4366
-:1055F000120392FBF7F73A0502D0002364E600BFDE
-:105600004FF6F07217425DD048F68902C8F688025C
-:10561000A7FB0223DB081A0558D042F293437A080D
-:10562000C9F24923A2FB03239B081A0550D04EF66A
-:105630004F42C4F6C462A7FB02239B081A0549D057
-:105640004AF6AB22CAF6AA22A7FB0232D3081E05ED
-:1056500042D048F6A333CBF62E23A7FB0336F3083C
-:105660001E053BD04CF6CD43CCF6CC43A7FB03360E
-:10567000F3081D0534D048F63963C3F6E303A7FBEE
-:1056800003356B081D052DD047F6F8731F422BD04C
-:1056900044F62513C2F29243A7FB03357B1B05EBAF
-:1056A00053039B081D0523D093081A0522D0B30885
-:1056B0001A0521D043F6FC7217429ED1BB08042183
-:1056C0001BE000BF3B09102117E000BF0F2114E0D1
-:1056D0000E2112E00D2110E00C210EE00B210CE058
-:1056E0000A210AE0092108E0FB08082105E000BFC3
-:1056F000072102E0062100E005214FEA133A0023CA
-:105700004FF0000CE0E500BFF0B542F20007C4F234
-:105710000807B868C10740F0558100F00E0C42F64A
-:105720004811BCF1020FC1F2000140F085800A6A05
-:105730006FF00F0001F124030C6994425ED08D6973
-:1057400091F8304091F8276015442A4604F0FE0491
-:10575000022E08BF1A46022C18BF2A4612783A6059
-:105760000A6A0E69013296420A6247D08D6991F841
-:10577000306091F8274015442A4606F0FE06022CB8
-:1057800008BF1A46022E18BF2A4612783A600A6AE3
-:105790000E69013296420A6230D08D6991F830600C
-:1057A00091F8274015442A4606F0FE06022C08BF51
-:1057B0001A46022E18BF2A4612783A600A6A0E6903
-:1057C000013296420A6219D08D6991F8306091F8E1
-:1057D000274015442A4606F0FE06022C08BF1A464A
-:1057E000022E18BF2A46127804303A600A6A02F183
-:1057F00001020A62A0D1086990421DD1786820F0A8
-:105800000200786091F8300000F0FE0002284FF0AE
-:10581000000081F8260021D191F8270001280BD142
-:1058200091F83100012222EA1010BCF1040F18BFD8
-:10583000BCF10C0F07D018E00020BCF1040F18BF1A
-:10584000BCF10C0F11D17A69D2076ED0D7F814E0F1
-:105850005FEA8E7212D400231DE000BF0120BCF16C
-:10586000040F18BFBCF10C0FEDD0BCF1060F40F0D7
-:105870009D807B699A0769D4002274E001224A71F5
-:1058800091F8262091F830403023002A08BF2023C9
-:10589000032C18BF20235FEA4E7242BF01220A7216
-:1058A00003F500735FEACE6208D45FEA0E7242BF6E
-:1058B0000122CA7143F4807304E000BF01228A719F
-:1058C00043F0800391F8306091F8272006F0FE0441
-:1058D000D7F800E0022C40EA030008BF012A03D0F9
-:1058E0004A69CB6902F803E0CA69CB6801329A427F
-:1058F000CA6119D17A68002322F001027A6091F816
-:1059000030200B7102F0FE02022A43D191F82720C9
-:1059100081F82730032A43D0022A45D0012A08BF44
-:1059200040F0010042E000BF7A6991F8302002F0B7
-:10593000FE02BCF10C0F39D1022A37D0CA68CB69FC
-:10594000934218BF40F0400034E000BF012291F8BC
-:1059500026704A7191F830603022002F08BF202253
-:10596000032E18BF20225F0742BF01270F7202F5E6
-:105970000072DF0608D41B0742BF0123CB7142F43B
-:105980008072104316E000BF012342F080028B7149
-:1059900010430FE040F00200BCF10C0FCCD005E04A
-:1059A00040F0040002E000BF40F00200BCF1000F34
-:1059B00008BFBA69002808BFF0BD096811B1BDE889
-:1059C000F0400847F0BD00BF40F20420C0F20E20B6
-:1059D000704700BF0120704742F64811C1F2000134
-:1059E00091F83120D2070AD10022C1E9000201203A
-:1059F00081F8262081F824200A7281F831000020E5
-:105A0000704700BF10B501200E210022002401F0D4
-:105A1000C3FF42F64811C1F20001002081F8314075
-:105A200010BD00BF022800F09380012804BF6FF072
-:105A30000300704700281CBF6FF0040070474EF24F
-:105A4000802CCEF2000C6FF0FF014FF000734CF889
-:105A5000013043F25412BFF34F8FC4F20502BFF37B
-:105A60006F8F11684FF4005363EA010142F8501C34
-:105A700040F21001C1F200010B689B09106880041C
-:105A800011D47BB1106880040DD4012B0AD01068AA
-:105A9000800408D4022B05D01068800403D4043B92
-:105AA000581CEBD100BF41F21052C4F20502D2F8EB
-:105AB000F00E20F00100C2F8F00E08688309D2F859
-:105AC000F00EC00714D093B1D2F8F00EC0070FD07B
-:105AD000012B0CD0D2F8F00EC00709D0022B06D053
-:105AE000D2F8F00EC00703D0043B581CE7D100BF2A
-:105AF000106820F001001060086881091068C00774
-:105B000011D079B11068C0070DD001290AD01068F2
-:105B1000C00708D0022905D01068C00703D0043997
-:105B2000481CEBD100BF4FF0007042F64811CCF892
-:105B30000000C1F2000191F83120002002F0FD02C6
-:105B400081F826004860087281F83120704700BF54
-:105B500042F64811C1F2000191F83100C20704BFBA
-:105B60004FF0FF307047800744BF00207047A022ED
-:105B700040F6000341F21050C4F20502C0F60013D3
-:105B8000C4F205001360026840F2100C42F00302F8
-:105B90000260C1F2000CDCF800309B090268D207F9
-:105BA00012D1002B54D00268D2070DD1012B4FD057
-:105BB0000268D20708D1022B4AD00268D20703D16B
-:105BC000043B5A1CEAD143E0D0F8F02E42F0030225
-:105BD000C0F8F02EDCF800209309D0F8F02ED207A0
-:105BE00014D1ABB3D0F8F02ED2070FD1012B2FD0A8
-:105BF000D0F8F02ED20709D1022B29D0D0F8F02E00
-:105C0000D20703D1043B5A1CE7D121E043F25410E0
-:105C1000C4F2050002684FF4005363EA020240F840
-:105C2000502CDCF80020920903689B0414D47AB14C
-:105C300003689B0410D4012A0AD003689B040BD488
-:105C4000022A05D003689B0406D4043A531CEBD106
-:105C50004FF0FF3000BF704742F24C02C4F208021E
-:105C60001069012320F001001061106840F002006B
-:105C70001060002042F8480C42F8443C4FF4407257
-:105C80000A8681F82600486008724EF28021CEF222
-:105C900000014FF000724FF680630A60CFF6FF7389
-:105CA000CA50704760E200BF80B5024600286FF01E
-:105CB000040018BF002901D180BD00BF42F6481082
-:105CC000C1F2000090F831305B075CBF4FF0FF304D
-:105CD00080BD0379012B04BF6FF0010080BD01235B
-:105CE00003710023426142F20402C160C0F8053032
-:105CF000C361C4F20802136843F00103136090F813
-:105D0000302002F0FE02022A0DD190F8272052B96D
-:105D1000022280F82720243000F026FA00281CBF39
-:105D20004FF0FF3080BD002080BD00BFB0B50546FC
-:105D300000286FF0040018BF002901D1B0BD00BFDA
-:105D40001446002A08BFB0BD42F64810C1F2000058
-:105D500090F8312052072FD590F8302002F0FE0243
-:105D6000022A29D102790323012A80F8273004BFAF
-:105D70006FF00100B0BD012202710022416142F2C8
-:105D80000401C460C0F80520C261C4F208010A68B9
-:105D900042F001020A6090F8301001F0FE01022981
-:105DA0000ED190F8271059B9022180F8271024301D
-:105DB000214600F0D9F918B14FF0FF30B0BD00BF57
-:105DC00028462146BDE8B040CEE100BF42F648106B
-:105DD000C1F20000006A704742F64810C1F20000AC
-:105DE000C06970472DE9F04742F64814C1F200043B
-:105DF00094F83130024698074FF0FF3058BFBDE8A5
-:105E0000F08750FA82F7192F42D86FF006004FF052
-:105E1000010A0026DFE807F0170E0E140E0E3C3CB8
-:105E20003C3C3C3C3C3C3C401010101046587A88AE
-:105E300098A600BFBDE8F0874FF0FF30BDE8F087BF
-:105E40004FF0040A0126207994F82630184367D1D0
-:105E5000C2F30220E123C340DB0704BF6FF0080058
-:105E6000BDE8F08792A353F8207012F4405000F080
-:105E7000D180B0F5005F00F0CB80B0F5805F1CBF33
-:105E80006FF00900BDE8F08747F01807C2E000BFD7
-:105E90006FF00300BDE8F087002084F82410BDE80F
-:105EA000F08700BF00296DD043F0080084F831006E
-:105EB00042F20400C4F20800816D41F001018165E5
-:105EC0000020BDE8F08700BF00296BD094F83000B7
-:105ED00040F00200062806D001200E21C12201F068
-:105EE0005BFD94F8313043F0100084F8310042F249
-:105EF0000400C4F20800816C21F002018164016891
-:105F000041F0040101600020BDE8F08742F2040086
-:105F10000029C4F2080067D094F8261000296DD03B
-:105F20006FF00100BDE8F08742F20400C4F20800FF
-:105F3000016821F00201016005214160002084F820
-:105F40002600BDE8F08700BF42F20400C4F208005A
-:105F5000016821F0010101600321416000202071EE
-:105F6000BDE8F08742F20400C4F20800016821F0A5
-:105F700003010160072141600020207184F82600A0
-:105F8000BDE8F08703F0F70084F8310042F2040026
-:105F9000C4F20800816D21F0010181650020BDE897
-:105FA000F08700BF03F0EF0084F8310042F20400F4
-:105FB000C4F20800816C41F002018164016821F0A3
-:105FC0000401016094F8300040F00200062804BF8C
-:105FD0000020BDE8F08701200E21802201F0DCFCCA
-:105FE0000020BDE8F08700BF8168002221F0400159
-:105FF0008160002084F82620BDE8F08781680122B6
-:1060000041F040018160002084F82620BDE8F0873F
-:1060100047F0080712F4404004D0B0F5804F3FD15C
-:1060200047F0040742F20408C4F20808D8F80C90BC
-:1060300012F4403F1CBF6FF00B00BDE8F0874CF638
-:106040007402C1F2004208461146FEF783FF013098
-:106050002AD094F83100C122C00684F830A058BF7D
-:10606000802201200E21002E18BF802201F094FC16
-:10607000D8F80C0040EA090020F0C000C8F80C0075
-:10608000D8F8080000F0C0003843C8F8080094F8B9
-:10609000310040F0040084F831000020BDE8F087B2
-:1060A0006FF00A00BDE8F0876FF00700BDE8F087E9
-:1060B00003000000000000000000000000000000DD
-:1060C00000000000000000000100000002000000CD
-:1060D00080B542F2140042F64811C4F20800C1F241
-:1060E000000100680A794B79C0F3801C887902F0BE
-:1060F000010291F807E04CEA420203F0010342EA90
-:10610000C30200F00100097A42EA00100EF0010219
-:1061100001F0010140EA421040EA811080F00100E4
-:1061200080BD00BF42F64811C1F2000191F8312054
-:106130000021042838BF6FF00301500758BF4FF00B
-:10614000FF310846704700BF42F64810C1F2000018
-:1061500090F83100400704D542F21800C4F208005C
-:1061600000680020704700BF70B5054600286FF03A
-:10617000040000F097800C46002900F0938042F65E
-:106180004816C1F2000696F8310040075CBF4FF098
-:10619000FF3070BD96F8260000281CBF6FF001008C
-:1061A00070BD96F83000012100F0FE00022886F84C
-:1061B00026102FD196F8270060BB317901200129E4
-:1061C00086F8270022D030710020C6F8050006F1BD
-:1061D0002501F06142F20400F4607161C4F208002C
-:1061E000016841F00101016096F8300000F0FE0006
-:1061F00002280FD196F8270060B9022086F8270000
-:1062000006F124002146FFF7AFFF18B14FF0FF3031
-:1062100070BD00BF42F204000021C4F20800B56165
-:1062200034613162026992060CD496F828100F2965
-:106230000AD90021A1421BD0016841F0020101608E
-:1062400000202FE086F82810002100BFB2694B1C07
-:106250003362515C40F8041C96F8281034694A1CDB
-:10626000D1B20F29316A86F82820E3D8A142EDD1B6
-:1062700096F83000002100F0FE00022886F8261073
-:1062800012D196F8270001281CBF002070BD96F897
-:106290003100012100F0100081EA101000284FF0B9
-:1062A000000006D170BD00BF012000284FF00000A3
-:1062B000F8D03168002908BF70BD01208847002050
-:1062C00070BD000000F00CB842F67C10C1F2000076
-:1062D0000078704742F67C10C1F2000000787047E9
-:1062E000F0B581B046F24015C4F200056F6E6868E3
-:1062F000A968EC6F01EA000638036E60EC670BD406
-:10630000F8021AD4700629D4F00537D470073ED4A9
-:10631000F00700F0418258E0686E40F400206866A3
-:1063200040F67800C1F20000C168426841F0010106
-:10633000C16001209047F802E4D5686E40F48010F7
-:10634000686640F67800C1F20000C168426821F03A
-:106350000701C160022090477006D5D500F062FAAF
-:1063600040F67800C1F20000C2680123416863F37F
-:106370004202C26004208847F005C7D540F6780085
-:10638000C1F200004168102088477007C0D540F670
-:106390007807686CC1F20007F96800F04060B0F15E
-:1063A000006F21F0060007D140F004007968F86022
-:1063B0000820884703E000BF40F00200F8607968D9
-:1063C00020208847F00700F0E781E86EF8B145F239
-:1063D000000140F67800C1F20001C1F2000000BFE8
-:1063E0002A6842F400522A60D1E90A23C0E9042352
-:1063F0002A682B681342F3D0296821F400512960E0
-:106400000121E9660170826800200121904714F49F
-:106410007C1F00F0CB80E0031ED545F20000C1F2E6
-:106420000000B0F87C10D0E91D3211448B42816726
-:106430000CD140F67802C1F200020021926880F887
-:106440007F1080200421904706E000BF90F87F0075
-:1064500010B1802000F044FBA0031FD545F20000DE
-:10646000C1F20000B0F8FC10D0E93D3211448B427B
-:10647000C0F8F8100CD140F67802C1F200020021F9
-:10648000926880F8FF1081200421904706E000BF49
-:1064900090F8FF0010B1812000F022FB60031FD5AF
-:1064A00045F20000C1F20000B0F87C11D0E95D3285
-:1064B00011448B42C0F878110CD140F67802C1F239
-:1064C00000020021926880F87F1182200421904709
-:1064D00006E000BF90F87F0110B1822000F000FBC1
-:1064E00020031FD545F20000C1F20000B0F8FC11F6
-:1064F000D0E97D3211448B42C0F8F8110CD140F63E
-:106500007802C1F200020021926880F8FF11832016
-:106510000421904706E000BF90F8FF0110B18320EE
-:1065200000F0DEFAE0021FD545F20000C1F20000E3
-:10653000B0F87C12D0E99D3211448B42C0F8781239
-:106540000CD140F67802C1F200020021926880F876
-:106550007F1284200421904706E000BF90F87F025C
-:1065600010B1842000F0BCFAA0021FD545F2000053
-:10657000C1F20000B0F8FC12D0E9BD3211448B42E8
-:10658000C0F8F8120CD140F67802C1F200020021E6
-:10659000926880F8FF1285200421904706E000BF32
-:1065A00090F8FF0210B1852000F09AFAA50600F0DD
-:1065B000F380E0072BD045F20000C1F20000C28951
-:1065C000838F41886FF3DF329A1A93B26FF3DF2122
-:1065D000B3FBF1F7866B07FB1133416B16FA82F2BE
-:1065E00082634BB9914207D090F83F0078B1002008
-:1065F00000F076FA0BE000BF40F67802C1F200022C
-:106600000021926880F83F10002002219047A007E7
-:1066100031D545F20000C1F20000B0F88E20B0F88C
-:10662000BC30B0F882106FF3DF329A1A93B26FF376
-:10663000DF21B3FBF1F7D0F8B86007FB1133D0F8D6
-:10664000B41016FA82F2C0F8B8204BB9914207D0C4
-:1066500090F8BF0078B1012000F042FA0BE000BFD3
-:1066600040F67802C1F200020021926880F8BF1063
-:10667000012002219047600731D545F20000C1F2A8
-:106680000000B0F80E21B0F83C31B0F802116FF301
-:10669000DF329A1A93B26FF3DF21B3FBF1F7D0F830
-:1066A000386107FB1133D0F8341116FA82F2C0F8C2
-:1066B00038214BB9914207D090F83F0178B10220C0
-:1066C00000F00EFA0BE000BF40F67802C1F20002C3
-:1066D0000021926880F83F11022002219047200794
-:1066E00031D545F20000C1F20000B0F88E21B0F8BB
-:1066F000BC31B0F882116FF3DF329A1A93B26FF3A4
-:10670000DF21B3FBF1F7D0F8B86107FB1133D0F804
-:10671000B41116FA82F2C0F8B8214BB9914207D0F1
-:1067200090F8BF0178B1032000F0DAF90BE000BF68
-:1067300040F67802C1F200020021926880F8BF1191
-:10674000032002219047E00624D545F20000C1F263
-:106750000000B0F80E22B0F83C32B0F802126FF32D
-:10676000DF329A1A93B26FF3DF21B3FBF1F7D0F85F
-:10677000386207FB1133D0F8341216FA82F2C0F8EF
-:1067800038225BB9914209D090F83F0210B1042041
-:1067900000F0A6F9002D0ED401B0F0BD40F678024D
-:1067A000C1F200020021926880F83F120420022109
-:1067B0009047002DF0D545F20002C1F20002B2F878
-:1067C0008E12B2F8BC32B2F882026FF3DF31591A7E
-:1067D0008BB26FF3DF20B3FBF0F7D2F8B86207FBA0
-:1067E0001033D2F8B40216FA81F1C2F8B8125BB9CC
-:1067F000884209D092F8BF020028CDD0052001B010
-:10680000BDE8F0406CE100BF40F67800C1F2000046
-:10681000002783680520022182F8BF7201B0BDE81D
-:10682000F04018472DE9F04145F2000440F67807A2
-:10683000C1F2000446F2B415C1F20007002620465A
-:106840004FF44071C4F20005C7E904663E7002F0DF
-:1068500091F845F20030C1F200004FF4C07102F02F
-:1068600089F8286920F080102861686920F080107C
-:106870006861A86920F08010A861E86920F08010A4
-:10688000E861286A20F0801028624FF0FF3045F858
-:106890003C0C45F8386C45F8700C55F8080C40F283
-:1068A000100645F8080CA868C1F20006A860306818
-:1068B000800955F8041C89B178B155F8041C69B1F8
-:1068C00001280AD055F8041C41B1022805D055F81A
-:1068D000041C19B10438411CEBD100BF4FF0FF304C
-:1068E000286030688009296871B160B1296859B1A0
-:1068F000012808D0296839B1022804D0296819B1C3
-:106900000438411CEFD100BF55F8740C20F47F000F
-:1069100045F8740CF86842F67D17C1F20007397823
-:1069200094F83F2000F00600B2FA82F252090428DF
-:1069300002EA510066D168B32046402102F01AF8FD
-:106940000020C2F2080000F5621020600120002142
-:10695000C4E902012860306880092968C90711D09C
-:1069600078B12968C9070DD001280AD02968C9075C
-:1069700008D0022805D02968C90703D00438411C73
-:10698000EBD100BFE86820F0ED00E860E86840F077
-:10699000C000E8603878800740F1978094F87F0065
-:1069A000002840F0928004F14000402101F0E2FF15
-:1069B0004FF00150206401200021C4E912014FF47E
-:1069C00080302860306880092968C90311D578B102
-:1069D0002968C9030DD501280AD02968C90308D53B
-:1069E000022805D02968C90303D50438411CEBD11E
-:1069F00000BFE86820F46D00E860E86840F44000FB
-:106A0000E86062E040F20008C2F2080850B3204695
-:106A1000402101F0AFFF08F5004020600120002177
-:106A2000C4E902012860306880092968C90711D0CB
-:106A300078B12968C9070DD001280AD02968C9078B
-:106A400008D0022805D02968C90703D00438411CA2
-:106A5000EBD100BFE86820F0ED00E860E86840F0A6
-:106A6000C000E860387880072FD594F87F0060BBBD
-:106A700004F14000402101F07DFF01200021C4E924
-:106A800012014FF48030C4F84080286030688009DB
-:106A90002968C90311D578B12968C9030DD5012822
-:106AA0000AD02968C90308D5022805D02968C90376
-:106AB00003D50438411CEBD100BFE86820F46D0019
-:106AC000E860E86840F44000E86045F85C4C55F840
-:106AD0000C0C40F0080045F80C0CBDE8F08100BF3C
-:106AE0002DE9F04100F00F025300C40943EAD0132E
-:106AF00042EA0410012245F2000402FA00F045F2D5
-:106B00000032C1F20004C1F2000204EB831602EB72
-:106B10004312B36BD6E90C4546F2B81104EB030EF1
-:106B2000A5EB030C40F21003C1F200031B68C4F292
-:106B300000019C09BCF5804F28BF4FF4804C0B68C6
-:106B4000034213D07CB10B6803420FD0012C0AD052
-:106B50000B6803420AD0022C05D00B68034205D013
-:106B6000043C631CEBD100BFBDE8F0810023C2E907
-:106B70000033C2E90233C2E90433C2E90633546880
-:106B80000123136044EA0C4348F2800423430EF5CA
-:106B90008054C2E9013E02F10C030EF500550EF5DA
-:106BA0004057B0C3F3680EF5804823F0FF03C2F8E6
-:106BB0001880C6E90223A6F83CC051F8082C1043FF
-:106BC00041F8080CBDE8F08140F20320C0F20C202F
-:106BD000704700BF0720704710B542F67D14C1F220
-:106BE00000042278D2070FD140F67802C1F20002E9
-:106BF000C2E9010142F67C10C1F2000002210170DD
-:106C0000FFF762FB01202070002010BD80B5FFF768
-:106C100061FB42F67C10C1F200000021017042F6D7
-:106C20007D11C1F20001087800F0FE0200200A7018
-:106C300080BD00BFB0B5022800F09280012800F0AE
-:106C4000CD8000281CBF6FF00400B0BD4EF20010D4
-:106C5000CEF200004FF48071C0F88010BFF34F8F68
-:106C6000BFF36F8FC0F8801142F67D10C1F20000B3
-:106C70000178002401F0FD01017040F67800C1F2B6
-:106C800000000470C168602521F00F01C16045F269
-:106C90000000C1F200004FF44071C4F2050501F09C
-:106CA00069FE45F20030C1F200004FF4C07101F0FE
-:106CB00061FE2868C00740F0FA8043F20401C4F284
-:106CC00004010A6841F22C4042F02002C4F205009F
-:106CD0000A60D0F8D41321F00101C0F8D41340F2B7
-:106CE0001001C1F200010A689209D0F8D833DB071D
-:106CF00014D092B1D0F8D833DB070FD0012A0CD0D2
-:106D0000D0F8D833DB0709D0022A06D0D0F8D83320
-:106D1000DB0703D0043A531CE7D100BF50F8042C22
-:106D200022F0010240F8042C096889090268D207A0
-:106D300011D079B10268D2070DD001290AD00268BA
-:106D4000D20708D0022905D00268D20703D004393F
-:106D50004A1CEBD100BF012028600020B0BD00BF5D
-:106D600042F67D14C1F200042078C00704BF4FF042
-:106D7000FF30B0BD2078800744BF0020B0BD602147
-:106D800040F6000241F22C40C4F20501C0F200724C
-:106D9000C4F205000A6050F8041C41F0010140F8FB
-:106DA000041C40F21001C1F200010A689209036854
-:106DB000DB0717D1002A53D00368DB0712D1012A61
-:106DC0004ED00368DB070DD1022A49D00368DB07E8
-:106DD00008D1043A531CEAD142E000BF6FF003002F
-:106DE000B0BD00BFD0F8D42342F00102C0F8D423D4
-:106DF0000A689209D0F8D833DB0715D182B3D0F8EE
-:106E0000D833DB0710D1012A2AD0D0F8D833DB07DA
-:106E10000AD1022A24D0D0F8D833DB0704D1043AAF
-:106E2000531CE7D11CE000BF46F24015C4F2000538
-:106E300002202860086880092968890714D078B181
-:106E40002968890710D001280AD0296889070BD042
-:106E5000022805D02968890706D00438411CEBD1E7
-:106E60004FF0FF3000BFB0BD0A20A86643F2040017
-:106E7000C4F20400016821F020010160FFF7D2FC98
-:106E8000686C4FF4807120F0807068640920C1F64E
-:106E90000000686640F24510A860207840F00200CB
-:106EA00020704EF20010CEF2000001600024204657
-:106EB000B0BD00BF42F67D10C1F20000007880072F
-:106EC0005CBF4FF0FF30704746F24010C4F2000044
-:106ED000016841F0010101600020704742F67D1019
-:106EE000C1F20000007880075CBF4FF0FF307047B0
-:106EF00046F24010C4F20000016821F00101016077
-:106F00000020704742F67D10C1F200000078800733
-:106F10005CBF0020704746F2841040F67801C4F24E
-:106F20000000C1F200010068C96800F0810221F090
-:106F30000800012A08BF0830704700BF42F67D10E4
-:106F4000C1F20000007880075CBF4FF0FF3070474F
-:106F500046F28410C4F20000016821F400010160CF
-:106F6000016841F0400101600020704742F67D1148
-:106F7000C1F20001097889075CBF4FF0FF3070470C
-:106F800046F254114006C4F200010860086840F05F
-:106F9000807008600020704742F67D11C1F2000148
-:106FA0000978890712D540F67801C1F200010A7804
-:106FB00062B100220A70D1E90423436002600878BC
-:106FC000002818BF4FF0FF30704700BF4FF0FF3070
-:106FD000704700BF2DE9F04F81B000F00F04052C81
-:106FE00007D8054642F67D10C1F200000078800700
-:106FF00004D44FF0FF3001B0BDE8F08F8846600048
-:1070000045F2000140EAD510C1F2000101EB801702
-:1070100097F83F0020B16FF0010001B0BDE8F08F9C
-:10702000E80946F2B41A4FEA0019384640211646DC
-:10703000C4F2000AC2F3C12B01F09CFC40F67800B8
-:10704000C1F20000C06887F83E80B8F1010F08BFA8
-:107050000BF1010B00F006004FEA8B710228084685
-:1070600008BF4FF08040BBF1010F98BF08460021D8
-:10707000C0F2FF7101EA06414FF00052002D04BF3B
-:1070800048F20002C2F200021144084438600120B4
-:107090000021C7E90201102101EAD50121448840FD
-:1070A00040F21001CAF80000C1F200010968890924
-:1070B000DAF80020024214D091B1DAF8002002423E
-:1070C0000FD001290CD0DAF80020024209D00229A1
-:1070D00006D0DAF80020024203D004394A1CE7D176
-:1070E00000BF0AF10C0141EA8401ED200A6800FAB0
-:1070F00009F022EA00000860C02068F383000A68F3
-:1071000000FA09F010430860002001B0BDE8F08FDC
-:107110002DE9F04100F00F02052A07D8014642F69A
-:107120007D10C1F200000078800703D44FF0FF30DB
-:10713000BDE8F081500040EAD11C45F20000C1F2E8
-:10714000000000EB8C1090F83F30002B1CBF6FF05C
-:107150000100BDE8F08146F2C014C909C4F2000480
-:107160000901ED2354F822708B4027EA030344F809
-:107170002230402354F8227003FA01F145F200381E
-:107180003943C1F2000844F82210402108EB4C15A5
-:107190004FEA4C1601F0EEFB002048F80600C5E966
-:1071A0000100C5E90300C5E90500E861BDE8F0811B
-:1071B00070B500F00F02052A06D842F67D13C1F221
-:1071C00000031B789B0703D44FF0FF3070BD00BF56
-:1071D000530045F2000543EAD013C1F2000505EB68
-:1071E000831393F83F50002D1CBF6FF0010070BD5A
-:1071F000C50946F2B41E4FEA051C0124C4F2000E74
-:1072000004FA0CF541B10EF10C0040EA820001686D
-:1072100029430160002070BD0EF10C0141EA82019A
-:107220000E6826EA05050D600025DD60102303EADF
-:10723000D000104404FA00F040F21002CEF8000032
-:10724000C1F2000212689209DEF80030034214D045
-:1072500092B1DEF8003003420FD0012A0CD0DEF8E4
-:107260000030034209D0022A06D0DEF80030034283
-:1072700003D0043A531CE7D100BF40200A6800FA4B
-:107280000CF010430860002070BD00BF10B500F086
-:107290000F03052B06D842F67D14C1F200042478B2
-:1072A000A40703D44FF0FF3010BD00BF5B0045F2D0
-:1072B000000443EAD013C1F2000404EB831C6346CC
-:1072C00013F83F4F002C1CBF6FF0010010BD0124CC
-:1072D0001C7000240CF1300316C3ACF83C40FFF7DF
-:1072E000FFFB204610BD00BF00F00F01052984BF41
-:1072F00000207047402202EA500040EAC11045F2E7
-:107300000001C1F200010844806B7047B0B500F085
-:107310000F01052906D842F67D12C1F2000212784B
-:10732000920703D44FF0FF30B0BD00BF4A001025D4
-:10733000C40942EAD01C05EAD00046F2B4134FEA71
-:10734000041E41EA041201240844C4F2000304FAB2
-:1073500000F040F210051860C1F200052D6804FA33
-:1073600002F2AC091D68054211D07CB11D680542CE
-:107370000DD0012C0AD01D68054208D0022C05D082
-:107380001D68054203D0043C651CEBD100BF9A6028
-:1073900003F10C0242EA810140200A6800FA0EF073
-:1073A0001043086045F20000C1F2000000EB8C11B0
-:1073B000C86820F0FF00C860002081F83F00B0BD21
-:1073C00042F67D10C1F20000007880075CBF00200B
-:1073D000704746F24C10C4F200000068C0F3CA00C7
-:1073E0007047000040F64010C1F200000168013112
-:1073F0000129016084BF0020704741F24440C4F27B
-:10740000050050F8041C41F0010140F8041C40F252
-:107410001001C1F20001096889090268D20715D17B
-:1074200079B10268D20711D101290AD00268D207C6
-:107430000CD1022905D00268D20707D104394A1CB1
-:10744000EBD14FF0FF3000BF704700BF43F2001098
-:10745000C4F20500016D4FF4002262EA01010160EF
-:1074600042F2080140F69C02C4F200010020C1F281
-:107470000002C1F80801C2E90000C2E90200C1F837
-:107480002801C2E90500C2E90700C1F84801C2E9C4
-:107490000A00C2E90C00C1F86801C2E90F00C2E9A4
-:1074A0001100C1F88801C2E91400C2E91600C1F850
-:1074B000A801C2E91900C2E91B00C1F8C801C2E96C
-:1074C0001E00C2E92000C1F8E801C2E92300C2E9B8
-:1074D0002500FF220A608A604EF20011CEF2000100
-:1074E0000422C1F880210A60704700BF40F64010B6
-:1074F000C1F200000168002904BF4FF0FF3070475F
-:10750000013901601CBF0020704741F24040C4F2C5
-:107510000500016821F0010101604EF28010CEF2F9
-:10752000000004210160BFF34F8FBFF36F8FC0F8DD
-:1075300000110020704700BF02460F284FF0FF30B7
-:1075400098BF032900D9704743F21C1CC4F2040CF5
-:10755000DCF8003052000320904023EA0000914004
-:107560000843CCF800000020704700BF2DE9F04F21
-:10757000072884BF4FF0FF30BDE8F08FDDF82CA066
-:10758000DDE9099E012740F6980C07FA00F4C1F2E4
-:10759000000C5CE8005F25425AD125434CE80056B8
-:1075A000C6B15CE8005F254252D125434CE8005645
-:1075B00086B15CE8005F25424AD125434CE800567D
-:1075C00046B15CE8005F254242D125434CE80056B5
-:1075D000002EDED142F2300540F69C08C4F20005D0
-:1075E00000EB800BC1F2000808EB8B0705EB4010A5
-:1075F0000026C7F810A0C0F8E060C0F8DC6045F8CD
-:10760000284C45F8204CC0F8D86001262E6040F286
-:107610001006C1F20006366800F1D00AB6092868E3
-:10762000C0071BD17EB12868C00717D1012E0AD030
-:107630002868C00712D1022E05D02868C0070DD1D6
-:10764000043E701CEBD14FF0FF3000BFBDE8F08F5F
-:107650004FF0FF30BFF32F8FBDE8F08F40F6FF7083
-:107660008342C9F38145BB6028BF034629EA000075
-:1076700003FA05F55FEA491640EA0300CAF800106C
-:10768000CAF8042048BF2944C9F341555FEA0916E6
-:1076900003FA05F548BF2A4448F82B107A60FB60CE
-:1076A000CAF80C005FEACE70CAF810E01ED1E143C0
-:1076B0005CE8000F08404CE80002BAB15CE8000F3B
-:1076C00008404CE800028AB15CE8000F08404CE832
-:1076D00000025AB15CE8000F08404CE80002002AA2
-:1076E0004FF0000008BFBDE8F08FE1E70020BDE8E3
-:1076F000F08F00BF072884BF4FF0FF307047012193
-:1077000040F6980C8140C1F2000C5CE8003F0B424F
-:107710002AD10B434CE80032DAB15CE8003F0B425F
-:1077200022D143EA01024CE8002393B15CE8003F18
-:107730000B4219D143EA01024CE800234BB15CE84B
-:10774000003F0B4210D143EA01024CE80023002B1A
-:10775000DBD142F210114001C4F200010A5842F09C
-:1077600001020A50002070474FF0FF30BFF32F8F07
-:10777000704700BF072884BF4FF0FF3070470121DA
-:10778000814040F698026FEA010CC1F2000200BF8E
-:1077900052E8003F03EA0C0342E80031A9B152E885
-:1077A000001F01EA0C0142E8001373B152E8001F08
-:1077B00001EA0C0142E800133BB152E8001F01EA64
-:1077C0000C0142E80013002BE2D142F210114001FB
-:1077D000C4F200010A5822F001020A50002070474A
-:1077E000072884BF0020704740F69801C1F20001CD
-:1077F000096821FA00F000F001007047072884BFF3
-:107800000020704740F69C0200EB8001C1F20002AC
-:1078100002EB810142F20C124001C4F20002C9687D
-:1078200010586FF31F30081A704700BF2DE9F04F52
-:1078300081B042F2000840F6980740F69C0AC4F274
-:1078400000084FF0010BC1F20007C1F2000A40F638
-:10785000FF7900240EE000BFD06820EA0900084349
-:10786000D060106940F00100106100BF0134082CA5
-:1078700000F08E80D8F800000BFA04F10842F5D031
-:10788000D8F8040008EB4412084202F580722DD0AB
-:1078900004EB84030AEB830CC8F80810604650F828
-:1078A0000C5F50F8046CAE424ED1C94357E8000F4C
-:1078B000084047E8000292B157E8000F084047E847
-:1078C000000262B157E8000F084047E8000232B1F9
-:1078D00057E8000F084047E80002002AE6D1DCF82C
-:1078E00010100029C2D001202CE000BFD8F80C00F5
-:1078F0000842BBD000201061D060C84357E8002F79
-:10790000024047E8002393B157E8002F024047E8C0
-:10791000002363B157E8002F024047E8002333B14A
-:1079200057E8002F024047E80023002BE6D104EB84
-:107930008400C8F810100AEB8000016900293FF4A8
-:1079400095AF0220884791E7711B494528BF4946FA
-:107950004E190660D06840010AD55AF8230010601D
-:10796000D668C6F3814601FA06F630444AF8230089
-:10797000D06800017FF570AFDCF804005060D36878
-:10798000C3F3415301FA03F31844CCF8040063E74E
-:1079900001B0BDE8F08F000003460F284FF0FF3024
-:1079A00098BF1F2900D97047D80100EB810046F22B
-:1079B0000001C4F2080142500020704703288FBF25
-:1079C0004FF0FF3046F60042C4F2080242F82010A1
-:1079D00098BF0020704700BF46F680420146C4F2BF
-:1079E000080200201160704750B140F60C418842F7
-:1079F00006D040F6080188421CBF4FF0FF307047A8
-:107A000046F68441C4F2080108600020704700BFB8
-:107A1000012884BF4FF0FF30704707294FF0FF3334
-:107A200098BF012A02D91846704700BF46F688431E
-:107A30004FF0010CC4F208030CFA01F132B153F813
-:107A40002020114343F820100020704753F82020D5
-:107A500022EA010143F8201000231846704700BFB6
-:107A6000012884BF4FF0FF30704746F69041C4F2C2
-:107A700008010A68002822F001024FF0000018BF38
-:107A800001320A60704700BF10B541EA0003072BBE
-:107A90004FF0FF3398BF1F2A02D9184610BD00BF10
-:107AA00046F600630328C4F2080311D8C4004FF05F
-:107AB000FF0CD3F800E00CFA04F02EEA0000186086
-:107AC00042EA41101968A04008431860002010BD28
-:107AD0000438C0B2C0004FF0FF0CD3F804E00CFA39
-:107AE00000F42EEA04045C6042EA41115A6801FA8B
-:107AF00000F0104358600023184610BD0648804728
-:107B000006480047FEE7FEE7FEE7FEE7FEE7FEE782
-:107B1000FEE7FEE7FEE7FEE7F5820014150100141C
-:107B2000B0B543F22012C4F204021368402043F4BB
-:107B300070431360536840F6000143F47043536090
-:107B400045F20C2340F6000CC4F200031F24C4F2DB
-:107B50000500C0F60011C0F2001C1C600023C0F834
-:107B60002CC040F8283C01F14073C0F808C0036302
-:107B7000436840F2000EC0F20E6E43F00103436012
-:107B8000C0F804E00368DB0701BF03685FEAC37362
-:107B900003685FEAC37302D10368DB07F2D00EF516
-:107BA0000863C162436000BF0368DB0701BF03686D
-:107BB0005FEAC37303685FEAC37302D10368DB073C
-:107BC000F2D0C1621368092464F30F331360536861
-:107BD00064F30F33536050F8202C4FF4804342F08D
-:107BE000010240F8202C47F6EC7200BFC3F34D04AD
-:107BF00083EA5305234665F38E339AB15D0884EA20
-:107C0000530464F38E356C0884EA530363F38E34B3
-:107C1000630883EA55039B0343EA54036FF3DF339E
-:107C2000043AE3E70EF500221A4340F81C2C42F216
-:107C30000002C0F2300240F8182C50F8182C42F024
-:107C4000620240F8182C40F61C02C0F2006240F8B4
-:107C5000202C50F8242CD2070CD150F8242CD20719
-:107C600004BF50F8242C5FEAC27203D150F8242CD0
-:107C7000D207EED001F10802826040F60402C0F2A1
-:107C800000328431C260C0F810C0C0F814C08161F5
-:107C9000B0BD00BF2DE9F04F81B041F23440C4F2D5
-:107CA0000500072140F8041C0168C90701BF0168ED
-:107CB0005FEAC17101685FEAC17102D10168C90759
-:107CC000F2D040F2100AC1F2000ADAF800104BF2CA
-:107CD000004246F60044C0F2C44247F27773C4F251
-:107CE0000804914238BF0023C4F8003146F28003F3
-:107CF000C4F20803F222F321F1271A605A609A6055
-:107D0000D960196159619961D961196259629962A1
-:107D1000D962196359639963C3F88020C3F884203A
-:107D2000C3F88820C3F89820C3F89C10C3F8A010AB
-:107D3000C3F8A410C3F8A810C3F8AC10C3F8B0106F
-:107D4000C3F8B410C3F80022C3F80422C3F8082211
-:107D5000C3F80C22C3F81022C3F81422C3F8182267
-:107D6000C3F81C22C3F88472C3F88872C3F88C125B
-:107D7000C3F89012C3F89412C3F89872C3F89C72B7
-:107D8000C3F8A072C3F8A412C3F8A812C3F8AC12C7
-:107D9000C3F8B012C3F89014C3F8002646F2846307
-:107DA00045F22005C4F20803C4F200051A605A60C7
-:107DB0009A60DA601A615A619A61DA611A625A62EB
-:107DC0009A62DA621A635A639A63DA63D967C3F80C
-:107DD0008010C3F88410C3F88810C3F88C10C3F85F
-:107DE0009010C3F89410C3F89810C3F89C10C3F80F
-:107DF000A010C3F8A410C3F8A810C3F8AC10C3F8BF
-:107E0000B010C3F8B410C3F8B8100121002345F82E
-:107E1000201C45F8183CDAF8001040F60162C0F268
-:107E2000277291424FF0010734D34FF0805211680E
-:107E30000426009146F60301CFF24341116043F25C
-:107E4000803140F2DB73C1F20006C6F2030146F254
-:107E50000A02CDF2FC0396E8000BF768C6F64B0267
-:107E600044F2707C86E80E1000F1440143F22C10BD
-:107E70000123C4F20400C1F200032722BFF36F8F75
-:107E8000984700984FF080510023086086E8000B67
-:107E9000F7600227F02020606060A060E0608A2028
-:107EA000C5F8E0010220C5F8E831C5F8F001DAF8BC
-:107EB00000004CF60024B0FBF7F05A21C3F69A34C8
-:107EC000A0FB01012246002300F00AFD0130C5F8A5
-:107ED000EC01D5F8E0014FF0010940F40020C5F8AD
-:107EE000E0014FF48A40C5F8E00040F20330C5F8E5
-:107EF000E400C5F80890DAF8000043F68931B0FBD9
-:107F0000F7F0C5F2E651A0FB0101080E2861DAF88E
-:107F100000002A21B0FBF7F02246A0FB010100235C
-:107F200000F0DEFC6861DAF800004FF03F08B0FBBB
-:107F3000F7F02246A0FB0801002300F0D1FCA86165
-:107F4000DAF800004626B0FBF7F02246A0FB060157
-:107F5000002300F0C5FCE861DAF800002246B0FB1F
-:107F6000F7F00023A0FB060100F0BAFC2862DAF863
-:107F700000004FF01E0BB0FBF7F02246A0FB0B01F8
-:107F8000002300F0ADFC6862DAF800002246B0FB86
-:107F9000F7F00023A0FB080100F0A2FCA862DAF8C9
-:107FA00000002246B0FBF7F00023A0FB080100F020
-:107FB00097FCE862DAF800002246B0FBF7F00023F5
-:107FC000A0FB080100F08CFC2863DAF800000E2109
-:107FD000B0FBF7F02246A0FB0101002300F080FC7B
-:107FE0006863DAF800002246B0FBF7F00023A0FB3C
-:107FF0000B0100F075FCA86340F2831040F20311FE
-:10800000286029602860DAF800004CF66B21B0FB8C
-:10801000F7F0C6F65F31A0FB010109EB5160686023
-:10802000DAF8000044F6D351B0FBF7F0C1F2620178
-:10803000A0FB010109EB114068608320286042F237
-:108040000000C2F60300006802202860D5F8E000B6
-:1080500040F40020C5F8E00001B0BDE8F08F00BF9B
-:108060001421C4F205010A68000622F4000200F29D
-:10807000FF100A6008600A684FF60060C0F27F00D7
-:1080800042F400020A6000BF0B680A681B0227D591
-:108090000B6802406FF35F231A4304BF0020704750
-:1080A0000B680A681B021BD50B6802406FF35F2345
-:1080B0001A4313D00B680A681B0211D50B680240E3
-:1080C0006FF35F231A4309D00B680A681B0207D5B8
-:1080D0000B6802406FF35F231A43D5D1002070472D
-:1080E000C2F34D2045F6BB314843704710285DD898
-:1080F000DFE800F00C0A0A0A0A5C1822282E5C5CF1
-:10810000383E444A500000BF704700BF43F20400AD
-:10811000C4F20400006800F00A00023818BF4FF0F3
-:10812000FF3070471820C4F205000068C0074FF008
-:10813000FF3008BF062070471820C4F20500816890
-:108140002CE000BF1820C4F20500816926E000BFC2
-:108150001820C4F20500816AC90714BFC16A002152
-:108160001CE000BF1820C4F20500016B16E000BF40
-:108170001820C4F20500416B10E000BF1820C4F2C3
-:108180000500816B0AE000BF1820C4F20500C16B36
-:1081900004E000BF1820C4F20500016CC8074FF0CE
-:1081A000FF3008BFC1F30460704700BF4FF0FF30DD
-:1081B000704700BF70B54423C4F205034FF0010CB3
-:1081C000A3F124024FF0010E012110280DD9002047
-:1081D00070BD00BFA3F114042468E0074FF0FF3026
-:1081E00008BFC4F304601028F1D81446DFE800F09B
-:1081F0006A566060560E560C0A100E0E1E24282C6D
-:10820000340000BFE6E700BFE6E700BFDFE700BFDE
-:108210001868C0F30134C0F30125013486070CFA55
-:1082200005F521D410F0C00F22D11FE01C4654F8F0
-:10823000040FC0F381000CE01C4654F8080F06E060
-:108240001C4654F80C0F02E01C4654F8100FC0F303
-:10825000830001304143BFE71C4654F8140F8008E7
-:108260005CFA80F04143B7E7060601D56C43640031
-:108270005CFAA0F040EA0424C0B200FB0EFE53F802
-:10828000040CC4F30724C00704FB01F104D100204F
-:1082900010287FF6AAAF9AE71C469DE741F600300A
-:1082A000C0F2B70000FB0EF0B0FBF1F070BD00BFF4
-:1082B0004FF28000C0F2FA2000FB0EF0B0FBF1F0AC
-:1082C00070BD00BF4FF4004000FB0EF0B0FBF1F0BA
-:1082D00070BD00BF80B56C20C4F205000068C0F31B
-:1082E0000460FFF767FF40F21001C1F2000108606F
-:1082F00080BD00BF80B54EF68850CEF20000016808
-:108300004FF0807241F47001016043F20411C4F235
-:1083100005010A604EF21001CEF200010A6822F057
-:1083200003020A6040F20001C1F200416FF3130141
-:1083300040F8801CFFF7F4FB6C20C4F205000068D5
-:10834000C0F30460FFF736FF40F21001C1F20001F4
-:10835000086080BD80B58AB002460020052A0990D9
-:10836000CDE90700CDE90500CDE9030002900FD06B
-:108370009ABB71B94AF261604CF64032C1F20040DA
-:10838000C1F20042002101F037FA0AB080BD00BFFF
-:1083900011B100200AB080BD4CF6B820C1F20040F7
-:1083A00046F27062019001EB0110C1F2000202EB93
-:1083B000800003904420049046F6B840C1F20000CB
-:1083C00005904FF400700690202007904BF6C920CE
-:1083D000C1F2004001AA01F00FFA0AB080BD00BF4F
-:1083E00000280CBF4FF0FF3001F018BA704700BFF3
-:1083F000B0B540F69005C1F200052968044689B978
-:1084000000F034FC44F6D3518002C1F26201A0FBBB
-:1084100001014FF600408909CFF6FF70B0FBF1F083
-:10842000C5E90010601C02280CD3B1F5806F09D09B
-:108430006868A04231BF6FF0010401FB04F000F254
-:10844000FF30840A2046BDE8B04000F0E5BB00BF25
-:10845000024600284FF0000018BF704780B584B076
-:10846000CDE9000046F6B860C1F2000000EB421012
-:108470000290202003904BF6FD20C1F200406B4695
-:10848000012101F001FA04B0BDE88040704700BF4F
-:10849000002804BF4FF0FF30704770B540F69006DB
-:1084A000C1F20006044630680D4688B900F0DEFBD4
-:1084B00044F6D3518002C1F26201A0FB0101880998
-:1084C0004FF60041CFF6FF71B1FBF0F1C6E90001B4
-:1084D000691C02290BD3B0F5806F08D07168A942DE
-:1084E00031BF6FF00105684300F2FF30850A204676
-:1084F0002946BDE8704001F0D9B900BF10B548B1B8
-:10850000044601F0AFF948B12046BDE8104001F043
-:10851000DFB900BF4FF0FF3010BD00BF002010BD1D
-:1085200000280CBF4FF0FF3001F08AB9704700BF40
-:1085300000280CBF002001F021B97047B0B540F60B
-:108540009005C1F200052968044689B900F08EFB48
-:1085500044F6D3518002C1F26201A0FB01014FF643
-:1085600000408909CFF6FF70B0FBF1F0C5E90010BB
-:10857000601C02280CD3B1F5806F09D06868A04256
-:1085800031BF6FF0010401FB04F000F2FF30840AF8
-:108590004FF6FF700021224601F01CF9B0F1FF3FB9
-:1085A000C8BFB0BD6FF00101401A18BF0120C0075D
-:1085B000B0BD00BF80B584B003460020022B0390FD
-:1085C000CDE90100009009D0012B0BD06BBB31B974
-:1085D00046F24450C1F2000010E000BFC1B10020DB
-:1085E00004B080BD4FF00000F9B9032A1DD846F24F
-:1085F0004450C1F2000000EB021020300290102025
-:1086000003906A460120012101F07AF804B080BD90
-:1086100046F24450C1F20000103002901020039046
-:108620006A460120012101F06BF804B080BD00BF53
-:10863000002804BF4FF0FF30704770B540F6900639
-:10864000C1F20006044630680D4688B900F00EFB02
-:1086500044F6D3518002C1F26201A0FB01018809F6
-:108660004FF60041CFF6FF71B1FBF0F1C6E9000112
-:10867000691C02290BD3B0F5806F08D07168A9423C
-:1086800031BF6FF00105684300F2FF30850A2046D4
-:108690002946BDE8704000F0F7BF00BF00280CBFBE
-:1086A0004FF0FF3001F03EB8704700BF00280CBF0C
-:1086B0004FF0FF3001F012B8704700BF01460020B4
-:1086C00003F0D2BF0A460146002003F0D5BF00BF29
-:1086D0000020704700207047704700BF002070479F
-:1086E000002070470020704700207047002070472E
-:1086F000002070470020704700207047704700BF7F
-:10870000704700BF4FF0FF30704700BF0020704738
-:108710004FF0FF30704700BF00207047704700BF28
-:1087200000207047704700BF704700BF704700BF10
-:10873000704700BFFFF7FCBF704700BF704700BF26
-:10874000704700BF704700BF704700BF704700BF51
-:1087500000207047704700BF00207047002070471E
-:1087600040F2FC01C1F2000109688A6932B1097F57
-:10877000814203D1002003F011B900BF00207047EF
-:1087800040F2FC01C1F2000109688A6932B1097F37
-:10879000814203D1002003F04BBA00BF0020704794
-:1087A00040F2FC01C1F2000109688A69002A08BF91
-:1087B0007047097F814203D1002003F02DB900BF2B
-:1087C000704700BF71B140F2FC01C1F200010968BD
-:1087D0008A69002A08BF7047097F814202D10020C0
-:1087E00003F050B9704700BF40F2FC02C1F2000232
-:1087F0001268936973B1137F834218BF7047907FEB
-:1088000040F08000884202D0D07F884202D1002010
-:1088100002F054BF704700BF704700001EF0040F05
-:108820000CBFEFF30880EFF30980816911F8021C97
-:1088300091BB01B590E80F10E047BDE800508CE80F
-:108840000300244B93E80600914208BF704741B9EA
-:108850001EF0100F10D12049086820F001000860B8
-:108860000AE02CE9F00F1EF0100F08BF2CED108A63
-:10887000C1F838C081F822E01A6092F82210906B9B
-:1088800061F0FF0E1EF0100F08BFB0EC108AB0E8C8
-:10889000F00F80F309887047104A13689942FAD89C
-:1088A00001B552F821C00FC8E047BDE80050CCF830
-:1088B0000000704701B500F013FCBDE80140EFF384
-:1088C000098CBEE701B500F05FFEBDE80140EFF3A3
-:1088D000098CB6E72800001034EF00E054CA0014F9
-:1088E0002DE9F05F0546002092469B4688460646E5
-:1088F000814640241BE0284641464746224600F078
-:1089000053F853465A46C01A914110D3114618469F
-:10891000224600F03AF82D1A67EB01084F4622462E
-:108920000120002100F031F817EB00094E41201E14
-:10893000A4F10104DFDC484631462A464346BDE83F
-:10894000F09F40EA01039B0703D009E008C9121F0A
-:1089500008C0042AFAD203E011F8013B00F8013BF9
-:10896000521EF9D27047D2B201E000F8012B491E25
-:10897000FBD270470022F6E710B513460A460446BC
-:108980001946FFF7F0FF204610BD202A04DB203AED
-:1089900000FA02F1002070479140C2F1200320FA52
-:1089A00003F3194390407047202A04DB203A21FA50
-:1089B00002F00021704721FA02F3D040C2F12002F8
-:1089C0009140084319467047064C074D06E0E068A1
-:1089D00040F0010394E8070098471034AC42F6D306
-:1089E000F7F79CFB1CCD00143CCD001410B500F132
-:1089F000280151E8002F12B9BFF32F8F04E0531E56
-:108A000041E8003404B1F4E772B12C300121006870
-:108A100050B1821CD2E84F3FC2E8441F04B1F9E7CD
-:108A20001A0602D00830F2E7002010BD70B50246E9
-:108A300052F8305F4DB1CC7800235DB12E46ED7811
-:108A4000A5420DD275683346F7E70023C1E901332B
-:108A5000C1620DE00024C1E9014300F12C0403E0F0
-:108A6000C1E9016306F108042160002B18BF1A1D3B
-:108A70001160283050E8001F4A1C40E8002303B171
-:108A8000F8E770BDD1E90123002A0EBFC3629360ED
-:108A90008B68191D002B08BF00F130010A60704778
-:108AA0001A480068704700BF19480178012905D1AC
-:108AB00005494FF080620A60002101701348016887
-:108AC00041F001010160704704ED00E04FF0FF301C
-:108AD0007047000040B10B490968B1FBF0F0411E3E
-:108AE0000020B0EB116F02D04FF0FF307047064A04
-:108AF000FF231370054A0623136051600449087070
-:108B0000906070471000001023ED00E010E000E0DE
-:108B100044090010B0B500F10C01C289D1E85F3FF3
-:108B20009A4202D8BFF32F8F04E05C1CC1E8554F76
-:108B300005B1F3E7C28999B20020914238BF012004
-:108B4000B0BD10B5930712D400F12803D0071ED191
-:108B500053E8000F084203D1BFF32F8F002005E038
-:108B600020EA010243E8002404B1F1E710BD806A65
-:108B700000EA01038B42014618BF002112F00102F6
-:108B800008BF014653EA020018BF084610BD53E86B
-:108B9000000F00EA01028A4203D0BFF32F8F0020AA
-:108BA00005E020EA010243E8002404B1EFE710BD2C
-:108BB000B0B52D4A0023443215462C683CB12569D6
-:108BC000A94209D3491B04F10C052346F5E700240B
-:108BD000C0E90234016106E0C0E902340161A0602D
-:108BE0002569691A2161002B18BF03F10C0210607E
-:108BF000B0BD00BFC16829B1826803698A600A6993
-:108C00001A440A618068184A00F10C03002808BF62
-:108C100002F1440319607047EFF3058129B9EFF3BE
-:108C2000108111B9EFF3118111B16FF00500704798
-:108C3000DFF804C000DF7047F5980014EFF30580FB
-:108C400048B9EFF3108030B9EFF3118018B9EFF3A2
-:108C50001480C00702D10448007A7047DFF804C0CE
-:108C600000DF70470999001414000010EFF305802D
-:108C700028B9EFF3108010B9EFF3118010B1034859
-:108C800040687047DFF808C000DF704754C7001421
-:108C90001599001480B500F0A9F8EFF3058028B904
-:108CA000EFF3108010B9EFF3118010B16FF00500F1
-:108CB00080BDDFF808C000DF80BD00BF219900142F
-:108CC000EFF3058028B9EFF3108010B9EFF31180AE
-:108CD00010B16FF005007047DFF804C000DF704787
-:108CE000699A0014F8B514460E460546EFF3058060
-:108CF00028B9EFF3108010B9EFF31180F0B16FF0E5
-:108D000003000DB303BBFEB12978FA291CD1284614
-:108D1000FFF76CFE78B16A6A074600F10C01304635
-:108D2000FFF70FFE0CB1F87820703846FD6000F0B8
-:108D30001BFA0020F8BD6FF00200F8BD2846DFF8EE
-:108D40000CC03146224600DFF8BD00BFED9A00148A
-:108D5000EFF305832BB9EFF3108313B9EFF311830E
-:108D60000BB100207047DFF808C000DF704700BF7C
-:108D7000C99B00142DE9F04190460D460646EFF3DD
-:108D8000058028B9EFF3108010B9EFF3118018B304
-:108D90006FF00307EEB1E3B9DDB13078FA2818D1EE
-:108DA00006F10C0000F09CF888B1726A04460C30A1
-:108DB0002946FFF7C6FD0027F920C4E9015684F8CB
-:108DC0000380A7702070204600F0CEF901E06FF01C
-:108DD00002073846BDE8F0813046DFF80CC029466E
-:108DE000424600DFBDE8F081F99C00147047F0B501
-:108DF000002390B389B3032A2FD8034653F8084FB2
-:108E00000F3121F007012546E61A5C6824F00307BC
-:108E1000F61B8E4205D22C682B46002CF3D1002382
-:108E20001BE0D0E900650D444560304450F8046C07
-:108E3000AE4202D2083845605C6854B1186824F02C
-:108E40000304E05041EA0200E118486019600B4653
-:108E500002E041EA0200586008331846F0BDB0B5A0
-:108E60000022E8B1E1B100F10804A1F108020023F9
-:108E7000944206D0254624682B46002CF8D10022C7
-:108E80000EE051F8045C446825F00305641B44605F
-:108E900013B11068186002E0002041F8040C0122B0
-:108EA0001046B0BD08B1420702D0002210467047FC
-:108EB00000221829FAD311F00703F7D110B50A18C8
-:108EC000A2F108038360002342F8083C8268102462
-:108ED00054600122C0E90014C360BDE81040E5E71A
-:108EE00010B5002817D0014600F1140252E8000F17
-:108EF00010B9BFF32F8F04E0036842E8003404B1D7
-:108F0000F4E740B1043151E8002F531C41E800342C
-:108F100004B1F8E710BD002010BDB0B500281ED088
-:108F2000C2688A421BD802698A4218D900F1140229
-:108F300013680B60BFF35F8F52E8003F0C689C42E0
-:108F4000F6D142E8001505B1F2E7043050E8001F01
-:108F50004A1E40E8002303B1F8E70020B0BD6FF0DF
-:108F60000300B0BDB0B504460020ACB1A1B19AB1C8
-:108F700093B10020C4E9001004F1080002FB0135A0
-:108F80002CC0481E636120B19918196001380B4646
-:108F9000F9E7002018600120B0BDF8B504468078DC
-:108FA00068B3E56821462846FFF76CFD002005F10F
-:108FB0000C06207030462146FFF7AFFFA868E8B1E5
-:108FC0003046FFF78DFFC8B10446284600F006FA88
-:108FD000002100220646002700F0BCFA304600F0CF
-:108FE0005DFA81686A6A064604F10C00FFF7A9FC85
-:108FF000F920A7702070F068E07025E0F8BDA56842
-:10900000A86808B3407883281ED1284600F0E6F906
-:10901000002100220646002700F09CFA304600F0AE
-:109020003DFA064680686A6A04F10C01FFF789FC84
-:10903000F06808B1E1780170277005F10C00214655
-:10904000BDE8F840FFF769BF28462146BDE8F84073
-:10905000FFF7ECBC2DE9F041044600274FF0010872
-:10906000D4B12546E87864690007F9D52F76A86859
-:109070000028F5D0284600F0B1F90021002206466C
-:1090800000F068FAC5E90367F06A686100B105613C
-:1090900085F81880F562E3E7BDE8F081B0B5C278E5
-:1090A000920715D5C068C36A90F821209C688C424D
-:1090B00008BF8C682CB194F9204055B2AC42C8BFAF
-:1090C000E2B25B69002BF1D190F82010914200D1FF
-:1090D000B0BD80F82020BDE8B04000F0AEB900007F
-:1090E00070B5ED4C04F1560504F15A06B4F854007D
-:1090F000D5E85F1F11B9BFF32F8F04E04A1EC5E802
-:10910000532F03B1F4E7090429D0D6E85F1F4A1CA6
-:10911000904200D80022C6E8532F03B1F5E788B289
-:10912000E16D51F82000D0B10178F1390829DDD87E
-:10913000DFE801F006050905050C0F051200D5E76B
-:10914000216E8847D2E7616E8847CFE7A16E8847D6
-:10915000CCE7E16E8847C9E7216F8847C6E7002062
-:10916000BDE8704000F0E6B870B50146EA4800F18D
-:109170005603B0F85420D3E85F4FA24202D8BFF3A1
-:109180002F8F04E0651CC3E8565F06B1F3E7A3B276
-:10919000934214D200F15803D3E85F4F651CAA42F2
-:1091A00000D80025C3E8565F06B1F5E7C36DA2B24B
-:1091B00043F82210417A39B10121817270BD022039
-:1091C000BDE87040FBF7C4BE02484FF0805101601B
-:1091D00070BD00BF04ED00E010B58168B1B100F1D1
-:1091E0000C01D1E85F2F12B9BFF32F8F04E0531E9B
-:1091F000C1E8543F04B1F4E7110407D000F0EEF8E1
-:1092000000210022BDE8104000F0A4B910BD00000C
-:1092100010B501214170CE4990F920301C310A4629
-:10922000896841B191F920409C42F8DCC0E9021202
-:1092300090600C3104E00021C0E9021202F1080143
-:10924000086010BDB0B54A1C0DD0EA4A00242C328B
-:1092500015462B68DBB1DD69A9421AD3491B03F11E
-:1092600010051C46F5E7F149002330310C461A463B
-:10927000236803F11004002BF9D14FF0FF33C361D1
-:109280000023C0E904329AB102F1100110E0002578
-:1092900000E00125002CC0E90434C16118BF04F1CD
-:1092A000100210602DB1DA69511AD96103F114016D
-:1092B0000860B0BDC2690169531C0AD021B143697D
-:1092C0004B61CB691A44CA6142693AB9ED48C1623F
-:1092D000704709B142694A6142691AB1002343618A
-:1092E00011617047E7480163704700BF70B5E54DF5
-:1092F000EC6A1CB1E0690138E06100D070BD042661
-:1093000060781338B6EB301F05D1204600F08FF897
-:109310002146FFF7C3FE204600F07FF8204600F00C
-:10932000B3F8246924B1E0690028E9D00020606125
-:10933000EC6270BDB0B50546D2484469017A65B1AA
-:10934000022905D194F9200095F92010814211DC01
-:109350002846BDE8B04000F097B8022912D1456A0E
-:1093600085B194F9200095F9201081420ADD284644
-:1093700000F053F82046FFF74BFF2846BDE8B04009
-:1093800000F0C4B8B0BD00BF10B504460020208076
-:10939000A07881070DD5C00605D4BA48216B406F6F
-:1093A000FFF75DFD05E0B748216BD0F88400FFF7BB
-:1093B000B4FDA078C00708BF10BDB249D1F888003D
-:1093C00020B12146BDE81040FFF7A7BDD1F88000CD
-:1093D0002146BDE81040FFF742BD00BF014680684E
-:1093E00082688A6002B1D1600021C160704710B507
-:1093F00091F920300246806840B190F920409C42AB
-:10940000F8DAC1E9020291600C3004E00020C1E901
-:10941000020202F10800016010BDC16831B182682A
-:109420008A60826802B1D1600021C1607047017812
-:10943000F12918BF7047C068F9E7B0B50446054682
-:1094400025B12878F12802D1ED68F9E7B0BD2046B2
-:10945000FFF7E3FF28462146BDE8B040FFF7C7BF4E
-:1094600010B50446407833280DD194F82320616A62
-:109470002046FFF766FB30B1014620460022BDE8DA
-:10948000104000F067B810BD0146012048707D48CB
-:109490001C30FFF7ACBF00BF1400001090F8221082
-:1094A000C9064FF0200158BF6021806B0844704707
-:1094B0007448416939B1086B8A6B824204D90068EB
-:1094C000034A904200D170470120FBF741BD00BF25
-:1094D000A52E5AE270B5544C0A48A26D666E002162
-:1094E00000F0AAFD674DA8624EB1E26D064800216A
-:1094F00000F0A2FDA864002818BF012070BD012063
-:1095000070BD00BF4D4F0014F99500145D4988618E
-:1095100002214170FFF7CCBF1400001010B5FC4CC5
-:109520000246237A0020022B11D1636A7BB1606965
-:109530004270FFF787FE606A8168616211B104F1D1
-:109540001C02CA600021C160FFF7E0FF012010BDCE
-:1095500014000010B0B5044690F822001546C0066D
-:109560004FF0200058BF6020A26B81502046FFF7CB
-:10957000A1FE20461DB1BDE8B040FFF7DBBEBDE84F
-:10958000B040FFF781BF0000B0B5FFF789FAE04DAA
-:10959000E968286D0131E96000B18047FFF7A6FE58
-:1095A0000020FFF7C7FE296C11B3AA69A86B90428F
-:1095B0001CBFC5E90E21B0BDE96B11B10139E963EA
-:1095C00016D1297A022913D16C6A8CB190F8200047
-:1095D00094F8201081420BD12046FFF71EFFA86BA4
-:1095E000FFF752FF2046FFF791FF286CC5E90E40B8
-:1095F000B0BD00BF1400001082B0C8480821D0E9F7
-:109600001820FFF7A5FBC24D09496C46C5E91301B7
-:10961000214600224FF0FF33FFF764FB10B9DDE96C
-:1096200000108847E86CF3E754C7001414000010DA
-:109630003596001470B5B64D6C6C14B320690126D4
-:1096400001382061ECB12069D8B9E06808B1A1689F
-:1096500081606864E86C04F1180100220023FFF7C0
-:1096600089FB18B103202146FBF772FCE078012842
-:1096700004D161692046FFF79BFA00E066706C6CCC
-:10968000E0E770BD14000010EFF305822AB9EFF394
-:10969000108212B9EFF31182CAB16FF00302A0B1C8
-:1096A00099B90178F62910D10C30D0E85F1F11B9B3
-:1096B000BFF32F8F04E04A1EC0E8532F03B1F4E735
-:1096C0000022080408BF6FF0020210467047DFF85E
-:1096D00008C000DF704700BFB59D0014EFF305819F
-:1096E00029B9EFF3108111B9EFF3118111B16FF0C6
-:1096F00005007047DFF804C000DF70470D9E0014BE
-:10970000EFF305832BB9EFF3108313B9EFF3118354
-:109710000BB100207047DFF808C000DF704700BFC2
-:10972000699E001410B50446EFF3058028B9EFF3E5
-:10973000108010B9EFF3118090B15CB12078F62859
-:1097400008D12046FFF7E6F938B12046FFF70CFDB7
-:10975000002010BD6FF0030010BD6FF0020010BDBF
-:109760002046DFF808C000DF10BD00BFE59E0014F2
-:10977000DFF804C000DFFEE71D9F0014B0B5EFF373
-:1097800005822AB9EFF3108212B9EFF31182DAB130
-:109790006FF00304B0B1002914D40278F12A11D17A
-:1097A0004278042A02D16FF002040BE000F1280293
-:1097B00052E8003F43EA010442E8004505B1F7E7FB
-:1097C000FFF7D2FC2046B0BDDFF804C000DFB0BD1B
-:1097D000859F0014EFF305832BB9EFF3108313B9C2
-:1097E000EFF3118313B16FF005007047DFF804C089
-:1097F00000DF7047ED9F0014EFF305832BB9EFF303
-:10980000108313B9EFF311830BB100207047DFF819
-:1098100008C000DF704700BF39A00014EFF30581D6
-:1098200029B9EFF3108111B9EFF3118111B16FF084
-:1098300005007047DFF804C000DF704709A200147C
-:10984000EFF3058129B9EFF3108111B9EFF311811D
-:1098500011B16FF005007047DFF804C000DF7047FA
-:10986000C5A20014EFF3058129B9EFF3108111B9F6
-:10987000EFF3118109B100207047DFF808C000DF65
-:10988000704700BF11A3001410B5EFF305842CB985
-:10989000EFF3108414B9EFF311840CB1002010BD64
-:1098A000DFF804C000DF10BD29A30014EFF3058228
-:1098B0002AB9EFF3108212B9EFF3118212B16FF0EF
-:1098C00005007047DFF804C000DF70479DA3001457
-:1098D000EFF3058129B9EFF3108111B9EFF311818D
-:1098E00011B16FF005007047DFF804C000DF70476A
-:1098F000E9A3001430B180B501461320FFF70EFE36
-:10990000BDE8804000207047F948007A704700BFEA
-:109910001400001073484068704700BF54C700141B
-:109920002DE9F843F24F387A30B1012800F09680E3
-:109930004FF0FF30BDE8F88307F108009C21FFF7E6
-:1099400019F8DFF8B488B8F81000D8E90B41A7F887
-:109950005400D8E90202FA6538642046FFF7A2FAFB
-:1099600008B1C7F88040D8E90541DFF8F890D8E998
-:1099700007562046C847D7F88010002818BF214650
-:10998000796728463146C847D7F88010002818BFA5
-:109990002946B967D8E909412046C847D7F8801059
-:1099A000002818BF2146D8F83440F9673CB1216837
-:1099B000D4E902232046FFF7D5FAC7F88440D8F847
-:1099C00038403CB12168D4E902232046FFF7CAFAA7
-:1099D000C7F88840D8F83C403CB12168D4E902235C
-:1099E0002046FFF7BFFAC7F88C40D8F840403CB19A
-:1099F0002168D4E902232046FFF7B4FAC7F8904063
-:109A0000D8F844403CB12168D4E902232046FFF74E
-:109A1000A9FAC7F89440D8F848403CB12168D4E985
-:109A200002232046FFF79EFAC7F89840D8F84C402A
-:109A30003CB12168D4E902232046FFF793FAC7F826
-:109A40009C40D8F850403CB12168D4E9022320461C
-:109A5000FFF788FAC7F8A040012038720020BDE85F
-:109A6000F88300BFA58E0014B0B5E74C207A01281A
-:109A70001CD1FFF72FFDC8B11948FF218175817DE9
-:109A8000026881F0FF01B1FA81F1C1F12001C2F356
-:109A900002228A4228BF511CFE2202FA01F1114D16
-:109AA000C17468681049FFF715F810B14FF0FF3026
-:109AB000B0BDFFF70BF82061FEF7F6FF04F11C00C4
-:109AC000FFF78CFCFFF722FD2878C0070CBF0320AE
-:109AD000022080F31488022020720020B0BD00BF55
-:109AE0000CED00E054C70014C58800142DE9F843BC
-:109AF00000284CD00F466FF00305002949D00446DA
-:109B00000078FA2845D1204699469046FEF76EFF28
-:109B1000002841D0064620463146FEF7B3FF626A70
-:109B200006F10C013846FEF70CFFB8F1000F1CBF20
-:109B3000F07888F8000004F10C070025384631461B
-:109B40003570FFF7EAF9A06818B33846FFF7C8F98F
-:109B50000025F0B106462046FFF740FC0021012217
-:109B60000746FFF7F7FC3846FFF798FC8168626A02
-:109B7000074606F10C00FEF7E4FEF920B5703070E0
-:109B8000F8683146F0702046FEF750FF01E06FF0B4
-:109B900003052846BDE8F883B9F1000F10D08320F3
-:109BA0004946FFF7BBFC40B1F54841692046FFF745
-:109BB0001EFCEFF30980C0E902786FF00105E8E7C9
-:109BC0006FF00205E5E700BF2DE9F84F002770B1FF
-:109BD0000D4661B105F10F0121F003060446B0FA0C
-:109BE00080F0B6FA86F10844202803D200273846D0
-:109BF000BDE8F88F06FB04F872B1D2F808A013682C
-:109C0000D2E90490BAF1000F11D05FEA8A71EDD168
-:109C1000D1683429EAD30DE000234FF00009D84978
-:109C20000093D1F8A00078B1FFF75AF912E0D1689B
-:109C30000029DBD1B9F1000F2FD000274045D6D342
-:109C400019F003002BD0D2E7D1F880003421012293
-:109C5000FFF7CDF882464FF0010BB9F1000F10D19C
-:109C6000BAF1000F0DD0F34F4146F86F0022FFF715
-:109C7000BEF8814638B148464146FEF77BFE57465E
-:109C80001AE057461AE0BBF1000F14D0D7F8A00035
-:109C900060B15146FFF741F90DE00028A6D1BAF1B5
-:109CA000000FBCD000934FF0000BD6E7D7F8800030
-:109CB0005146FFF7D4F800270BF1020B002F3FF4B9
-:109CC00096AF0020C7E90950C7E90B00009932465A
-:109CD000C7E90110FA2087F802B0387007F10C00CC
-:109CE00021464B46FFF73EF9D248024901677EE71D
-:109CF000140000109B8F00142DE9F84338B30E4672
-:109D00006FF00307002951D005460078FA284DD19D
-:109D1000A86899469046E8B1407883281AD1284629
-:109D2000FFF75CFB0021012204460027FFF712FC2D
-:109D30002046FFF7B3FB044680686A6A3146FEF7A7
-:109D400000FEE06890B380F8008000272EE06FF0FE
-:109D500003072BE005F10C00FFF7C2F880B16A6A37
-:109D600004460C303146FEF7ECFD0027F92084F85C
-:109D70000380A770207028462146FEF757FE15E0A5
-:109D8000B9F1000F10D093204946FFF7C7FB40B14F
-:109D9000A84841692846FFF72AFBEFF30980C0E98C
-:109DA00002686FF0010701E06FF002073846BDE876
-:109DB000F88300BFB0B508B304460078F6281DD17B
-:109DC00004F10C00D0E85F2F12B9BFF32F8F04E02D
-:109DD000531EC0E8553F05B1F4E710041CBF002036
-:109DE000B0BD71B16320FFF799FB20B19148416983
-:109DF0002046FFF7FCFA6FF00100B0BD6FF00300E2
-:109E0000B0BD6FF00200B0BD1400001010B500B37B
-:109E100004460078F6281CD1A06868B12046FFF7F8
-:109E2000DDFA6FF002010022FFF794FBA068002822
-:109E3000F4D10020FFF77EFA00202070A178C90736
-:109E400010D0EC49D1F8980030B12146FFF765F801
-:109E500007E06FF0030010BDD1F880002146FEF747
-:109E6000FEFF002010BD00BF70B5054601384FF65B
-:109E7000FE730C460021984298BFAC4201D90846B7
-:109E800070BD4AB19068166870B181070FD1D26871
-:109E90000021102AF3D314E00026D649D1F8980007
-:109EA00038B1FFF71DF80AE0D0680028F5D000218E
-:109EB000E5E7D1F8800010210122FEF798FF60B19C
-:109EC00001210022C5818481C0E901628170F621EF
-:109ED0000170FB49024A8A6600E000200146CEE795
-:109EE000D991001410B560B10178F62909D18168C3
-:109EF00059B1FFF773FA002101220024FFF72AFB72
-:109F000001E06FF00304204610BDFEF703FE0024BD
-:109F1000002808BF6FF00204F5E7000070B5FB4DA4
-:109F2000287A02282AD1686A40B36C69E06AFFF790
-:109F300091F8A06918B100210022FFF70BFBEFF3A5
-:109F40000980A063686A8168696211B105F11C0229
-:109F5000CA600026C660FFF7D9FA6E61E078C007D4
-:109F600004D12046BDE87040FFF70EBA0420E66039
-:109F70006070686BA06000B1C4606C6370BD00BFAE
-:109F800014000010B0B56FF0030460B300292AD4A8
-:109F900005460078F12826D16878042802D16FF0B0
-:109FA000020420E005F1280050E8002F42EA0104F5
-:109FB00040E8004303B1F7E76878332813D195F8F8
-:109FC0002320696A2846FEF7BCFD60B1014695F87A
-:109FD00023000C4680075CBF686A21EA000428461B
-:109FE0000122FFF7B7FA2046B0BD0000F8B50546DC
-:109FF000FC48476957B1002D0BD40E46144638462D
-:10A0000029463246FEF79DFD30B1F8BD4FF0FF30D6
-:10A01000F8BD6FF00300F8BD4CB13320214687F83E
-:10A0200023607D62FFF77AFA6FF00100F8BD6FF0F0
-:10A030000200F8BD140000102DE9FE4F18B3804651
-:10A040006AB102F1100A96689AE88006D2E90053D4
-:10A05000BEB1B00717D1D068442814D317E001244B
-:10A060004FF0180A002300274FF000090025DD4AB1
-:10A070000293D2F88800CDE90015C0B1FEF730FF99
-:10A080001BE0D06818B100242046BDE8FE8F37B130
-:10A090000024B9F1000FF7D017F00700F4D1BAF19E
-:10A0A000000F24D0AAF101003728ECD821E0D2F823
-:10A0B000800044210122FEF79AFE06464FF0010B74
-:10A0C00087B97EB184B1C7494B4AD1F88400D2F830
-:10A0D0005490C8B1FEF704FF0746002818BF0BF1E3
-:10A0E000100B17E0344635E0BE48406F0DE04FF0EE
-:10A0F000180AB9F1000F1BD00024B9F1480FC3D3DF
-:10A1000019F0070015D0BFE7486F49460022FEF757
-:10A110006EFE07460FB134461AE05FEACB7016D0E8
-:10A12000B049D1F8880068B13146FEF7F6FE0EE07E
-:10A130000124002E3FF49BAFCDE9001502934FF0B0
-:10A14000000BBDE7D1F880003146FEF788FE002401
-:10A150004BF0020B002C3FF497AF01981821606080
-:10A160000298E07040F2F11084F802B0208004F10F
-:10A170000800FEF7FFFB07EB090100204039FD2234
-:10A18000C4F82300C4F82700C4F82B0084F82F007B
-:10A1900084F8222084F821A084F820A0C4E90C7956
-:10A1A000C4E90E181549009D39601349097849071B
-:10A1B0000AD56FF0100101EB99013A1D4FF0CC3335
-:10A1C00011B108C20139FBE7A16B00220D2A03D0AF
-:10A1D00041F822000132F9E7094A4FF08070C1E9E5
-:10A1E0000D28C8630D627F48064901662046FFF7C7
-:10A1F000A1F849E71400001054C70014A52E5AE234
-:10A20000719700146194001470B5C0B104460078D1
-:10A21000F12814D1607800F00F00012812D0032833
-:10A2200014D002281CBF6FF0020070BD6D496FF0A2
-:10A2300002000A7A022A01D1496A69B970BD6FF039
-:10A24000030070BD2046FFF7E8F805E02046FFF761
-:10A25000E4F82046FFF72EF8E06AFEF7FBFEA0695F
-:10A2600018B100210022FFF775F96078022810D19B
-:10A270005C4DEFF30980A063686A8168696211B17F
-:10A2800005F11C02CA600026C660FFF73FF96E6147
-:10A2900002E00020FFF74EF8E078C00703D1204627
-:10A2A000FFF772F809E00020E060042060704D487C
-:10A2B000416BA16001B1CC604463002070BD00BF60
-:10A2C0001400001010B5B0B104460078F22812D185
-:10A2D0006078022802D12046FEF78CFC0020208006
-:10A2E000A178C90710D03F49D1F88C0030B1214680
-:10A2F000FEF713FE07E06FF0030010BDD1F88000F9
-:10A300002146FEF7ACFD002010BD00BF1400001078
-:10A3100040B10178F22905D140780238B0FA80F0D6
-:10A320004009704700207047F8B50E46002198B3E9
-:10A33000012E31D8144605464BB198681F6870B19C
-:10A3400081070FD1DA680021202A15D224E00027E6
-:10A350002449D1F88C0038B1FEF7C2FD0AE0D86874
-:10A360000028F5D0002117E0D1F88000202101223B
-:10A37000FEF73DFD70B101210022C67081704FF4DF
-:10A38000F9710180C0E90172C0E90322C0E9052525
-:10A39000C46100E0002001460846F8BDB0B570B1C8
-:10A3A0000C4605466FF00300B9B12978F22914D1A3
-:10A3B0006878022806D12846FEF71CFC08E06FF0FA
-:10A3C0000300B0BD0748006D40B102206C616870A9
-:10A3D00028462146FEF7ECFB0020B0BD6FF00200DE
-:10A3E000B0BD00BF1400001080B570B10178F22933
-:10A3F0000BD1417802291CBF6FF0020080BD012102
-:10A400004170FEF7F7FB002080BD6FF0030080BDB8
-:10A4100007490978884209D2064951F8200028B135
-:10A42000C16819B1006808B1002070472120704749
-:10A43000ACCC0014B0CC001470B505460024FFF776
-:10A44000E7FF30B9044850F82500C068007900B132
-:10A450000124204670BD0000B0CC001410B50446A5
-:10A46000FFF7D6FF002804D12046BDE8104000F0D9
-:10A4700089B910BD70B504462D4E0D46C80704D0ED
-:10A4800056F8241009B101208847A80707D556F8C7
-:10A49000241009B100208847204602F0D1F868074F
-:10A4A00021D5204602F0CCF8224850F82400066856
-:10A4B000F078B38800F00302B178204600F0CCF9C0
-:10A4C00048B9F078B38800F00302B07840F080011A
-:10A4D000204600F0C1F92046FEF762F9164850F810
-:10A4E000240000B1804728070BD51449012051F8FA
-:10A4F0002410C96881F89500114850F8240000B173
-:10A500008047E80604D50F4850F8240000B1804782
-:10A51000A80604D50C4850F8240000B18047290A49
-:10A52000480704D02046BDE8704000F06DBC70BD07
-:10A5300018C90014E800001008C90014B0CC0014B9
-:10A5400000C9001410C900140CC9001410B5044649
-:10A550000C480078844201D3002010BD0A4850F80E
-:10A560002400C0680028F8D00849D0F8AC0051F8A1
-:10A57000241088470028F0D12046BDE81040FEF79F
-:10A58000AFB80000ACCC0014B0CC0014F0C800147C
-:10A5900010B504460C480078844201D3002010BD59
-:10A5A0000A4850F82400C0680028F8D00849D0F8BC
-:10A5B000AC0051F8241088470028F0D12046BDE8AF
-:10A5C0001040FEF78BB80000ACCC0014B0CC0014E7
-:10A5D000F4C8001410B504460A48007884420FD22B
-:10A5E000094850F82400C068002809D00749A03065
-:10A5F00051F8241088472046BDE81040FEF76CB89B
-:10A6000010BD0000ACCC0014B0CC0014F8C800148D
-:10A6100010B504460F480078844201D3002010BDD5
-:10A620000D4850F82400C0680028F8D00021C0F878
-:10A63000A810C0F8AC10094900F1AC0251F8243060
-:10A64000111FA03098470028E9D12046BDE81040EE
-:10A65000FEF740B8ACCC0014B0CC0014FCC8001419
-:10A660002DE9F047C6B220480078864239D21F480B
-:10A6700000244FF0FF3750F82600D0F800901C4817
-:10A6800050F82600C10708D0810701D401246427AF
-:10A69000400702D444F0020464274FF00008E007AA
-:10A6A00001D0012119E03846FDF748FF01460001BD
-:10A6B00013D5D9F81C00804700F001054545F2D0BC
-:10A6C000A846E00704D01DB101213046FFF7D2FEB5
-:10A6D000A007E8D5002DE6D102213046FFF7CAFEDB
-:10A6E000E1E7BDE8F0870000ACCC0014B0CC00146A
-:10A6F0004470001070B5174951F82010C9B1CC68EA
-:10A70000BCB1D4F89C200025AAB1497D491E0A425B
-:10A7100002D1012184F89610D4E92623802100F08B
-:10A720005DF9002804D1F4E926121144C4E90015AA
-:10A7300070BD212070BD94F8961049B100231A46CF
-:10A74000802100F04BF90028F4D184F8965070BDB8
-:10A75000222070BDB0CC0014094910B551F820106A
-:10A76000CC680021D4E9262300F038F9002805D16F
-:10A77000F4E92601084420600020606010BD00005C
-:10A78000B0CC00142DE9F04105460324154E08E035
-:10A7900056F825006421FDF74BFF28B10A20FDF78C
-:10A7A00027FE641EE4B2F3D2BCB1DFF83C8002277E
-:10A7B00058F82500006840698047040005D00A2049
-:10A7C000FDF716FE7F1EFFB2F2D256F82500FDF708
-:10A7D00065FF24B12220BDE8F0812320FBE70020A3
-:10A7E000F9E700005C700010B0CC00142DE9F047D0
-:10A7F000894605460324164E09E000BF56F8250099
-:10A800006421FDF715FF28B10A20FDF7F1FD641E54
-:10A81000E4B2F3D2C4B1DFF83C80022758F8250037
-:10A820000068416A48468847040005D00A20FDF7C1
-:10A83000DFFD7F1EFFB2F1D256F82500FDF72EFF97
-:10A8400024B12220BDE8F0872320FBE70020F9E7B0
-:10A850005C700010B0CC00142DE9FF5F894601F058
-:10A860000F020546102101EAD9002C499B461044ED
-:10A870000B786B4302EB4302D4B2102802D3097861
-:10A880002144CCB2264F142202EB800057F8251049
-:10A89000C968085820B14946284600F011F9A0BB04
-:10A8A000DFF88080022600BF58F824006421FDF7FD
-:10A8B000BFFE28B10A20FDF79BFD761EF6B2F3D24B
-:10A8C0004EB303264FEA070A5A465AF82500029962
-:10A8D0000068C36A484698470746801D06280CD280
-:10A8E000DFE800F00B0B0B030303761E16F0FF06E8
-:10A8F00003D00A20FDF77CFDE6E758F82400FDF7B9
-:10A90000CDFE17F1020F06D01FB1222004B0BDE822
-:10A91000F09F0020FAE72320F8E70000B4CC0014F1
-:10A92000B0CC00144C7000102DE9F05F93468946BE
-:10A9300001F00F020546102101EAD9002449104414
-:10A940000B786B4302EB4302D4B2102802D3097890
-:10A950002144CCB2DFF87CA0142202EB80005AF82C
-:10A960002510C968085820B14946284600F0A8F8C3
-:10A9700038BBDFF864800226642158F82400FDF714
-:10A9800057FE28B10A20FDF733FD761EF6B2F3D24A
-:10A99000E6B102275AF8250059460068426B48463E
-:10A9A0009047060005D00A20FDF722FD7F1EFFB26A
-:10A9B000F0D258F82400FDF771FE16F1020F05D011
-:10A9C00016B12220BDE8F09F0020FBE72320F9E725
-:10A9D000B4CC0014B0CC00144C7000102DE9FF5F13
-:10A9E000884601F00F03334A0446102101EAD800DB
-:10A9F00018440127157807FA00F1654303EB450376
-:10AA0000DDB2102802D312782A44D5B22A4B53F86B
-:10AA10002420D268D6680E424AD1142101EB800965
-:10AA20009A4652F8090038B15FEA087040D14146B1
-:10AA3000204600F045F8A8BBDFF880B0022600BF32
-:10AA40005BF825006421FDF7F3FD28B10A20FDF72E
-:10AA5000CFFC761EF6B2F3D256B35AF82410CA6869
-:10AA600042F809705FF002075AF82400DDE902128B
-:10AA70000068836B4046984706000BD00A20FDF71C
-:10AA8000B7FC7F1EFFB2EFD25AF824000021C26843
-:10AA900042F809105BF82500FDF700FE16F1020FE1
-:10AAA00006D01EB1222004B0BDE8F09F0020FAE7D6
-:10AAB0002320F8E7B4CC0014B0CC00144C70001084
-:10AAC0002DE9F05F8A4601F00F020446102101EAE9
-:10AAD000DA00254910440B78634302EB4302D5B2F8
-:10AAE000102802D309782944CDB2DFF8808058F8C5
-:10AAF0002410CA68142101EB800B52F80B000028C7
-:10AB000020D0DFF86C900226642159F82500FDF76B
-:10AB10008FFD28B10A20FDF76BFC761EF6B2F3D24A
-:10AB20007EB1022758F824000068016C504688471F
-:10AB3000060009D00A20FDF75BFC7F1EFFB2F1D2B0
-:10AB400008E02320BDE8F09F58F824000021C268E7
-:10AB500042F80B1059F82500FDF7A0FD0EB1222098
-:10AB6000F0E70020EEE70000B4CC0014B0CC0014F5
-:10AB70004C7000102DE9F04180460E46102001F087
-:10AB80000F0200EAD600111815481029047808FBB6
-:10AB900004F302EB4302D4B202D300782044C4B2DF
-:10ABA000104F0225642157F82400FDF741FD28B11C
-:10ABB0000A20FDF71DFC6D1EEDB2F3D275B10A49F6
-:10ABC00051F828000068C16B30468847054657F8A1
-:10ABD0002400FDF763FD2846BDE8F0810020FBE777
-:10ABE000B4CC00144C700010B0CC00142DE9F04728
-:10ABF000894601F00F020546102101EAD9002549D6
-:10AC000010440B786B4302EB4302D4B2102802D3FA
-:10AC100009782144CCB2DFF880A0142202EB800036
-:10AC20005AF82510C968085820B149462846FFF748
-:10AC300047FF38BBDFF86480022600BF58F82400C5
-:10AC40006421FDF7F5FC28B10A20FDF7D1FB761E43
-:10AC5000F6B2F3D2DEB102275AF825000068016B84
-:10AC600048468847060005D00A20FDF7C1FB7F1E35
-:10AC7000FFB2F1D258F82400FDF710FD16F1020FD3
-:10AC800005D016B12220BDE8F0870020FBE7232085
-:10AC9000F9E70000B4CC0014B0CC00144C700010E4
-:10ACA000024951F82000006840680047B0CC001409
-:10ACB000024951F82000006800680047B0CC001439
-:10ACC0002DE9F04791468A4605460324164E08E0D2
-:10ACD00056F825006421FDF7ABFC28B10A20FDF7EA
-:10ACE00087FB641EE4B2F3D2CCB1DFF840800227C8
-:10ACF000494658F82500006882685046904704008D
-:10AD000005D00A20FDF774FB7F1EFFB2F0D256F883
-:10AD10002500FDF7C3FC24B12220BDE8F0872320E5
-:10AD2000FBE70020F9E700005C700010B0CC0014D5
-:10AD30002DE9F047894605460324164E09E000BF79
-:10AD400056F825006421FDF773FC28B10A20FDF7B1
-:10AD50004FFB641EE4B2F3D2C4B1DFF83C8002279B
-:10AD600058F825000068016948468847040005D066
-:10AD70000A20FDF73DFB7F1EFFB2F1D256F82500F9
-:10AD8000FDF78CFC24B12220BDE8F0872320FBE7EF
-:10AD90000020F9E75C700010B0CC00142DE9F047FA
-:10ADA000894605460324164E09E000BF56F82500E3
-:10ADB0006421FDF73DFC28B10A20FDF719FB641E54
-:10ADC000E4B2F3D2C4B1DFF83C80022758F8250082
-:10ADD0000068816A48468847040005D00A20FDF7CC
-:10ADE00007FB7F1EFFB2F1D256F82500FDF756FC97
-:10ADF00024B12220BDE8F0872320FBE70020F9E7FB
-:10AE00005C700010B0CC00142DE9F0470546DC481A
-:10AE100088460078854278D2DFF8689359F8257023
-:10AE2000002F72D0FC68002C6FD05FEA48704FF0A2
-:10AE3000000632D594F8A000000621D5D4F89C0075
-:10AE400010B994F8960020B12846FFF753FC20B3C0
-:10AE50000AE094F8970000B384F897602846FFF75B
-:10AE600075FB48B1012807D0012200212846FFF7D1
-:10AE70005BFDC4F89C6010E0284601F02EFC0CE05D
-:10AE8000284601F022FC40B96078010605D500F0A3
-:10AE90007F0161702846FFF7A9FC5FEA887045D5FD
-:10AEA00094F8A00001063ED4D4F89C1021B12846A5
-:10AEB000FFF752FC50B32EE094F8971059B184F884
-:10AEC00097602846FFF764FB08B1012823D1284684
-:10AED00001F0F6FB2AE0C0F34111E1B101291AD1DA
-:10AEE00010F01F0017D0012802D0022813D10EE065
-:10AEF000284600F049F948B92846FDF7F5FB28B97E
-:10AF00002846FDF7F9FB08B905E04AE00EE02846BF
-:10AF1000FDF7EEFBF7E7012280212846FFF704FD4D
-:10AF2000C4F89C6002E0284601F0DCFB5FEAC870D0
-:10AF300037D02846C84659F82010C968A031FFF715
-:10AF40002DFF00282DD12846FFF762FB0121B8B361
-:10AF5000012863D1D4F8A80018B9D4F8AC20002A8D
-:10AF60005CD1B4F8A620F2B1C4F89800D4F8AC00D3
-:10AF7000C4F89C0084F8971094F8A0301B0603D402
-:10AF80002846FFF7E9FB0AE0904205D27A7D521E7F
-:10AF9000104201D184F896102846FFF7ABFB002839
-:10AFA0003CD1BDE8F08794F8A0000006284603D401
-:10AFB000BDE8F04701F084BBBDE8F04701F08DBB70
-:10AFC000B868C4F89800B4F8A6007A8B904202D909
-:10AFD000C4F89C2001E0C4F89C0094F8A000C0F3E1
-:10AFE000411222B1012A7DD0022A17D19BE094F8A8
-:10AFF000A1000C2812D2DFE800F00612AF14AF1A3D
-:10B0000034AF3A505471284601F03AF82CE0284603
-:10B01000FFF7E0FA2846FFF76DFBE0B39CE0002164
-:10B0200000E00121284601F085F898B994E058F82D
-:10B030002500C06880B3B0F8A41069BBB0F8A610B2
-:10B0400051BB90F8A010C90626D190F8A21041F08B
-:10B05000800141702846FFF7BDFA284601F030FB19
-:10B0600068E0284600F0E8FE0028D0D174E058F8E7
-:10B070002500C06880B1B0F8A2206AB9B0F8A42059
-:10B0800052B9B0F8A620012A66D190F8A020D206C5
-:10B0900062D1021D1EE04AE040E0284601F0D0F8EF
-:10B0A000C3E758F82520CAB3D068B8B3B0F8A230C7
-:10B0B000A3BBB0F8A630012B4ED190F8A03003F01E
-:10B0C0001F03012B48D1B0F8A430578ABB4243D2AA
-:10B0D00052681A44C0E9262199E703E0284601F0A6
-:10B0E000E3F9A2E710F01F0036D0012802D00228B1
-:10B0F00032D114E0284600F009F958B92846FDF786
-:10B100000FFB38B92846FDF7EDFA18B92846FDF7C8
-:10B11000F1FA18B12846FFF75DFA0BE01CE028466B
-:10B12000FDF7E4FAF5E7284600F050FF9CE72846D3
-:10B1300001F0D3FA94F8A00000063FF532AFB4F85E
-:10B14000A60000283FF42DAF2846FFF705FB002896
-:10B15000F8D00122802109E094F8A0000006B4F89C
-:10B16000A60009D40028F4D0012200212846FFF7C8
-:10B17000DBFBC4F89C6014E70028EAD1F4E7000088
-:10B18000ACCC0014B0CC00142DE9F04105461848B1
-:10B190000078854226D2174850F82500C6680EB3BD
-:10B1A0000024DFF85480154F19E000BF58F8240040
-:10B1B00098B1017FA94210D1B6F8A410407F814216
-:10B1C0000BD196F8A100092807D1204600F03EFADD
-:10B1D00018B1284601F074FA38B1641CE4B238782A
-:10B1E0008442E3D30020BDE8F0810120FBE70000AA
-:10B1F000ACCC0014B0CC0014FC00001018CD00142E
-:10B200002DE9F0473B4B1B78984271D23A4B53F8EB
-:10B2100020C0BCF1000F6BD0DCF80C40002C67D0D4
-:10B22000B4F8A230DFF8D4901B0A354F354D212BEE
-:10B2300002D0222B5CD131E000263346BA460FE023
-:10B240005AF8237057B197F81C80804506D1B4F89E
-:10B25000A4807F7FB84506D0761CF6B25B1CDBB2BB
-:10B260002F78BB42ECD32D78AE4241D09CF81160D0
-:10B27000254D94F8954066B164B155F820004069B9
-:10B280000860044659F82300C0882044086009205B
-:10B2900029E064BB55F820000069F1E70026334639
-:10B2A00013E000BF57F823C0BCF1000F0BD09CF88F
-:10B2B0001C80804507D1B4F8A4809CF81DC0E045EF
-:10B2C00007D0761CF6B25B1CDBB295F800C0634574
-:10B2D000E8D3287886420BD059F8234024680C60C4
-:10B2E00059F82300808810600120BDE8F087FFE74F
-:10B2F0000020FAE7ACCC0014B0CC001414CD00143C
-:10B30000FC00001018CD0014E80000102DE9F05FDB
-:10B31000504980460978884270D24F4951F82870C8
-:10B32000002F6BD0FC68002C68D000264FF0030A79
-:10B330004FF0010BDFF8249185E0494850F8265082
-:10B34000002D7ED0297F41457BD1B4F8A410687FC1
-:10B35000814276D194F8A1000C2872D2DFE800F087
-:10B3600071063E517171717171234763304600F06F
-:10B37000D9F890B3B4F8A200BBEB102F06D1698EB8
-:10B38000D4F89C00884263D8E86808E0BAEB102F34
-:10B3900028D1E98ED4F89C00884259D86869401CAD
-:10B3A000C4F898001EE0B4F8A2000221B1EB102FFF
-:10B3B00006D1A98ED4F89C00884249D8286908E0B3
-:10B3C000BAEB102F3AD1E98ED4F89C0088423FD8CE
-:10B3D0006869401CC4F8980030E032E0304600F064
-:10B3E00065F811E04046FFF785F9C0B129E0B4F8EF
-:10B3F000A60018B9304600F0C9F81AE028E0E8B114
-:10B400001FE0304600F06EF8D8B1B868C4F8980074
-:10B41000D4F89C000128E5D9C4F89CB0E2E7404686
-:10B4200001F05BF9EBE7B4F8A60088B9304600F00C
-:10B43000EDF830B1404601F043F9E0E70120BDE806
-:10B44000F09F761CF6B299F800008642FFF475AFC3
-:10B450000020F4E7ACCC0014B0CC001418CD0014DC
-:10B46000FC0000100D490978884212D20C4951F8AD
-:10B47000200070B1816961B10A49007F0978884272
-:10B4800009D2094951F8200028B1C06818B100203C
-:10B4900070472820704721207047000018CD001405
-:10B4A000FC000010ACCC0014B0CC001410B5044665
-:10B4B000FFF7D8FF08B1002010BD0848084A50F82F
-:10B4C0002400017F806852F82110CA68896892F8C8
-:10B4D000A220805C0870012010BD0000FC0000105C
-:10B4E000B0CC001410B50446FFF7BCFF88B90A4879
-:10B4F00050F8240068B1804700280ADB0749084A51
-:10B5000051F82410097F52F8211089680870012031
-:10B5100010BD002010BD00001CC90014FC0000106C
-:10B52000B0CC001470B5164D0446164955F82400E9
-:10B53000007F51F82000C6682046FFF793FFE0B96E
-:10B54000B6F8A210080A012804D0022815D0032852
-:10B5500013D103E055F82420D36802E055F82420E5
-:10B560005369094A5B1C52F8244034B1CAB2002125
-:10B57000A047002801DB012070BD002070BD000045
-:10B58000FC000010B0CC001420C9001470B50446B3
-:10B59000FFF768FF08B1002070BD194A194952F839
-:10B5A0002430187F51F82000C068B0F8A21011F0C4
-:10B5B000FF0F05D00A0A9B68C9B2491E5A540EE013
-:10B5C000002106E0B0F8A2509B682D0A5D54491C8A
-:10B5D000C9B252F8243093F830508D42F2D890F826
-:10B5E000A20010F0FF0F084850F8240004D00421F6
-:10B5F000FCF74EFF012070BDFCF780FFFAE700006A
-:10B60000FC000010B0CC0014C878001010B504463F
-:10B61000FFF728FF88B90A4850F8241069B1094893
-:10B62000094A50F82400007F52F82000C06890F8C2
-:10B63000A200884708B1012010BD002010BD000005
-:10B6400028C90014FC000010B0CC0014F8B5184F45
-:10B650000446184957F824000025007F51F82000BF
-:10B66000C6682046FFF7FEFEF8B9B6F8A210080A31
-:10B6700001281AD0022802D0032816D103E057F877
-:10B680002420136902E057F8242053690A4A5B1CFE
-:10B6900052F824404CB1B6F8A6200092CAB200215C
-:10B6A000A047050001D00120F8BD2846F8BD0000E4
-:10B6B000FC000010B0CC00142CC9001470B50C466E
-:10B6C0000546FFF7CFFE00280DD1074850F82500AA
-:10B6D000C17FA14207D18269838E007FD268BDE815
-:10B6E0007040FFF77BB970BDFC0000102DE9F047FA
-:10B6F0000746FFF7B7FE002879D1594850F8275080
-:10B70000AC69E08AA18ADFF85C914FF000088842BA
-:10B710001DD3207FD8B9C4F80880A4F8168059F842
-:10B72000276036B1E868431C027801210846B0471B
-:10B73000A082A08A58B1E868A06095F8301001296D
-:10B7400002D8401CA06002E0A08A401CA082A08A0F
-:10B750004FF0010A10BB207F00BB607810B184F865
-:10B76000018047E06368CBB195F83020012A16D8F4
-:10B77000E96881F80080A4F8168059F8276036B18E
-:10B78000EB680022022101205B1CB047A082A08A46
-:10B7900010B1E868401CA060C4F804802AE0607F13
-:10B7A000411CCEB2B24200D200260AFA06F10B4288
-:10B7B0001ED0E968701C0870A4F8168059F827C0DC
-:10B7C000BCF1000F06D0C2B2EB68022101205B1C65
-:10B7D000E047A082A08A20B1E868A060A08A401C4F
-:10B7E000A08261680AFA06F08143616002E02BE002
-:10B7F000B042D7D1A08A08B9207F50B3287F1A4918
-:10B8000051F82010CF68A18AE28A891A8EB2A97FE6
-:10B81000334641F08001A268FFF7E0F8A0683044A9
-:10B82000A060E08A304480B2E082698E884209D20A
-:10B8300097F8950005EB4000808CB6FBF0F100FB1B
-:10B84000116018B184F81C80BDE8F08784F81CA052
-:10B85000FAE7064850F82700BDE8F047FCF71EBF9E
-:10B86000FC00001020C90014B0CC0014C0780010F7
-:10B870002DE9F8430646FFF7F5FD002839D11E48AB
-:10B88000002750F82640A56994F81C80288B10B931
-:10B890002069E8602F83E17F4046FFF76BF9E96894
-:10B8A00082B21144E960298B084480B2134928838D
-:10B8B00094F8312051F82660012A04D876B100901E
-:10B8C0000022236905E04EB1401E00902069431C10
-:10B8D000027801210220B04700280AD02269EA60DC
-:10B8E0002F83A38EE17F01B04046BDE8F043FFF710
-:10B8F00075B8BDE8F8830000FC0000102CC90014E6
-:10B900002DE9F0471F46924688468146FFF7AAFD7B
-:10B9100006003AD11E4951F829401E49207FA569E9
-:10B9200051F82000618EC068B94201D202262CE095
-:10B93000007940B1184951F829000021FCF778FE40
-:10B9400018B1232621E025261FE001206870E16858
-:10B950003A4681F80080E0685146401CFCF7F1FF50
-:10B96000E0680021A860E982AF8294F83020012AC3
-:10B9700002D8401CA86002E0A88A401CA882226865
-:10B98000484622F81810FFF7B1FE3046BDE8F087B0
-:10B99000FC000010B0CC0014C078001070B5044654
-:10B9A000FFF760FD05002CD1174850F8240000B1C6
-:10B9B0008047164E56F8240030B921460520FCF782
-:10B9C000C9FC46F8240020B1114E56F8240010B1ED
-:10B9D00007E0102515E02046FCF73AFD46F8240064
-:10B9E00020B10C4E56F8240010B10AE0112508E0F1
-:10B9F000002221460220FCF7DDFD46F8240000B9B4
-:10BA00001225284670BD000024C90014C478001017
-:10BA1000C8780010C07800102DE9F0410546FFF706
-:10BA200021FD002826D1144850F825401348A66966
-:10BA300050F8250008B1FCF761FDA07F20B140F06F
-:10BA40008001207FFFF73CF8E17F11B1207FFFF7F5
-:10BA500037F80B4F57F8250030B10021FCF7E8FD0F
-:10BA600057F82500FCF71AFE20213046FCF782FF2C
-:10BA70002069F060BDE8F081FC000010C87800107B
-:10BA8000C078001070B50446FFF7ECFC002815D113
-:10BA900000210B4A7D2303E080684354491CC9B24E
-:10BAA00052F8240090F830508D42F5D80548042112
-:10BAB00050F82400BDE87040FCF7EABC70BD0000FF
-:10BAC000FC000010C878001070B5C4B22046FFF723
-:10BAD000C9FC002811D1451E2846FCF72FFD0101A5
-:10BAE000FAD4060AB00702D52046FFF7C1FE700758
-:10BAF000F2D52046FFF7FAFDEEE770BD2DE9F047DD
-:10BB0000C4B22046FFF7AEFC00287AD1444845492C
-:10BB100050F82420107F936951F82000C068017903
-:10BB200000296ED05988091D89B2598090F8950076
-:10BB300038B1508C38B13C4D05EB400030F8020C68
-:10BB400002E0108C00B901204FF0000CE246814267
-:10BB500003D1A3F802A04FF0010C0021012545E01C
-:10BB600017680026B94637F811704FF6FC7847453C
-:10BB700002D23F1D29F81170576837F811704FB184
-:10BB8000D2F80080C14638F81180B84502D329F8B0
-:10BB900011A0012697687F5CB0EB870F02D90FB127
-:10BBA000012700E0002717EA0C0F01D1BE4304D0A3
-:10BBB0005E6805FA01F73E435E6096685768765CFA
-:10BBC00037F81170B600B7420ED056B1176837F883
-:10BBD0001170B74205D35F6805FA01F847EA080714
-:10BBE0005F60576827F81160491CC9B292F830604D
-:10BBF0008E42B5D8586808B15A7822B18D40A84312
-:10BC00005860BDE8F0870948002150F82400FCF78F
-:10BC10000FFD0028F5D12046BDE8F047FFF766BDCF
-:10BC2000FC000010B0CC001432C70014C078001023
-:10BC30002DE9F0410446FFF715FC05001BD10F4E1E
-:10BC4000002756F8240030B1FCF730FD08B112256A
-:10BC500011E046F824700A4E56F8240030B1FCF783
-:10BC6000BFFB08B1102506E046F82470054850F8DF
-:10BC7000240000B180472846BDE8F081C07800105C
-:10BC8000C478001030C900142DE9F05F0446FEF7B7
-:10BC9000BFFB050078D15C4850F82400C7683878AD
-:10BCA00010B10020BDE8F09F2046FFF701F857498A
-:10BCB00001EB840108602046FEF7F2FF544941F889
-:10BCC0002400B0213846FCF755FEDFF84CA1DFF820
-:10BCD0004491DFF848B19AF8000059F8241004FBA9
-:10BCE00000F639B9002221461046FCF763FC49F8FA
-:10BCF000240078B3002510E005EB460000F0FF08B3
-:10BD00005BF8280038B92A4621460120FCF752FC8E
-:10BD10004BF82800F0B16D1CEDB29AF80000B5EBBD
-:10BD2000400FE9D33E4850F82400426A3AB1364801
-:10BD300050F82400C18A11B11046FCF71BFE3948A7
-:10BD400050F8240000B180472046FCF709FD0500AB
-:10BD500023D102E0FFE712251FE0334D55F8240000
-:10BD600030B921460020FCF7F5FA45F8240060B10F
-:10BD70002E4850F824202E4850F824102046FEF774
-:10BD80009FFF050009D102E03BE010250EE00221F3
-:10BD90002046FEF7CDFF050012D0234F57F82400B0
-:10BDA00020B1FCF71DFB002047F824002046FCF7DB
-:10BDB000E7FC204850F8240000B18047002712E03B
-:10BDC000012038701DE000BF07EB460000F0FF08BF
-:10BDD0005BF8281029B10846FCF768FC00204BF8F6
-:10BDE00028007F1CFFB29AF80000B7EB400FEBD39E
-:10BDF00059F824004E4620B1FCF758FC002046F8C4
-:10BE0000240028464EE70000B0CC001460700010FB
-:10BE1000447000105C700010B4CC00144C70001022
-:10BE2000E800001004C9001448700010A8CC0014E9
-:10BE3000A4CC001414C900142DE9F0415F4909781D
-:10BE4000884273D25E4951F82060002E6ED0F568AA
-:10BE5000002D6BD0B5F8A610002967D095F8A0107A
-:10BE6000584C11F01F0102D001295FD186E0B5F8CE
-:10BE7000A2205549130A082B58D2DFE803F090049A
-:10BE80001D5890900E3F12F0FF0F4FD151F8200037
-:10BE90004068C5F8980012206EE0727C002A7ED0BF
-:10BEA00095F8952051F8200022B1C068C5F8980097
-:10BEB0000A2061E08068F9E7737C002B95F89530E3
-:10BEC00007D03BB151F82000406920600020D2B279
-:10BED0000BE05BBB51F820000069F6E721680B78A6
-:10BEE00013B14B8819442160401C8242F6D120686E
-:10BEF0000178D9B1C5F8980040883DE0737CABB1BA
-:10BF000095F8953051F8200023B1C06920600020D9
-:10BF1000D2B208E08069F9E721680B7813B14B8849
-:10BF200019442160401C8242F6D1E0E737E0D2B2EA
-:10BF3000032A05D151F820305B6A0BB11F782FB965
-:10BF4000EE2A05D151F820309B6A0BB123600DE039
-:10BF500051F82000006A2060002005E0236819786D
-:10BF600009B119442160401C8242F7D12068017850
-:10BF7000A9B1C5F898000078606009E0114A121D67
-:10BF8000111FFFF73DF900280AD02068C5F8980076
-:10BF9000B5F8A6006168884204D3084603E0002093
-:10BFA000BDE8F0816060C5F89C00717D491E0142CA
-:10BFB00002D1012085F896000120F1E7ACCC0014F5
-:10BFC000B0CC001400000010E800001070B5284943
-:10BFD0000978884220D2274951F82060E6B1F468F8
-:10BFE000D4B194F8A110327E914215D1B4F8A210C8
-:10BFF000090A11D1B4F8A61071B194F8A0101E4D21
-:10C0000011F01F0102D0012906D10EE0B4F8A410EE
-:10C01000042903D005290CD0002070BD174951F820
-:10C020002000C06A80B1A8600AE0B4F8A410052915
-:10C030000AD111490831FCF74BFB0028EDD0A86864
-:10C04000C4F898000068E860B4F8A600E96888427F
-:10C0500001D3084600E0E860C4F89C00717D491EE9
-:10C06000014202D1012084F89600012070BD000039
-:10C07000ACCC0014B0CC001400000010E80000109C
-:10C08000F0B52A49097888424ED2294951F8202032
-:10C09000F2B3D068002846D0926800F19801BAB394
-:10C0A000B0F8A230A3BBB0F8A630022B3CD190F878
-:10C0B000A0304FF0020613F01F0305D00024012B1F
-:10C0C00009D0022B30D110E0B0F8A42002BB801CB4
-:10C0D000C1E9000626E00379D3B190F8A43090F8C6
-:10C0E0009400834220D2147019E090F8A4301027F5
-:10C0F00003F08F0505F00F0307EAD5071F4401235E
-:10C10000BB4007790FB92D070ED185681D4200E0AD
-:10C110000AE009D0C068184000D0012010705470A7
-:10C12000C1E900260120F0BD0020F0BDACCC001418
-:10C13000B0CC00142DE9F04107463D480078874215
-:10C1400065D23C4850F82700C468002C5FD0B4F892
-:10C15000A600E8BB94F8A00010F01F0004D001284E
-:10C1600055D0022853D117E0B4F8A20001284ED1CF
-:10C1700041B1314850F8270000B18047608840F055
-:10C18000020007E02D4850F8270000B18047608882
-:10C1900020F00200608048E094F8A400102200F033
-:10C1A0008F0606F00F0002EAD6021044012522791C
-:10C1B00085406AB1A2682A4229D0B4F8A220A2BB65
-:10C1C000320724D0C1B104EB8000406930B100E0F7
-:10C1D0001DE031463846FEF773FCC0B901223146F6
-:10C1E0003846FEF7A1FB90B9E06831462843E0608D
-:10C1F0003846FCF711FB18E0D4E903010840284257
-:10C2000013D1002231463846FEF78EFB10B10020D4
-:10C21000BDE8F081E0683146A843E0603846FCF7AD
-:10C220007DFA31463846FCF7DFFA0120F0E70000DE
-:10C23000ACCC0014B0CC0014ECC80014E8C8001456
-:10C240002DE9FC5F94498046097888427ED2934963
-:10C2500051F82870002F79D0FC68002CFBD0B4F87E
-:10C26000A400002872D1B4F8A6000028FAD10090EA
-:10C2700094F8A00010F01F0FF4D194F8A2004FF032
-:10C28000000A10F0FF0F4FF0010B4FF4803977D008
-:10C29000797C8348002994F8951004D029B150F88E
-:10C2A000280045699DE00029DCD150F82800056987
-:10C2B00097E06878022804D0042868D0052863D164
-:10C2C00068E0697994F8A20081425ED129797A8A7E
-:10C2D00091423BD82071287984F89400002003E033
-:10C2E0007A6802F800A0401C798A8142F8D80126B9
-:10C2F000A1680BFA06F0014213D004EB86004069F6
-:10C3000028B131464046FEF7DBFB00281ED13146FE
-:10C310004046FEF76BFC002818D131464046FCF73A
-:10C320007BFAA16809FA06F0014218D004EB8600F6
-:10C33000406D30B146F080014046FEF7C1FB002859
-:10C3400004D146F080014046019100E075E0FEF71F
-:10C350004DFC002871D140460199FCF75DFA761C2E
-:10C36000F6B2102EC4D34FF00110C4E9020AC4F88B
-:10C3700010A0E8794006608803D540F0010002E093
-:10C3800034E020F00100608029E0688828E0E87847
-:10C39000009024E0009810BBA878102200F08F01D4
-:10C3A00001F00F0002EAD10210440BFA00F604EB90
-:10C3B0008000406918B14046FEF782FBE8BBA068E8
-:10C3C0003043A060E878AB8800F00302A9784046CB
-:10C3D000FEF742FA88BBA9784046FCF705FA2878B0
-:10C3E0000544287800287FF464AF41E0564684F87D
-:10C3F00004A001254FEA0B07A16807FA05F00142E6
-:10C4000011D004EB8500406920B129464046FEF773
-:10C4100057FB90B929464046FEF7E8FB68B9294624
-:10C420004046FCF7F9F9A16809FA05F0014216D077
-:10C4300004EB8500406D38B100E02BE045F0800151
-:10C440004046FEF73DFB28BB45F080018A4640464A
-:10C45000FEF7CCFBF0B951464046FCF7DDF96D1C08
-:10C46000EDB2102DC8D34FF00110C4E902062661C9
-:10C47000207994F8A21088420CD121794046FCF72B
-:10C48000A1F9084850F8281009B1207988470120FF
-:10C49000BDE8FC9F0020FBE7ACCC0014B0CC00143E
-:10C4A000E8000010E4C800142DE9FE4F074661487B
-:10C4B000007887427ED2604850F82760002E79D0FD
-:10C4C000F468002C76D0B4F8A600002872D1834618
-:10C4D000CDF808B094F8A000D84600F01F00DA4666
-:10C4E000D946012866D12079002871D0717C534843
-:10C4F000002994F8951004D029B150F82700456917
-:10C500008CE0002956D150F82700056986E068784C
-:10C51000022804D0042808D005287DD11FE06879BE
-:10C520002179884278D0688877E0B4F8A400718ACD
-:10C5300088426AD295F8028095F803A04FF0000B6C
-:10C54000404569D1B4F8A210514565D170684FF0EB
-:10C55000010910F80810029100F808A05CE0B4F896
-:10C56000A410414558D1A878102200F08F0000F0A7
-:10C570000F01009002EAD00008440121814001919E
-:10C58000B4F8A220524524D1A168019A04EB80009E
-:10C590001143A160E168019A9143E160406920B1D3
-:10C5A00038460099FEF78CFA20B9E878AB8800F09D
-:10C5B000030200E029E0A9783846FEF74DF920BBD8
-:10C5C00038460099FCF710F901994BEA010B23E07A
-:10C5D0001CE0029A92451FD1019A1BEA020F1BD15F
-:10C5E000A16804EB80009143A160E168019A914346
-:10C5F000E160406920B138460099FEF761FA20B940
-:10C6000038460099FEF7F2FA10B10020BDE8FE8F1F
-:10C6100038460099FCF700F9287805442878002866
-:10C620007FF475AFB9F1000F01D084F8058048465A
-:10C63000ECE70000ACCC0014B0CC0014E800001013
-:10C6400070B5084D0446AF2155F82400C068401C61
-:10C65000FCF790F955F82400017CC068C1F3801103
-:10C66000418070BDB0CC0014024A52F82000FBF7A4
-:10C670005FBF000048700010F0B40E4D01F00F03D2
-:10C68000102455F8205004EAD1011944ED6814260D
-:10C6900006EB810100246C50190341EA0221064A8D
-:10C6A000127800FB0230054A52F820000068F0BC06
-:10C6B000FBF73EBFB0CC0014B4CC0014EC0000106B
-:10C6C00000231A468021FEF789B910B58021FEF7B4
-:10C6D00051FA002800D0222010BD00231A46194626
-:10C6E000FEF77CB910B504460021FEF743FA08B105
-:10C6F000222010BD064850F82400C068406D002874
-:10C70000F7D02046BDE810408021FEF7D9B90000DF
-:10C71000B0CC001402E008C8121F08C1002AFAD1E8
-:10C7200070477047002001E001C1121F002AFBD1B1
-:10C730007047010001000100010002000400080030
-:10C7400010002000400080000001000200040008EA
-:10C750000010000003000000E803000005000000D6
-:10C7600080540010100000000000000000000000D5
-:10C7700000000000000000000000000000000000B9
-:10C78000C054001000100000000000000000000075
-:10C790000000000000000000000000000000000099
-:10C7A00000000000000000000004000058CA00144F
-:10C7B00094CA00147CCA001404000000A465001090
-:10C7C000B4660010B86E0010D86E001000000000B3
-:10C7D00000000000000000000000000044650010A0
-:10C7E000A46500100000000000000000C0640010FC
-:10C7F000F4640010C9590014D5590014D959001413
-:10C80000055A0014255A0014A55C0014A95C0014F4
-:10C810002D5D0014CD5D0014D95D0014E55D00149C
-:10C82000D16000142561001449610014C96B001423
-:10C83000D56B0014D96B00140D6C0014356C00140A
-:10C84000B56E0014DD6E0014056F00143D6F00140A
-:10C850006D6F0014996F0014D56F001411710014DE
-:10C86000B17100148D720014E97200140D7300147C
-:10C87000C17300140100000000200840002008409F
-:10C8800000000000DCC800140000000000000000F0
-:10C890000000000000000000000000000000000098
-:10C8A0000000000010150540141505400024054047
-:10C8B00004240540A000054000200000043105408C
-:10C8C0005431054019000000000000000000000085
-:10C8D000000000004829001000000000010E0000C8
-:10C8E00001000000458700144D870014498700149B
-:10C8F0005D87001459870014558700145187001470
-:10C9000039870014258700143587001441870014E7
-:10C910003D870014298700142D8700141187001407
-:10C92000CD010014A9010014198700142902001474
-:10C93000C9010014001000001111F1002411E100E0
-:10C940003B11D1005511C1007411B1009911A10022
-:10C95000C7119100001281002212F20049127100E9
-:10C960007612D200AA126100E812B200331351000D
-:10C970006D13E3008E139200B113D3000014410035
-:10C980004414F4005D14B30092147200CC14A3009C
-:10C99000EC14D40055153100B615E500D115B400DE
-:10C9A000001683002716D50066165200AA16C50089
-:10C9B000DB1673001C1794004517B5006217D600EC
-:10C9C0007717F700001821008818F8009D18D70085
-:10C9D000BA18B600E3189500241974005519C70059
-:10C9E00099195300D819D800001A85002E1AB700DB
-:10C9F000491AE900AA1A3200131BD900331BA700F9
-:10CA00006D1B7500A21BB800BB1BFB00001C430084
-:10CA10004E1CDA00711C9700921CEB00CC1C5400D9
-:10CA2000171DB900551D6500891DDB00B61D760078
-:10CA3000DD1DFD00001E8700381E9800661EA9003F
-:10CA40008B1EBA00AA1ECB00C41EDC00DB1EED004C
-:10CA5000EE1EFE00000000000000000000000000CC
-:10CA6000A465001044000000B86600100002000039
-:10CA700001000000000000000000000000000000B5
-:10CA800000000000C064001034000000F4640010D6
-:10CA9000500000000000000000000000E8650010E9
-:10CAA00044000000B86800100002000028000000E8
-:10CAB0000000000000000000555342445F48494414
-:10CAC000305F5468726561640055534244305F437F
-:10CAD0006F72655F5468726561640000525458203B
-:10CAE00056352E352E320000090229000101008042
-:10CAF000FA090400000203000004092111010001E9
-:10CB000022230007058103400001070501034000BF
-:10CB1000010000000902290001010080FA09040057
-:10CB20000002030000040921110100012223000773
-:10CB300005810340000107050103400001000000DA
-:10CB4000C9CA0014000000002C6600104400000058
-:10CB5000B86A001000020000200000000000000081
-:10CB6000000000002CC80014D86E0010A06F001048
-:10CB7000DC6E001080010100024010000100800006
-:10CB8000120100020000004051C201F00001010248
-:10CB9000030100000A06000200000040010000003E
-:10CBA0000A06000200000040010000000705000026
-:10CBB000400000000907290001010080FA09040073
-:10CBC00000020300000409211101000122230007D3
-:10CBD000058103400001070501034000010000003A
-:10CBE0000907290001010080FA090400000203007E
-:10CBF00000040921110100012223000705810340DF
-:10CC000000010705010340000100000004030904BE
-:10CC100028034B00450049004C0020002D00200057
-:10CC200054006F006F006C00730020004200790018
-:10CC30002000410052004D0028034C0050004300EA
-:10CC40002D004C0069006E006B0032002000430094
-:10CC50004D005300490053002D0044004100500096
-:10CC60001A03300030003000310041003000300045
-:10CC70003000300030003000300028034C005000FD
-:10CC800043002D004C0069006E006B003200200054
-:10CC900043004D005300490053002D004400410063
-:10CCA00050000000BD860014C5860014010000007D
-:10CCB00064CB001402000000667000106870001061
-:10CCC0006A7000106C7000108074001064700010A6
-:10CCD000A0780010000001010100020040004000A7
-:10CCE00001000200400040000101000400040100B6
-:10CCF0000600FF0901A101150026FF007508960036
-:10CD000004090181029600040901910295010901BB
-:10CD1000B102C000F40000100100000000D00014B7
-:10CD2000000000100008000014C7001400D8001410
-:10CD300000080010D074000024C70014F0D0950340
-:10CD400000000000000000000000000000000000E3
-:10CD500000000000000000000000000000000000D3
-:10CD600000000000000000000000000000000000C3
-:10CD700000000000000000000000000000000000B3
-:10CD800000000000000000000000000000000000A3
-:10CD90000000000000000000000000000000000093
-:10CDA0000000000000000000000000000000000083
-:10CDB0000000000000000000000000000000000073
-:10CDC0000000000000000000000000000000000063
-:10CDD0000000000000000000000000000000000053
-:10CDE0000000000000000000000000000000000043
-:10CDF0000000000000000000000000000000000033
-:10CE00000000000000000000000000000000000022
-:10CE10000000000000000000000000000000000012
-:10CE20000000000000000000000000000000000002
-:10CE300000000000000000000000000000000000F2
-:10CE400000000000000000000000000000000000E2
-:10CE500000000000000000000000000000000000D2
-:10CE600000000000000000000000000000000000C2
-:10CE700000000000000000000000000000000000B2
-:10CE800000000000000000000000000000000000A2
-:10CE90000000000000000000000000000000000092
-:10CEA0000000000000000000000000000000000082
-:10CEB0000000000000000000000000000000000072
-:10CEC0000000000000000000000000000000000062
-:10CED0000000000000000000000000000000000052
-:10CEE0000000000000000000000000000000000042
-:10CEF0000000000000000000000000000000000032
-:10CF00000000000000000000000000000000000021
-:10CF10000000000000000000000000000000000011
-:10CF20000000000000000000000000000000000001
-:10CF300000000000000000000000000000000000F1
-:10CF400000000000000000000000000000000000E1
-:10CF500000000000000000000000000000000000D1
-:10CF600000000000000000000000000000000000C1
-:10CF700000000000000000000000000000000000B1
-:10CF800000000000000000000000000000000000A1
-:10CF90000000000000000000000000000000000091
-:10CFA0000000000000000000000000000000000081
-:10CFB0000000000000000000000000000000000071
-:10CFC0000000000000000000000000000000000061
-:10CFD0000000000000000000000000000000000051
-:10CFE0000000000000000000000000000000000041
-:10CFF0000000000000000000000000000000000031
-:10D000000000000000000000000000000000000020
-:10D010000095BA0ADCCA0014D2B3FB02000000007B
-:10D020000000000000000000000000000000000000
-:10D0300000000000000000000000000000000000F0
-:10D0400000000000000000000000000000000000E0
-:10D0500000000000000000000000000000000000D0
-:10D0600000000000000000000000000000000000C0
-:10D0700000000000000000000000000000000000B0
-:10D0800000000000000000000000000000000000A0
-:10D090000000000000000000000000000000000090
-:10D0A0000000000000000000000000000000000080
-:10D0B0000000000000000000ACCB001480CB001486
-:10D0C00094CB0014A0CB0014E8CA001414CB0014B5
-:10D0D000B4CB0014E0CB00140CCC00142070001072
-:10D0E0000000000000000000B800001048700010B0
-:10D0F000C4780010F0CC001423001200B8CC001447
-:10D10000000000000000000000000000000000001F
-:10D11000000000000000000000000000000000000F
-:10D1200000000000000000000000000000000000FF
-:10D1300000000000000000000000000000000000EF
-:10D1400000000000000000000000000000000000DF
-:10D1500000000000000000000000000000000000CF
-:10D1600000000000000000000000000000000000BF
-:10D1700000000000000000000000000000000000AF
-:10D18000000000000000000000000000000000009F
-:10D19000000000000000000000000000000000008F
-:10D1A000000000000000000000000000000000007F
-:10D1B000000000000000000000000000000000006F
-:10D1C000000000000000000000000000000000005F
-:10D1D000000000000000000000000000000000004F
-:10D1E000000000000000000000000000000000003F
-:10D1F000000000000000000000000000000000002F
-:10D20000000000000000000000000000000000001E
-:10D21000000000000000000000000000000000000E
-:10D2200000000000000000000000000000000000FE
-:10D2300000000000000000000000000000000000EE
-:10D2400000000000000000000000000000000000DE
-:10D2500000000000000000000000000000000000CE
-:10D2600000000000000000000000000000000000BE
-:10D2700000000000000000000000000000000000AE
-:10D28000000000000000000000000000000000009E
-:10D29000000000000000000000000000000000008E
-:10D2A000000000000000000000000000000000007E
-:10D2B000000000000000000000000000000000006E
-:10D2C000000000000000000000000000000000005E
-:10D2D000000000000000000000000000000000004E
-:10D2E000000000000000000000000000000000003E
-:10D2F000000000000000000000000000000000002E
-:10D30000000000000000000000000000000000001D
-:10D31000000000000000000000000000000000000D
-:10D3200000000000000000000000000000000000FD
-:10D3300000000000000000000000000000000000ED
-:10D3400000000000000000000000000000000000DD
-:10D3500000000000000000000000000000000000CD
-:10D3600000000000000000000000000000000000BD
-:10D3700000000000000000000000000000000000AD
-:10D38000000000000000000000000000000000009D
-:10D39000000000000000000000000000000000008D
-:10D3A000000000000000000000000000000000007D
-:10D3B000000000000000000000000000000000006D
-:10D3C000000000000000000000000000000000005D
-:10D3D000000000000000000000000000000000004D
-:10D3E000000000000000000000000000000000003D
-:10D3F000000000000000000000000000000000002D
-:10D40000000000000000000000000000000000001C
-:10D41000000000000000000000000000000000000C
-:10D4200000000000000000000000000000000000FC
-:10D4300000000000000000000000000000000000EC
-:10D4400000000000000000000000000000000000DC
-:10D4500000000000000000000000000000000000CC
-:10D4600000000000000000000000000000000000BC
-:10D4700000000000000000000000000000000000AC
-:10D48000000000000000000000000000000000009C
-:10D49000000000000000000000000000000000008C
-:10D4A000000000000000000000000000000000007C
-:10D4B000000000000000000000000000000000006C
-:10D4C000000000000000000000000000000000005C
-:10D4D000000000000000000000000000000000004C
-:10D4E000000000000000000000000000000000003C
-:10D4F000000000000000000000000000000000002C
-:10D50000000000000000000000000000000000001B
-:10D51000000000000000000000000000000000000B
-:10D5200000000000000000000000000000000000FB
-:10D5300000000000000000000000000000000000EB
-:10D5400000000000000000000000000000000000DB
-:10D5500000000000000000000000000000000000CB
-:10D5600000000000000000000000000000000000BB
-:10D5700000000000000000000000000000000000AB
-:10D58000000000000000000000000000000000009B
-:10D59000000000000000000000000000000000008B
-:10D5A000000000000000000000000000000000007B
-:10D5B000000000000000000000000000000000006B
-:10D5C000000000000000000000000000000000005B
-:10D5D000000000000000000000000000000000004B
-:10D5E000000000000000000000000000000000003B
-:10D5F000000000000000000000000000000000002B
-:10D60000000000000000000000000000000000001A
-:10D61000000000000000000000000000000000000A
-:10D6200000000000000000000000000000000000FA
-:10D6300000000000000000000000000000000000EA
-:10D6400000000000000000000000000000000000DA
-:10D6500000000000000000000000000000000000CA
-:10D6600000000000000000000000000000000000BA
-:10D6700000000000000000000000000000000000AA
-:10D68000000000000000000000000000000000009A
-:10D69000000000000000000000000000000000008A
-:10D6A000000000000000000000000000000000007A
-:10D6B000000000000000000000000000000000006A
-:10D6C000000000000000000000000000000000005A
-:10D6D000000000000000000000000000000000004A
-:10D6E000000000000000000000000000000000003A
-:10D6F000000000000000000000000000000000002A
-:10D700000000000000000000000000000000000019
-:10D710000000000000000000000000000000000009
-:10D7200000000000000000000000000000000000F9
-:10D7300000000000000000000000000000000000E9
-:10D7400000000000000000000000000000000000D9
-:10D7500000000000000000000000000000000000C9
-:10D7600000000000000000000000000000000000B9
-:10D7700000000000000000000000000000000000A9
-:10D780000000000000000000000000000000000099
-:10D790000000000000000000000000000000000089
-:10D7A0000000000000000000000000000000000079
-:10D7B0000000000000000000000000000000000069
-:10D7C0000000000000000000000000000000000059
-:10D7D0000000000000000000000000000000000049
-:10D7E0000000000000000000000000000000000039
-:10D7F0000000000000000000000000000000000029
-:0400000514000115CD
-:00000001FF

+ 0 - 2483
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/Device/LPC4370_Cortex-M4/RTE_Device.h

@@ -1,2483 +0,0 @@
-/* -------------------------------------------------------------------------- 
- * Copyright (c) 2013-2016 Arm Limited (or its affiliates). All 
- * rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * $Date:        25. April 2016
- * $Revision:    V2.2.1
- *
- * Project:      RTE Device Configuration for NXP LPC43xx
- * -------------------------------------------------------------------------- */
-
-//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
-
-#ifndef __RTE_DEVICE_H
-#define __RTE_DEVICE_H
-
-
-// <e> USB0 Controller [Driver_USBD0 and Driver_USBH0]
-// <i> Configuration settings for Driver_USBD0 in component ::Drivers:USB Device
-// <i> Configuration settings for Driver_USBH0 in component ::Drivers:USB Host
-#define   RTE_USB_USB0                  1
-
-//   <h> Pin Configuration
-//     <o> USB0_PPWR (Host) <0=>Not used <1=>P1_7 <2=>P2_0 <3=>P2_3 <4=>P6_3
-//     <i> VBUS drive signal (towards external charge pump or power management unit).
-#define   RTE_USB0_PPWR_ID              0
-#if      (RTE_USB0_PPWR_ID == 0)
-  #define RTE_USB0_PPWR_PIN_EN          0
-#elif    (RTE_USB0_PPWR_ID == 1)
-  #define RTE_USB0_PPWR_PORT            1
-  #define RTE_USB0_PPWR_BIT             7
-  #define RTE_USB0_PPWR_FUNC            4
-#elif    (RTE_USB0_PPWR_ID == 2)
-  #define RTE_USB0_PPWR_PORT            2
-  #define RTE_USB0_PPWR_BIT             0
-  #define RTE_USB0_PPWR_FUNC            3
-#elif    (RTE_USB0_PPWR_ID == 3)
-  #define RTE_USB0_PPWR_PORT            2
-  #define RTE_USB0_PPWR_BIT             3
-  #define RTE_USB0_PPWR_FUNC            7
-#elif    (RTE_USB0_PPWR_ID == 4)
-  #define RTE_USB0_PPWR_PORT            6
-  #define RTE_USB0_PPWR_BIT             3
-  #define RTE_USB0_PPWR_FUNC            1
-#else
-  #error "Invalid RTE_USB0_PPWR Pin Configuration!"
-#endif
-#ifndef   RTE_USB0_PPWR_PIN_EN
-  #define RTE_USB0_PPWR_PIN_EN          1
-#endif
-//     <o> USB0_PWR_FAULT (Host) <0=>Not used <1=>P1_5 <2=>P2_1 <3=>P2_4 <4=>P6_6 <5=>P8_0
-//     <i> Port power fault signal indicating overcurrent condition.
-//     <i> This signal monitors over-current on the USB bus
-//        (external circuitry required to detect over-current condition).
-#define   RTE_USB0_PWR_FAULT_ID         0
-#if      (RTE_USB0_PWR_FAULT_ID == 0)
-  #define RTE_USB0_PWR_FAULT_PIN_EN     0
-#elif    (RTE_USB0_PWR_FAULT_ID == 1)
-  #define RTE_USB0_PWR_FAULT_PORT       1
-  #define RTE_USB0_PWR_FAULT_BIT        5
-  #define RTE_USB0_PWR_FAULT_FUNC       4
-#elif    (RTE_USB0_PWR_FAULT_ID == 2)
-  #define RTE_USB0_PWR_FAULT_PORT       2
-  #define RTE_USB0_PWR_FAULT_BIT        1
-  #define RTE_USB0_PWR_FAULT_FUNC       3
-#elif    (RTE_USB0_PWR_FAULT_ID == 3)
-  #define RTE_USB0_PWR_FAULT_PORT       2
-  #define RTE_USB0_PWR_FAULT_BIT        4
-  #define RTE_USB0_PWR_FAULT_FUNC       7
-#elif    (RTE_USB0_PWR_FAULT_ID == 4)
-  #define RTE_USB0_PWR_FAULT_PORT       6
-  #define RTE_USB0_PWR_FAULT_BIT        6
-  #define RTE_USB0_PWR_FAULT_FUNC       3
-#elif    (RTE_USB0_PWR_FAULT_ID == 5)
-  #define RTE_USB0_PWR_FAULT_PORT       8
-  #define RTE_USB0_PWR_FAULT_BIT        0
-  #define RTE_USB0_PWR_FAULT_FUNC       1
-#else
-  #error "Invalid RTE_USB0_PWR_FAULT Pin Configuration!"
-#endif
-#ifndef   RTE_USB0_PWR_FAULT_PIN_EN
-  #define RTE_USB0_PWR_FAULT_PIN_EN     1
-#endif
-//     <o> USB0_IND0 <0=>Not used <1=>P1_4 <2=>P2_5 <3=>P2_6 <4=>P6_8 <5=>P8_2
-//     <i> USB0 port indicator LED control output 0
-#define   RTE_USB0_IND0_ID              0
-#if      (RTE_USB0_IND0_ID == 0)
-  #define RTE_USB0_IND0_PIN_EN          0
-#elif    (RTE_USB0_IND0_ID == 1)
-  #define RTE_USB0_IND0_PORT            1
-  #define RTE_USB0_IND0_BIT             4
-  #define RTE_USB0_IND0_FUNC            4
-#elif    (RTE_USB0_IND0_ID == 2)
-  #define RTE_USB0_IND0_PORT            2
-  #define RTE_USB0_IND0_BIT             5
-  #define RTE_USB0_IND0_FUNC            7
-#elif    (RTE_USB0_IND0_ID == 3)
-  #define RTE_USB0_IND0_PORT            2
-  #define RTE_USB0_IND0_BIT             6
-  #define RTE_USB0_IND0_FUNC            3
-#elif    (RTE_USB0_IND0_ID == 4)
-  #define RTE_USB0_IND0_PORT            6
-  #define RTE_USB0_IND0_BIT             8
-  #define RTE_USB0_IND0_FUNC            3
-#elif    (RTE_USB0_IND0_ID == 5)
-  #define RTE_USB0_IND0_PORT            8
-  #define RTE_USB0_IND0_BIT             2
-  #define RTE_USB0_IND0_FUNC            1
-#else
-  #error "Invalid RTE_USB0_IND0 Pin Configuration!"
-#endif
-#ifndef   RTE_USB0_IND0_PIN_EN
-  #define RTE_USB0_IND0_PIN_EN          1
-#endif
-//     <o> USB0_IND1 <0=>Not used <1=>P1_3 <2=>P2_2 <3=>P6_7 <4=>P8_1
-//     <i> USB0 port indicator LED control output 1
-#define   RTE_USB0_IND1_ID              0
-#if      (RTE_USB0_IND1_ID == 0)
-  #define RTE_USB0_IND1_PIN_EN          0
-#elif    (RTE_USB0_IND1_ID == 1)
-  #define RTE_USB0_IND1_PORT            1
-  #define RTE_USB0_IND1_BIT             3
-  #define RTE_USB0_IND1_FUNC            4
-#elif    (RTE_USB0_IND1_ID == 2)
-  #define RTE_USB0_IND1_PORT            2
-  #define RTE_USB0_IND1_BIT             2
-  #define RTE_USB0_IND1_FUNC            3
-#elif    (RTE_USB0_IND1_ID == 3)
-  #define RTE_USB0_IND1_PORT            6
-  #define RTE_USB0_IND1_BIT             7
-  #define RTE_USB0_IND1_FUNC            3
-#elif    (RTE_USB0_IND1_ID == 4)
-  #define RTE_USB0_IND1_PORT            8
-  #define RTE_USB0_IND1_BIT             1
-  #define RTE_USB0_IND1_FUNC            1
-#else
-  #error "Invalid RTE_USB0_IND1 Pin Configuration!"
-#endif
-#ifndef   RTE_USB0_IND1_PIN_EN
-  #define RTE_USB0_IND1_PIN_EN          1
-#endif
-//   </h> Pin Configuration
-
-//   <h> Device [Driver_USBD0]
-//   <i> Configuration settings for Driver_USBD0 in component ::Drivers:USB Device
-//     <o.0> High-speed
-//     <i> Enable high-speed functionality
-#define   RTE_USB_USB0_HS_EN            1
-//   </h> Device [Driver_USBD0]
-// </e> USB0 Controller [Driver_USBD0 and Driver_USBH0]
-
-// <e> USB1 Controller [Driver_USBD1 and Driver_USBH1]
-// <i> Configuration settings for Driver_USBD1 in component ::Drivers:USB Device
-// <i> Configuration settings for Driver_USBH1 in component ::Drivers:USB Host
-#define   RTE_USB_USB1                  0
-
-//   <h> Pin Configuration
-//     <o> USB1_PPWR (Host) <0=>Not used <1=>P9_5
-//     <i> VBUS drive signal (towards external charge pump or power management unit).
-#define   RTE_USB1_PPWR_ID              1
-#if      (RTE_USB1_PPWR_ID == 0)
-  #define RTE_USB1_PPWR_PIN_EN          0
-#elif    (RTE_USB1_PPWR_ID == 1)
-  #define RTE_USB1_PPWR_PORT            9
-  #define RTE_USB1_PPWR_BIT             5
-  #define RTE_USB1_PPWR_FUNC            2
-#else
-  #error "Invalid RTE_USB1_PPWR Pin Configuration!"
-#endif
-#ifndef   RTE_USB1_PPWR_PIN_EN
-  #define RTE_USB1_PPWR_PIN_EN          1
-#endif
-//     <o> USB1_PWR_FAULT (Host) <0=>Not used <1=>P9_6
-//     <i> Port power fault signal indicating overcurrent condition.
-//     <i> This signal monitors over-current on the USB bus
-//        (external circuitry required to detect over-current condition).
-#define   RTE_USB1_PWR_FAULT_ID         1
-#if      (RTE_USB1_PWR_FAULT_ID == 0)
-  #define RTE_USB1_PWR_FAULT_PIN_EN     0
-#elif    (RTE_USB1_PWR_FAULT_ID == 1)
-  #define RTE_USB1_PWR_FAULT_PORT       9
-  #define RTE_USB1_PWR_FAULT_BIT        6
-  #define RTE_USB1_PWR_FAULT_FUNC       2
-#else
-  #error "Invalid RTE_USB1_PWR_FAULT Pin Configuration!"
-#endif
-#ifndef   RTE_USB1_PWR_FAULT_PIN_EN
-  #define RTE_USB1_PWR_FAULT_PIN_EN     1
-#endif
-//     <o> USB1_IND0 <0=>Not used <1=>P3_2 <2=>P9_4
-//     <i> USB1 port indicator LED control output 0
-#define   RTE_USB1_IND0_ID              1
-#if      (RTE_USB1_IND0_ID == 0)
-  #define RTE_USB1_IND0_PIN_EN          0
-#elif    (RTE_USB1_IND0_ID == 1)
-  #define RTE_USB1_IND0_PORT            3
-  #define RTE_USB1_IND0_BIT             2
-  #define RTE_USB1_IND0_FUNC            3
-#elif    (RTE_USB1_IND0_ID == 2)
-  #define RTE_USB1_IND0_PORT            9
-  #define RTE_USB1_IND0_BIT             4
-  #define RTE_USB1_IND0_FUNC            2
-#else
-  #error "Invalid RTE_USB1_IND0 Pin Configuration!"
-#endif
-#ifndef   RTE_USB1_IND0_PIN_EN
-  #define RTE_USB1_IND0_PIN_EN          1
-#endif
-//     <o> USB1_IND1 <0=>Not used <1=>P3_1 <2=>P9_3
-//     <i> USB1 port indicator LED control output 1
-#define   RTE_USB1_IND1_ID              1
-#if      (RTE_USB1_IND1_ID == 0)
-  #define RTE_USB1_IND1_PIN_EN          0
-#elif    (RTE_USB1_IND1_ID == 1)
-  #define RTE_USB1_IND1_PORT            3
-  #define RTE_USB1_IND1_BIT             1
-  #define RTE_USB1_IND1_FUNC            3
-#elif    (RTE_USB1_IND1_ID == 2)
-  #define RTE_USB1_IND1_PORT            9
-  #define RTE_USB1_IND1_BIT             3
-  #define RTE_USB1_IND1_FUNC            2
-#else
-  #error "Invalid RTE_USB1_IND1 Pin Configuration!"
-#endif
-#ifndef   RTE_USB1_IND1_PIN_EN
-  #define RTE_USB1_IND1_PIN_EN          1
-#endif
-
-//     <e> On-chip full-speed PHY
-#define   RTE_USB_USB1_FS_PHY_EN        1
-
-//       <o> USB1_VBUS (Device) <0=>Not used <1=>P2_5
-//       <i> Monitors the presence of USB1 bus power.
-#define   RTE_USB1_VBUS_ID              1
-#if      (RTE_USB1_VBUS_ID == 0)
-  #define RTE_USB1_VBUS_PIN_EN          0
-#elif    (RTE_USB1_VBUS_ID == 1)
-  #define RTE_USB1_VBUS_PORT            2
-  #define RTE_USB1_VBUS_BIT             5
-  #define RTE_USB1_VBUS_FUNC            2
-#else
-  #error "Invalid RTE_USB1_VBUS Pin Configuration!"
-#endif
-#ifndef   RTE_USB1_VBUS_PIN_EN
-  #define RTE_USB1_VBUS_PIN_EN          1
-#endif
-//     </e> On-chip full-speed PHY
-
-//     <e> External high-speed ULPI PHY (UTMI+ Low Pin Interface)
-#define   RTE_USB_USB1_HS_PHY_EN        0
-
-//       <o> USB1_ULPI_CLK <0=>P8_8 <1=>PC_0
-//       <i> USB1 ULPI link CLK signal.
-//       <i> 60 MHz clock generated by the PHY.
-#define   RTE_USB1_ULPI_CLK_ID          0
-#if      (RTE_USB1_ULPI_CLK_ID == 0)
-  #define RTE_USB1_ULPI_CLK_PORT        8
-  #define RTE_USB1_ULPI_CLK_BIT         8
-  #define RTE_USB1_ULPI_CLK_FUNC        1
-#elif    (RTE_USB1_ULPI_CLK_ID == 1)
-  #define RTE_USB1_ULPI_CLK_PORT        0xC
-  #define RTE_USB1_ULPI_CLK_BIT         0
-  #define RTE_USB1_ULPI_CLK_FUNC        1
-#else
-  #error "Invalid RTE_USB1_ULPI_CLK Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_DIR <0=>PB_1 <1=>PC_11
-//       <i> USB1 ULPI link DIR signal.
-//       <i> Controls the ULPI data line direction.
-#define   RTE_USB1_ULPI_DIR_ID          0
-#if      (RTE_USB1_ULPI_DIR_ID == 0)
-  #define RTE_USB1_ULPI_DIR_PORT        0xB
-  #define RTE_USB1_ULPI_DIR_BIT         1
-  #define RTE_USB1_ULPI_DIR_FUNC        1
-#elif    (RTE_USB1_ULPI_DIR_ID == 1)
-  #define RTE_USB1_ULPI_DIR_PORT        0xC
-  #define RTE_USB1_ULPI_DIR_BIT         11
-  #define RTE_USB1_ULPI_DIR_FUNC        1
-#else
-  #error "Invalid RTE_USB1_ULPI_DIR Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_STP <0=>P8_7 <1=>PC_10
-//       <i> USB1 ULPI link STP signal.
-//       <i> Asserted to end or interrupt transfers to the PHY.
-#define   RTE_USB1_ULPI_STP_ID          0
-#if      (RTE_USB1_ULPI_STP_ID == 0)
-  #define RTE_USB1_ULPI_STP_PORT        8
-  #define RTE_USB1_ULPI_STP_BIT         7
-  #define RTE_USB1_ULPI_STP_FUNC        1
-#elif    (RTE_USB1_ULPI_STP_ID == 1)
-  #define RTE_USB1_ULPI_STP_PORT        0xC
-  #define RTE_USB1_ULPI_STP_BIT         10
-  #define RTE_USB1_ULPI_STP_FUNC        1
-#else
-  #error "Invalid RTE_USB1_ULPI_STP Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_NXT <0=>P8_6 <1=>PC_9
-//       <i> USB1 ULPI link NXT signal.
-//       <i> Data flow control signal from the PHY.
-#define   RTE_USB1_ULPI_NXT_ID          0
-#if      (RTE_USB1_ULPI_NXT_ID == 0)
-  #define RTE_USB1_ULPI_NXT_PORT        8
-  #define RTE_USB1_ULPI_NXT_BIT         6
-  #define RTE_USB1_ULPI_NXT_FUNC        1
-#elif    (RTE_USB1_ULPI_NXT_ID == 1)
-  #define RTE_USB1_ULPI_NXT_PORT        0xC
-  #define RTE_USB1_ULPI_NXT_BIT         9
-  #define RTE_USB1_ULPI_NXT_FUNC        1
-#else
-  #error "Invalid RTE_USB1_ULPI_NXT Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D0 <0=>P8_5 <1=>PC_8 <2=>PD_11
-//       <i> USB1 ULPI link bidirectional data line 0.
-#define   RTE_USB1_ULPI_D0_ID           0
-#if      (RTE_USB1_ULPI_D0_ID == 0)
-  #define RTE_USB1_ULPI_D0_PORT         8
-  #define RTE_USB1_ULPI_D0_BIT          5
-  #define RTE_USB1_ULPI_D0_FUNC         1
-#elif    (RTE_USB1_ULPI_D0_ID == 1)
-  #define RTE_USB1_ULPI_D0_PORT         0xC
-  #define RTE_USB1_ULPI_D0_BIT          8
-  #define RTE_USB1_ULPI_D0_FUNC         1
-#elif    (RTE_USB1_ULPI_D0_ID == 2)
-  #define RTE_USB1_ULPI_D0_PORT         0xD
-  #define RTE_USB1_ULPI_D0_BIT          11
-  #define RTE_USB1_ULPI_D0_FUNC         5
-#else
-  #error "Invalid RTE_USB1_ULPI_D0 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D1 <0=>P8_4 <1=>PC_7
-//       <i> USB1 ULPI link bidirectional data line 1.
-#define   RTE_USB1_ULPI_D1_ID           0
-#if      (RTE_USB1_ULPI_D1_ID == 0)
-  #define RTE_USB1_ULPI_D1_PORT         8
-  #define RTE_USB1_ULPI_D1_BIT          4
-  #define RTE_USB1_ULPI_D1_FUNC         1
-#elif    (RTE_USB1_ULPI_D1_ID == 1)
-  #define RTE_USB1_ULPI_D1_PORT         0xC
-  #define RTE_USB1_ULPI_D1_BIT          7
-  #define RTE_USB1_ULPI_D1_FUNC         1
-#else
-  #error "Invalid RTE_USB1_ULPI_D1 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D2 <0=>P8_3 <1=>PC_6
-//       <i> USB1 ULPI link bidirectional data line 2.
-#define   RTE_USB1_ULPI_D2_ID           0
-#if      (RTE_USB1_ULPI_D2_ID == 0)
-  #define RTE_USB1_ULPI_D2_PORT         8
-  #define RTE_USB1_ULPI_D2_BIT          3
-  #define RTE_USB1_ULPI_D2_FUNC         1
-#elif    (RTE_USB1_ULPI_D2_ID == 1)
-  #define RTE_USB1_ULPI_D2_PORT         0xC
-  #define RTE_USB1_ULPI_D2_BIT          6
-  #define RTE_USB1_ULPI_D2_FUNC         1
-#else
-  #error "Invalid RTE_USB1_ULPI_D2 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D3 <0=>PB_6 <1=>PC_5
-//       <i> USB1 ULPI link bidirectional data line 3.
-#define   RTE_USB1_ULPI_D3_ID           0
-#if      (RTE_USB1_ULPI_D3_ID == 0)
-  #define RTE_USB1_ULPI_D3_PORT         0xB
-  #define RTE_USB1_ULPI_D3_BIT          6
-  #define RTE_USB1_ULPI_D3_FUNC         1
-#elif    (RTE_USB1_ULPI_D3_ID == 1)
-  #define RTE_USB1_ULPI_D3_PORT         0xC
-  #define RTE_USB1_ULPI_D3_BIT          5
-  #define RTE_USB1_ULPI_D3_FUNC         1
-#else
-  #error "Invalid RTE_USB1_ULPI_D3 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D4 <0=>PB_5 <1=>PC_4
-//       <i> USB1 ULPI link bidirectional data line 4.
-#define   RTE_USB1_ULPI_D4_ID           0
-#if      (RTE_USB1_ULPI_D4_ID == 0)
-  #define RTE_USB1_ULPI_D4_PORT         0xB
-  #define RTE_USB1_ULPI_D4_BIT          5
-  #define RTE_USB1_ULPI_D4_FUNC         1
-#elif    (RTE_USB1_ULPI_D4_ID == 1)
-  #define RTE_USB1_ULPI_D4_PORT         0xC
-  #define RTE_USB1_ULPI_D4_BIT          4
-  #define RTE_USB1_ULPI_D4_FUNC         1
-#else
-  #error "Invalid RTE_USB1_ULPI_D4 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D5 <0=>PB_4 <1=>PC_3
-//       <i> USB1 ULPI link bidirectional data line 5.
-#define   RTE_USB1_ULPI_D5_ID           0
-#if      (RTE_USB1_ULPI_D5_ID == 0)
-  #define RTE_USB1_ULPI_D5_PORT         0xB
-  #define RTE_USB1_ULPI_D5_BIT          4
-  #define RTE_USB1_ULPI_D5_FUNC         1
-#elif    (RTE_USB1_ULPI_D5_ID == 1)
-  #define RTE_USB1_ULPI_D5_PORT         0xC
-  #define RTE_USB1_ULPI_D5_BIT          3
-  #define RTE_USB1_ULPI_D5_FUNC         0
-#else
-  #error "Invalid RTE_USB1_ULPI_D5 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D6 <0=>PB_3 <1=>PC_2
-//       <i> USB1 ULPI link bidirectional data line 6.
-#define   RTE_USB1_ULPI_D6_ID           0
-#if      (RTE_USB1_ULPI_D6_ID == 0)
-  #define RTE_USB1_ULPI_D6_PORT         0xB
-  #define RTE_USB1_ULPI_D6_BIT          3
-  #define RTE_USB1_ULPI_D6_FUNC         1
-#elif    (RTE_USB1_ULPI_D6_ID == 1)
-  #define RTE_USB1_ULPI_D6_PORT         0xC
-  #define RTE_USB1_ULPI_D6_BIT          2
-  #define RTE_USB1_ULPI_D6_FUNC         0
-#else
-  #error "Invalid RTE_USB1_ULPI_D6 Pin Configuration!"
-#endif
-//       <o> USB1_ULPI_D7 <0=>PB_2 <1=>PC_1
-//       <i> USB1 ULPI link bidirectional data line 7.
-#define   RTE_USB1_ULPI_D7_ID           0
-#if      (RTE_USB1_ULPI_D7_ID == 0)
-  #define RTE_USB1_ULPI_D7_PORT         0xB
-  #define RTE_USB1_ULPI_D7_BIT          2
-  #define RTE_USB1_ULPI_D7_FUNC         1
-#elif    (RTE_USB1_ULPI_D7_ID == 1)
-  #define RTE_USB1_ULPI_D7_PORT         0xC
-  #define RTE_USB1_ULPI_D7_BIT          1
-  #define RTE_USB1_ULPI_D7_FUNC         0
-#else
-  #error "Invalid RTE_USB1_ULPI_D7 Pin Configuration!"
-#endif
-//     </e> External high-speed ULPI PHY (UTMI+ Low Pin Interface)
-//   </h> Pin Configuration
-// </e> USB1 Controller [Driver_USBD1 and Driver_USBH1]
-
-// <e> ENET (Ethernet Interface) [Driver_ETH_MAC0]
-// <i> Configuration settings for Driver_ETH_MAC0 in component ::Drivers:Ethernet MAC
-#define   RTE_ENET                      0
-
-//   <e> MII (Media Independent Interface)
-#define   RTE_ENET_MII                  0
-
-//     <o> ENET_TXD0 Pin <0=>P1_18
-#define   RTE_ENET_MII_TXD0_PORT_ID     0
-#if      (RTE_ENET_MII_TXD0_PORT_ID == 0)
-  #define RTE_ENET_MII_TXD0_PORT        1
-  #define RTE_ENET_MII_TXD0_PIN         18
-  #define RTE_ENET_MII_TXD0_FUNC        3
-#else
-  #error "Invalid ENET_TXD0 Pin Configuration!"
-#endif
-//     <o> ENET_TXD1 Pin <0=>P1_20
-#define   RTE_ENET_MII_TXD1_PORT_ID     0
-#if      (RTE_ENET_MII_TXD1_PORT_ID == 0)
-  #define RTE_ENET_MII_TXD1_PORT        1
-  #define RTE_ENET_MII_TXD1_PIN         20
-  #define RTE_ENET_MII_TXD1_FUNC        3
-#else
-  #error "Invalid ENET_TXD1 Pin Configuration!"
-#endif
-//     <o> ENET_TXD2 Pin <0=>P9_4 <1=>PC_2
-#define   RTE_ENET_MII_TXD2_PORT_ID     0
-#if      (RTE_ENET_MII_TXD2_PORT_ID == 0)
-  #define RTE_ENET_MII_TXD2_PORT        9
-  #define RTE_ENET_MII_TXD2_PIN         4
-  #define RTE_ENET_MII_TXD2_FUNC        5
-#elif    (RTE_ENET_MII_TXD2_PORT_ID == 1)
-  #define RTE_ENET_MII_TXD2_PORT        0xC
-  #define RTE_ENET_MII_TXD2_PIN         2
-  #define RTE_ENET_MII_TXD2_FUNC        3
-#else
-  #error "Invalid ENET_TXD2 Pin Configuration!"
-#endif
-//     <o> ENET_TXD3 Pin <0=>P9_5 <1=>PC_3
-#define   RTE_ENET_MII_TXD3_PORT_ID     0
-#if      (RTE_ENET_MII_TXD3_PORT_ID == 0)
-  #define RTE_ENET_MII_TXD3_PORT        9
-  #define RTE_ENET_MII_TXD3_PIN         5
-  #define RTE_ENET_MII_TXD3_FUNC        5
-#elif    (RTE_ENET_MII_TXD3_PORT_ID == 1)
-  #define RTE_ENET_MII_TXD3_PORT        0xC
-  #define RTE_ENET_MII_TXD3_PIN         3
-  #define RTE_ENET_MII_TXD3_FUNC        3
-#else
-  #error "Invalid ENET_TXD3 Pin Configuration!"
-#endif
-//     <o> ENET_TX_EN Pin <0=>P0_1 <1=>PC_4
-#define   RTE_ENET_MII_TX_EN_PORT_ID    0
-#if      (RTE_ENET_MII_TX_EN_PORT_ID == 0)
-  #define RTE_ENET_MII_TX_EN_PORT       0
-  #define RTE_ENET_MII_TX_EN_PIN        1
-  #define RTE_ENET_MII_TX_EN_FUNC       6
-#elif    (RTE_ENET_MII_TX_EN_PORT_ID == 1)
-  #define RTE_ENET_MII_TX_EN_PORT       0xC
-  #define RTE_ENET_MII_TX_EN_PIN        4
-  #define RTE_ENET_MII_TX_EN_FUNC       3
-#else
-  #error "Invalid ENET_TX_EN Pin Configuration!"
-#endif
-//     <o> ENET_TX_CLK Pin <0=>P1_19 <1=>CLK0
-#define   RTE_ENET_MII_TX_CLK_PORT_ID   0
-#if      (RTE_ENET_MII_TX_CLK_PORT_ID == 0)
-  #define RTE_ENET_MII_TX_CLK_PORT      1
-  #define RTE_ENET_MII_TX_CLK_PIN       19
-  #define RTE_ENET_MII_TX_CLK_FUNC      0
-#elif    (RTE_ENET_MII_TX_CLK_PORT_ID == 1)
-  #define RTE_ENET_MII_TX_CLK_PORT      0x10
-  #define RTE_ENET_MII_TX_CLK_PIN       0
-  #define RTE_ENET_MII_TX_CLK_FUNC      7
-#else
-  #error "Invalid ENET_TX_CLK Pin Configuration!"
-#endif
-//     <o> ENET_TX_ER Pin <0=>Not used <1=>PC_5 <2=>PC_14
-//     <i> Optional signal, rarely used
-#define   RTE_ENET_MII_TX_ER_PORT_ID    0
-#if      (RTE_ENET_MII_TX_ER_PORT_ID == 0)
-  #define RTE_ENET_MII_TX_ER_PIN_EN     0
-#elif    (RTE_ENET_MII_TX_ER_PORT_ID == 1)
-  #define RTE_ENET_MII_TX_ER_PORT       0xC
-  #define RTE_ENET_MII_TX_ER_PIN        5
-  #define RTE_ENET_MII_TX_ER_FUNC       3
-#elif    (RTE_ENET_MII_TX_ER_PORT_ID == 2)
-  #define RTE_ENET_MII_TX_ER_PORT       0xC
-  #define RTE_ENET_MII_TX_ER_PIN        14
-  #define RTE_ENET_MII_TX_ER_FUNC       6
-#else
-  #error "Invalid ENET_TX_ER Pin Configuration!"
-#endif
-#ifndef   RTE_ENET_MII_TX_ER_PIN_EN
-  #define RTE_ENET_MII_TX_ER_PIN_EN     1
-#endif
-//     <o> ENET_RXD0 Pin <0=>P1_15
-#define   RTE_ENET_MII_RXD0_PORT_ID     0
-#if      (RTE_ENET_MII_RXD0_PORT_ID == 0)
-  #define RTE_ENET_MII_RXD0_PORT        1
-  #define RTE_ENET_MII_RXD0_PIN         15
-  #define RTE_ENET_MII_RXD0_FUNC        3
-#else
-  #error "Invalid ENET_RXD0 Pin Configuration!"
-#endif
-//     <o> ENET_RXD1 Pin <0=>P0_0
-#define   RTE_ENET_MII_RXD1_PORT_ID     0
-#if      (RTE_ENET_MII_RXD1_PORT_ID == 0)
-  #define RTE_ENET_MII_RXD1_PORT        0
-  #define RTE_ENET_MII_RXD1_PIN         0
-  #define RTE_ENET_MII_RXD1_FUNC        2
-#else
-  #error "Invalid ENET_RXD1 Pin Configuration!"
-#endif
-//     <o> ENET_RXD2 Pin <0=>P9_3 <1=>PC_6
-#define   RTE_ENET_MII_RXD2_PORT_ID     0
-#if      (RTE_ENET_MII_RXD2_PORT_ID == 0)
-  #define RTE_ENET_MII_RXD2_PORT        9
-  #define RTE_ENET_MII_RXD2_PIN         3
-  #define RTE_ENET_MII_RXD2_FUNC        5
-#elif    (RTE_ENET_MII_RXD2_PORT_ID == 1)
-  #define RTE_ENET_MII_RXD2_PORT        0xC
-  #define RTE_ENET_MII_RXD2_PIN         6
-  #define RTE_ENET_MII_RXD2_FUNC        3
-#else
-  #error "Invalid ENET_RXD2 Pin Configuration!"
-#endif
-//     <o> ENET_RXD3 Pin <0=>P9_2 <1=>PC_7
-#define   RTE_ENET_MII_RXD3_PORT_ID     0
-#if      (RTE_ENET_MII_RXD3_PORT_ID == 0)
-  #define RTE_ENET_MII_RXD3_PORT        9
-  #define RTE_ENET_MII_RXD3_PIN         2
-  #define RTE_ENET_MII_RXD3_FUNC        5
-#elif    (RTE_ENET_MII_RXD3_PORT_ID == 1)
-  #define RTE_ENET_MII_RXD3_PORT        0xC
-  #define RTE_ENET_MII_RXD3_PIN         7
-  #define RTE_ENET_MII_RXD3_FUNC        3
-#else
-  #error "Invalid ENET_RXD3 Pin Configuration!"
-#endif
-//     <o> ENET_RX_DV Pin <0=>P1_16 <1=>PC_8
-#define   RTE_ENET_MII_RX_DV_PORT_ID    0
-#if      (RTE_ENET_MII_RX_DV_PORT_ID == 0)
-  #define RTE_ENET_MII_RX_DV_PORT       1
-  #define RTE_ENET_MII_RX_DV_PIN        16
-  #define RTE_ENET_MII_RX_DV_FUNC       7
-#elif    (RTE_ENET_MII_RX_DV_PORT_ID == 1)
-  #define RTE_ENET_MII_RX_DV_PORT       0xC
-  #define RTE_ENET_MII_RX_DV_PIN        8
-  #define RTE_ENET_MII_RX_DV_FUNC       3
-#else
-  #error "Invalid ENET_RX_DV Pin Configuration!"
-#endif
-//     <o> ENET_RX_CLK Pin <0=>PC_0
-#define   RTE_ENET_MII_RX_CLK_PORT_ID   0
-#if      (RTE_ENET_MII_RX_CLK_PORT_ID == 0)
-  #define RTE_ENET_MII_RX_CLK_PORT      0xC
-  #define RTE_ENET_MII_RX_CLK_PIN       0
-  #define RTE_ENET_MII_RX_CLK_FUNC      3
-#else
-  #error "Invalid ENET_RX_CLK Pin Configuration!"
-#endif
-//     <o> ENET_RX_ER Pin <0=>P9_1 <1=>PC_9
-#define   RTE_ENET_MII_RX_ER_PORT_ID    0
-#if      (RTE_ENET_MII_RX_ER_PORT_ID == 0)
-  #define RTE_ENET_MII_RX_ER_PORT       9
-  #define RTE_ENET_MII_RX_ER_PIN        1
-  #define RTE_ENET_MII_RX_ER_FUNC       5
-#elif    (RTE_ENET_MII_RX_ER_PORT_ID == 1)
-  #define RTE_ENET_MII_RX_ER_PORT       0xC
-  #define RTE_ENET_MII_RX_ER_PIN        9
-  #define RTE_ENET_MII_RX_ER_FUNC       3
-#else
-  #error "Invalid ENET_RX_ER Pin Configuration!"
-#endif
-//     <o> ENET_COL Pin <0=>P0_1 <1=>P4_1 <2=>P9_6
-#define   RTE_ENET_MII_COL_PORT_ID      0
-#if      (RTE_ENET_MII_COL_PORT_ID == 0)
-  #define RTE_ENET_MII_COL_PORT         0
-  #define RTE_ENET_MII_COL_PIN          1
-  #define RTE_ENET_MII_COL_FUNC         2
-#elif    (RTE_ENET_MII_COL_PORT_ID == 1)
-  #define RTE_ENET_MII_COL_PORT         4
-  #define RTE_ENET_MII_COL_PIN          1
-  #define RTE_ENET_MII_COL_FUNC         7
-#elif    (RTE_ENET_MII_COL_PORT_ID == 2)
-  #define RTE_ENET_MII_COL_PORT         9
-  #define RTE_ENET_MII_COL_PIN          6
-  #define RTE_ENET_MII_COL_FUNC         5
-#else
-  #error "Invalid ENET_COL Pin Configuration!"
-#endif
-//     <o> ENET_CRS Pin <0=>P1_16 <1=>P9_0
-#define   RTE_ENET_MII_CRS_PORT_ID      0
-#if      (RTE_ENET_MII_CRS_PORT_ID == 0)
-  #define RTE_ENET_MII_CRS_PORT         1
-  #define RTE_ENET_MII_CRS_PIN          16
-  #define RTE_ENET_MII_CRS_FUNC         3
-#elif    (RTE_ENET_MII_CRS_PORT_ID == 1)
-  #define RTE_ENET_MII_CRS_PORT         9
-  #define RTE_ENET_MII_CRS_PIN          0
-  #define RTE_ENET_MII_CRS_FUNC         5
-#else
-  #error "Invalid ENET_CRS Pin Configuration!"
-#endif
-//   </e> MII (Media Independent Interface)
-
-//   <e> RMII (Reduced Media Independent Interface)
-#define   RTE_ENET_RMII                 0
-
-//     <o> ENET_TXD0 Pin <0=>P1_18
-#define   RTE_ENET_RMII_TXD0_PORT_ID    0
-#if      (RTE_ENET_RMII_TXD0_PORT_ID == 0)
-  #define RTE_ENET_RMII_TXD0_PORT       1
-  #define RTE_ENET_RMII_TXD0_PIN        18
-  #define RTE_ENET_RMII_TXD0_FUNC       3
-#else
-  #error "Invalid ENET_TXD0 Pin Configuration!"
-#endif
-//     <o> ENET_TXD1 Pin <0=>P1_20
-#define   RTE_ENET_RMII_TXD1_PORT_ID    0
-#if      (RTE_ENET_RMII_TXD1_PORT_ID == 0)
-  #define RTE_ENET_RMII_TXD1_PORT       1
-  #define RTE_ENET_RMII_TXD1_PIN        20
-  #define RTE_ENET_RMII_TXD1_FUNC       3
-#else
-  #error "Invalid ENET_TXD1 Pin Configuration!"
-#endif
-//     <o> ENET_TX_EN Pin <0=>P0_1 <1=>PC_4
-#define   RTE_ENET_RMII_TX_EN_PORT_ID   0
-#if      (RTE_ENET_RMII_TX_EN_PORT_ID == 0)
-  #define RTE_ENET_RMII_TX_EN_PORT      0
-  #define RTE_ENET_RMII_TX_EN_PIN       1
-  #define RTE_ENET_RMII_TX_EN_FUNC      6
-#elif    (RTE_ENET_RMII_TX_EN_PORT_ID == 1)
-  #define RTE_ENET_RMII_TX_EN_PORT      0xC
-  #define RTE_ENET_RMII_TX_EN_PIN       4
-  #define RTE_ENET_RMII_TX_EN_FUNC      3
-#else
-  #error "Invalid ENET_TX_EN Pin Configuration!"
-#endif
-//     <o> ENET_REF_CLK Pin <0=>P1_19 <1=>CLK0
-#define   RTE_ENET_RMII_REF_CLK_PORT_ID 0
-#if      (RTE_ENET_RMII_REF_CLK_PORT_ID == 0)
-  #define RTE_ENET_RMII_REF_CLK_PORT    1
-  #define RTE_ENET_RMII_REF_CLK_PIN     19
-  #define RTE_ENET_RMII_REF_CLK_FUNC    0
-#elif    (RTE_ENET_RMII_REF_CLK_PORT_ID == 1)
-  #define RTE_ENET_RMII_REF_CLK_PORT    0x10
-  #define RTE_ENET_RMII_REF_CLK_PIN     0
-  #define RTE_ENET_RMII_REF_CLK_FUNC    7
-#else
-  #error "Invalid ENET_REF_CLK Pin Configuration!"
-#endif
-//     <o> ENET_RXD0 Pin <0=>P1_15
-#define   RTE_ENET_RMII_RXD0_PORT_ID    0
-#if      (RTE_ENET_RMII_RXD0_PORT_ID == 0)
-  #define RTE_ENET_RMII_RXD0_PORT       1
-  #define RTE_ENET_RMII_RXD0_PIN        15
-  #define RTE_ENET_RMII_RXD0_FUNC       3
-#else
-  #error "Invalid ENET_RXD0 Pin Configuration!"
-#endif
-//     <o> ENET_RXD1 Pin <0=>P0_0
-#define   RTE_ENET_RMII_RXD1_PORT_ID    0
-#if      (RTE_ENET_RMII_RXD1_PORT_ID == 0)
-  #define RTE_ENET_RMII_RXD1_PORT       0
-  #define RTE_ENET_RMII_RXD1_PIN        0
-  #define RTE_ENET_RMII_RXD1_FUNC       2
-#else
-  #error "Invalid ENET_RXD1 Pin Configuration!"
-#endif
-//     <o> ENET_RX_DV Pin <0=>P1_16 <1=>PC_8
-#define   RTE_ENET_RMII_RX_DV_PORT_ID   0
-#if      (RTE_ENET_RMII_RX_DV_PORT_ID == 0)
-  #define RTE_ENET_RMII_RX_DV_PORT      1
-  #define RTE_ENET_RMII_RX_DV_PIN       16
-  #define RTE_ENET_RMII_RX_DV_FUNC      7
-#elif    (RTE_ENET_RMII_RX_DV_PORT_ID == 1)
-  #define RTE_ENET_RMII_RX_DV_PORT      0xC
-  #define RTE_ENET_RMII_RX_DV_PIN       8
-  #define RTE_ENET_RMII_RX_DV_FUNC      3
-#else
-  #error "Invalid ENET_RX_DV Pin Configuration!"
-#endif
-//   </e> RMII (Reduced Media Independent Interface)
-
-//   <h> MIIM (Management Data Interface)
-//     <o> ENET_MDIO Pin <0=>P1_17
-#define   RTE_ENET_MDI_MDIO_PORT_ID     0
-#if      (RTE_ENET_MDI_MDIO_PORT_ID == 0)
-  #define RTE_ENET_MDI_MDIO_PORT        1
-  #define RTE_ENET_MDI_MDIO_PIN         17
-  #define RTE_ENET_MDI_MDIO_FUNC        3
-#else
-  #error "Invalid ENET_MDIO Pin Configuration!"
-#endif
-//     <o> ENET_MDC Pin <0=>P2_0 <1=>P7_7 <2=>PC_1
-#define   RTE_ENET_MDI_MDC_PORT_ID      2
-#if      (RTE_ENET_MDI_MDC_PORT_ID == 0)
-  #define RTE_ENET_MDI_MDC_PORT         2
-  #define RTE_ENET_MDI_MDC_PIN          0
-  #define RTE_ENET_MDI_MDC_FUNC         7
-#elif    (RTE_ENET_MDI_MDC_PORT_ID == 1)
-  #define RTE_ENET_MDI_MDC_PORT         7
-  #define RTE_ENET_MDI_MDC_PIN          7
-  #define RTE_ENET_MDI_MDC_FUNC         6
-#elif    (RTE_ENET_MDI_MDC_PORT_ID == 2)
-  #define RTE_ENET_MDI_MDC_PORT         0xC
-  #define RTE_ENET_MDI_MDC_PIN          1
-  #define RTE_ENET_MDI_MDC_FUNC         3
-#else
-  #error "Invalid ENET_MDC Pin Configuration!"
-#endif
-//   </h> MIIM (Management Data Interface)
-// </e> ENET (Ethernet Interface) [Driver_ETH_MAC0]
-
-// <e> SD/MMC Interface [Driver_MCI0]
-// <i> Configuration settings for Driver_MCI0 in component ::Drivers:MCI
-#define RTE_SDMMC                       0
-
-//   <h> SD/MMC Peripheral Bus
-//     <o> SD_CLK Pin <0=>PC_0 <1=>CLK0 <2=>CLK2
-#define   RTE_SD_CLK_PORT_ID            0
-#if      (RTE_SD_CLK_PORT_ID == 0)
-  #define RTE_SD_CLK_PORT               0xC
-  #define RTE_SD_CLK_PIN                0
-  #define RTE_SD_CLK_FUNC               7
-#elif    (RTE_SD_CLK_PORT_ID == 1)
-  #define RTE_SD_CLK_PORT               0x10
-  #define RTE_SD_CLK_PIN                0
-  #define RTE_SD_CLK_FUNC               4
-#elif    (RTE_SD_CLK_PORT_ID == 2)
-  #define RTE_SD_CLK_PORT               0x10
-  #define RTE_SD_CLK_PIN                2
-  #define RTE_SD_CLK_FUNC               4
-#else
-  #error "Invalid SD_CLK Pin Configuration!"
-#endif
-//     <o> SD_CMD Pin <0=>P1_6 <1=>PC_10
-#define   RTE_SD_CMD_PORT_ID            0
-#if      (RTE_SD_CMD_PORT_ID == 0)
-  #define RTE_SD_CMD_PORT               1
-  #define RTE_SD_CMD_PIN                6
-  #define RTE_SD_CMD_FUNC               7
-#elif    (RTE_SD_CMD_PORT_ID == 1)
-  #define RTE_SD_CMD_PORT               0xC
-  #define RTE_SD_CMD_PIN                10
-  #define RTE_SD_CMD_FUNC               7
-#else
-  #error "Invalid SD_CMD Pin Configuration!"
-#endif
-//     <o> SD_DAT0 Pin <0=>P1_9 <1=>PC_4
-#define   RTE_SD_DAT0_PORT_ID           0
-#if      (RTE_SD_DAT0_PORT_ID == 0)
-  #define RTE_SD_DAT0_PORT              1
-  #define RTE_SD_DAT0_PIN               9
-  #define RTE_SD_DAT0_FUNC              7
-#elif    (RTE_SD_DAT0_PORT_ID == 1)
-  #define RTE_SD_DAT0_PORT              0xC
-  #define RTE_SD_DAT0_PIN               4
-  #define RTE_SD_DAT0_FUNC              7
-#else
-  #error "Invalid SD_DAT0 Pin Configuration!"
-#endif
-//     <e> SD_DAT[1 .. 3]
-#define   RTE_SDMMC_BUS_WIDTH_4         0
-//       <o> SD_DAT1 Pin <0=>P1_10 <1=>PC_5
-#define   RTE_SD_DAT1_PORT_ID           0
-#if      (RTE_SD_DAT1_PORT_ID == 0)
-  #define RTE_SD_DAT1_PORT              1
-  #define RTE_SD_DAT1_PIN               10
-  #define RTE_SD_DAT1_FUNC              7
-#elif    (RTE_SD_DAT1_PORT_ID == 1)
-  #define RTE_SD_DAT1_PORT              0xC
-  #define RTE_SD_DAT1_PIN               5
-  #define RTE_SD_DAT1_FUNC              7
-#else
-  #error "Invalid SD_DAT1 Pin Configuration!"
-#endif
-//       <o> SD_DAT2 Pin <0=>P1_11 <1=>PC_6
-#define   RTE_SD_DAT2_PORT_ID           0
-#if      (RTE_SD_DAT2_PORT_ID == 0)
-  #define RTE_SD_DAT2_PORT              1
-  #define RTE_SD_DAT2_PIN               11
-  #define RTE_SD_DAT2_FUNC              7
-#elif    (RTE_SD_DAT2_PORT_ID == 1)
-  #define RTE_SD_DAT2_PORT              0xC
-  #define RTE_SD_DAT2_PIN               6
-  #define RTE_SD_DAT2_FUNC              7
-#else
-  #error "Invalid SD_DAT2 Pin Configuration!"
-#endif
-//       <o> SD_DAT3 Pin <0=>P1_12 <1=>PC_7
-#define   RTE_SD_DAT3_PORT_ID           0
-#if      (RTE_SD_DAT3_PORT_ID == 0)
-  #define RTE_SD_DAT3_PORT              1
-  #define RTE_SD_DAT3_PIN               12
-  #define RTE_SD_DAT3_FUNC              7
-#elif    (RTE_SD_DAT3_PORT_ID == 1)
-  #define RTE_SD_DAT3_PORT              0xC
-  #define RTE_SD_DAT3_PIN               7
-  #define RTE_SD_DAT3_FUNC              7
-#else
-  #error "Invalid SD_DAT3 Pin Configuration!"
-#endif
-//     </e> SD_DAT[1 .. 3]
-//     <e> SD_DAT[4 .. 7]
-#define   RTE_SDMMC_BUS_WIDTH_8         0
-//       <o> SD_DAT4 Pin <0=>PC_11
-#define   RTE_SD_DAT4_PORT_ID           0
-#if      (RTE_SD_DAT4_PORT_ID == 0)
-  #define RTE_SD_DAT4_PORT              0xC
-  #define RTE_SD_DAT4_PIN               11
-  #define RTE_SD_DAT4_FUNC              7
-#else
-  #error "Invalid SD_DAT4 Pin Configuration!"
-#endif
-//       <o> SD_DAT5 Pin <0=>PC_12
-#define   RTE_SD_DAT5_PORT_ID           0
-#if      (RTE_SD_DAT5_PORT_ID == 0)
-  #define RTE_SD_DAT5_PORT              0xC
-  #define RTE_SD_DAT5_PIN               12
-  #define RTE_SD_DAT5_FUNC              7
-#else
-  #error "Invalid SD_DAT5 Pin Configuration!"
-#endif
-//       <o> SD_DAT6 Pin <0=>PC_13
-#define   RTE_SD_DAT6_PORT_ID           0
-#if      (RTE_SD_DAT6_PORT_ID == 0)
-  #define RTE_SD_DAT6_PORT              0xC
-  #define RTE_SD_DAT6_PIN               13
-  #define RTE_SD_DAT6_FUNC              7
-#else
-  #error "Invalid SD_DAT6 Pin Configuration!"
-#endif
-//       <o> SD_DAT7 Pin <0=>PC_14
-#define   RTE_SD_DAT7_PORT_ID           0
-#if      (RTE_SD_DAT7_PORT_ID == 0)
-  #define RTE_SD_DAT7_PORT              0xC
-  #define RTE_SD_DAT7_PIN               14
-  #define RTE_SD_DAT7_FUNC              7
-#else
-  #error "Invalid SD_DAT7 Pin Configuration!"
-#endif
-//     </e> SD_DAT[4 .. 7]
-//   </h> SD/MMC Peripheral Bus
-
-//   <o> SD_CD (Card Detect) Pin <0=>Not used <1=>P1_13 <2=>PC_8
-//   <i> Configure Pin if exists
-#define   RTE_SD_CD_PORT_ID             0
-#if      (RTE_SD_CD_PORT_ID == 0)
-  #define RTE_SD_CD_PIN_EN              0
-#elif    (RTE_SD_CD_PORT_ID == 1)
-  #define RTE_SD_CD_PORT                1
-  #define RTE_SD_CD_PIN                 13
-  #define RTE_SD_CD_FUNC                7
-#elif    (RTE_SD_CD_PORT_ID == 2)
-  #define RTE_SD_CD_PORT                0xC
-  #define RTE_SD_CD_PIN                 8
-  #define RTE_SD_CD_FUNC                7
-#else
-  #error "Invalid SD_CD Pin Configuration!"
-#endif
-#ifndef   RTE_SD_CD_PIN_EN
-  #define RTE_SD_CD_PIN_EN              1
-#endif
-//   <o> SD_WP (Write Protect) Pin <0=>Not used <1=>PD_15 <2=>PF_10
-//   <i> Configure Pin if exists
-#define   RTE_SD_WP_PORT_ID             0
-#if      (RTE_SD_WP_PORT_ID == 0)
-  #define RTE_SD_WP_PIN_EN              0
-#elif    (RTE_SD_WP_PORT_ID == 1)
-  #define RTE_SD_WP_PORT                0xD
-  #define RTE_SD_WP_PIN                 15
-  #define RTE_SD_WP_FUNC                5
-#elif    (RTE_SD_WP_PORT_ID == 2)
-  #define RTE_SD_WP_PORT                0xF
-  #define RTE_SD_WP_PIN                 10
-  #define RTE_SD_WP_FUNC                6
-#else
-  #error "Invalid SD_WP Pin Configuration!"
-#endif
-#ifndef   RTE_SD_WP_PIN_EN
-  #define RTE_SD_WP_PIN_EN              1
-#endif
-//   <o> SD_POW (Power) Pin <0=>Not used <1=>P1_5 <2=>PC_9 <3=>PD_1
-//   <i> Configure Pin if exists
-#define   RTE_SD_POW_PORT_ID            0
-#if      (RTE_SD_POW_PORT_ID == 0)
-  #define RTE_SD_POW_PIN_EN             0
-#elif    (RTE_SD_POW_PORT_ID == 1)
-  #define RTE_SD_POW_PORT               1
-  #define RTE_SD_POW_PIN                5
-  #define RTE_SD_POW_FUNC               7
-#elif    (RTE_SD_POW_PORT_ID == 2)
-  #define RTE_SD_POW_PORT               0xC
-  #define RTE_SD_POW_PIN                9
-  #define RTE_SD_POW_FUNC               7
-#elif    (RTE_SD_POW_PORT_ID == 3)
-  #define RTE_SD_POW_PORT               0xD
-  #define RTE_SD_POW_PIN                1
-  #define RTE_SD_POW_FUNC               5
-#else
-  #error "Invalid SD_POW Pin Configuration!"
-#endif
-#ifndef   RTE_SD_POW_PIN_EN
-  #define RTE_SD_POW_PIN_EN             1
-#endif
-//   <o> SD_RST (Card Reset for MMC4.4) Pin <0=>Not used <1=>P1_3 <2=>PC_2
-//   <i> Configure Pin if exists
-#define   RTE_SD_RST_PORT_ID            0
-#if      (RTE_SD_RST_PORT_ID == 0)
-  #define RTE_SD_RST_PIN_EN             0
-#elif    (RTE_SD_RST_PORT_ID == 1)
-  #define RTE_SD_RST_PORT               1
-  #define RTE_SD_RST_PIN                3
-  #define RTE_SD_RST_FUNC               7
-#elif    (RTE_SD_RST_PORT_ID == 2)
-  #define RTE_SD_RST_PORT               0xC
-  #define RTE_SD_RST_PIN                2
-  #define RTE_SD_RST_FUNC               7
-#else
-  #error "Invalid SD_RST Pin Configuration!"
-#endif
-#ifndef   RTE_SD_RST_PIN_EN
-  #define RTE_SD_RST_PIN_EN             1
-#endif
-// </e> SD/MMC Interface [Driver_MCI0]
-
-// <e> I2C0 (Inter-integrated Circuit Interface 0) [Driver_I2C0]
-// <i> Configuration settings for Driver_I2C0 in component ::Drivers:I2C
-// </e> I2C0 (Inter-integrated Circuit Interface 0) [Driver_I2C0]
-#define   RTE_I2C0                      0
-
-// <e> I2C1 (Inter-integrated Circuit Interface 1) [Driver_I2C1]
-// <i> Configuration settings for Driver_I2C1 in component ::Drivers:I2C
-#define   RTE_I2C1                      0
-
-//   <o> I2C1_SCL Pin <0=>P2_4 <1=>PE_15
-#define   RTE_I2C1_SCL_PORT_ID          0
-#if      (RTE_I2C1_SCL_PORT_ID == 0)
-  #define RTE_I2C1_SCL_PORT             2
-  #define RTE_I2C1_SCL_PIN              4
-  #define RTE_I2C1_SCL_FUNC             1
-#elif    (RTE_I2C1_SCL_PORT_ID == 1)
-  #define RTE_I2C1_SCL_PORT             0xE
-  #define RTE_I2C1_SCL_PIN              15
-  #define RTE_I2C1_SCL_FUNC             2
-#else
-  #error "Invalid I2C1_SCL Pin Configuration!"
-#endif
-//   <o> I2C1_SDA Pin <0=>P2_3 <1=>PE_13
-#define   RTE_I2C1_SDA_PORT_ID          0
-#if      (RTE_I2C1_SDA_PORT_ID == 0)
-  #define RTE_I2C1_SDA_PORT             2
-  #define RTE_I2C1_SDA_PIN              3
-  #define RTE_I2C1_SDA_FUNC             1
-#elif    (RTE_I2C1_SDA_PORT_ID == 1)
-  #define RTE_I2C1_SDA_PORT             0xE
-  #define RTE_I2C1_SDA_PIN              13
-  #define RTE_I2C1_SDA_FUNC             2
-#else
-  #error "Invalid I2C1_SDA Pin Configuration!"
-#endif
-// </e> I2C1 (Inter-integrated Circuit Interface 1) [Driver_I2C1]
-
-// <e> USART0 (Universal synchronous asynchronous receiver transmitter) [Driver_USART0]
-#define   RTE_USART0                    0
-
-//   <h> Pin Configuration
-//     <o> TX <0=>Not used <1=>P2_0 <2=>P6_4 <3=>P9_5 <4=>PF_10
-//     <i> USART0 Serial Output pin
-#define   RTE_USART0_TX_ID              0
-#if      (RTE_USART0_TX_ID == 0)
-  #define RTE_USART0_TX_PIN_EN          0
-#elif    (RTE_USART0_TX_ID == 1)
-  #define RTE_USART0_TX_PORT            2
-  #define RTE_USART0_TX_BIT             0
-  #define RTE_USART0_TX_FUNC            1
-#elif    (RTE_USART0_TX_ID == 2)
-  #define RTE_USART0_TX_PORT            6
-  #define RTE_USART0_TX_BIT             4
-  #define RTE_USART0_TX_FUNC            2
-#elif    (RTE_USART0_TX_ID == 3)
-  #define RTE_USART0_TX_PORT            9
-  #define RTE_USART0_TX_BIT             5
-  #define RTE_USART0_TX_FUNC            7
-#elif    (RTE_USART0_TX_ID == 4)
-  #define RTE_USART0_TX_PORT            0xF
-  #define RTE_USART0_TX_BIT             10
-  #define RTE_USART0_TX_FUNC            1
-#else
-  #error "Invalid USART0_TX Pin Configuration!"
-#endif
-#ifndef   RTE_USART0_TX_PIN_EN
-  #define RTE_USART0_TX_PIN_EN          1
-#endif
-//     <o> RX <0=>Not used <1=>P2_1 <2=>P6_5 <3=>P9_6 <4=>PF_11
-//     <i> USART0 Serial Input pin
-#define   RTE_USART0_RX_ID              0
-#if      (RTE_USART0_RX_ID == 0)
-  #define RTE_USART0_RX_PIN_EN          0
-#elif    (RTE_USART0_RX_ID == 1)
-  #define RTE_USART0_RX_PORT            2
-  #define RTE_USART0_RX_BIT             1
-  #define RTE_USART0_RX_FUNC            1
-#elif    (RTE_USART0_RX_ID == 2)
-  #define RTE_USART0_RX_PORT            6
-  #define RTE_USART0_RX_BIT             5
-  #define RTE_USART0_RX_FUNC            2
-#elif    (RTE_USART0_RX_ID == 3)
-  #define RTE_USART0_RX_PORT            9
-  #define RTE_USART0_RX_BIT             6
-  #define RTE_USART0_RX_FUNC            7
-#elif    (RTE_USART0_RX_ID == 4)
-  #define RTE_USART0_RX_PORT            0xF
-  #define RTE_USART0_RX_BIT             11
-  #define RTE_USART0_RX_FUNC            1
-#else
-  #error "Invalid USART0_RX Pin Configuration!"
-#endif
-#ifndef   RTE_USART0_RX_PIN_EN
-  #define RTE_USART0_RX_PIN_EN          1
-#endif
-//     <o> UCLK (Synchronous and SmartCard mode) <0=>Not used <1=>P2_2 <2=>P6_1 <3=>PF_8
-//     <i> USART0 Serial Clock input/output synchronous mode
-#define   RTE_USART0_UCLK_ID            0
-#if      (RTE_USART0_UCLK_ID == 0)
-  #define RTE_USART0_UCLK_PIN_EN        0
-#elif    (RTE_USART0_UCLK_ID == 1)
-  #define RTE_USART0_UCLK_PORT          2
-  #define RTE_USART0_UCLK_BIT           2
-  #define RTE_USART0_UCLK_FUNC          1
-#elif    (RTE_USART0_UCLK_ID == 2)
-  #define RTE_USART0_UCLK_PORT          6
-  #define RTE_USART0_UCLK_BIT           1
-  #define RTE_USART0_UCLK_FUNC          2
-#elif    (RTE_USART0_UCLK_ID == 3)
-  #define RTE_USART0_UCLK_PORT          0xF
-  #define RTE_USART0_UCLK_BIT           8
-  #define RTE_USART0_UCLK_FUNC          1
-#else
-  #error "Invalid USART0_UCLK Pin Configuration!"
-#endif
-#ifndef   RTE_USART0_UCLK_PIN_EN
-  #define RTE_USART0_UCLK_PIN_EN        1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>1 (DMAMUXPER1)  <1=>11 (DMAMUXPER11)
-//     </e>
-#define   RTE_USART0_DMA_TX_EN          0
-#define   RTE_USART0_DMA_TX_CH          0
-#define   RTE_USART0_DMA_TX_PERI_ID     0
-#if      (RTE_USART0_DMA_TX_PERI_ID == 0)
-  #define RTE_USART0_DMA_TX_PERI        1
-  #define RTE_USART0_DMA_TX_PERI_SEL    1
-#elif    (RTE_USART0_DMA_TX_PERI_ID == 1)
-  #define RTE_USART0_DMA_TX_PERI        11
-  #define RTE_USART0_DMA_TX_PERI_SEL    2
-#endif
-//     <e> Rx
-//       <o1> Channel    <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral <0=>2 (DMAMUXPER2)  <1=>12 (DMAMUXPER12)
-//     </e>
-#define   RTE_USART0_DMA_RX_EN          0
-#define   RTE_USART0_DMA_RX_CH          1
-#define   RTE_USART0_DMA_RX_PERI_ID     0
-#if      (RTE_USART0_DMA_RX_PERI_ID == 0)
-  #define RTE_USART0_DMA_RX_PERI        2
-  #define RTE_USART0_DMA_RX_PERI_SEL    1
-#elif    (RTE_USART0_DMA_RX_PERI_ID == 1)
-  #define RTE_USART0_DMA_RX_PERI        12
-  #define RTE_USART0_DMA_RX_PERI_SEL    2
-#endif
-//   </h> DMA
-// </e> USART0 (Universal synchronous asynchronous receiver transmitter) [Driver_USART0]
-
-// <e> UART1 (Universal asynchronous receiver transmitter) [Driver_USART1]
-#define   RTE_UART1                     1
-
-//   <h> Pin Configuration
-//     <o> TX <0=>Not used <1=>P1_13 <2=>P3_4 <3=>P5_6 <4=>PC_13 <5=>PE_11
-//     <i> UART0 Serial Output pin
-#define   RTE_UART1_TX_ID               0
-#if      (RTE_UART1_TX_ID == 0)
-  #define RTE_UART1_TX_PIN_EN           0
-#elif    (RTE_UART1_TX_ID == 1)
-  #define RTE_UART1_TX_PORT             1
-  #define RTE_UART1_TX_BIT              13
-  #define RTE_UART1_TX_FUNC             1
-#elif    (RTE_UART1_TX_ID == 2)
-  #define RTE_UART1_TX_PORT             3
-  #define RTE_UART1_TX_BIT              4
-  #define RTE_UART1_TX_FUNC             4
-#elif    (RTE_UART1_TX_ID == 3)
-  #define RTE_UART1_TX_PORT             5
-  #define RTE_UART1_TX_BIT              6
-  #define RTE_UART1_TX_FUNC             4
-#elif    (RTE_UART1_TX_ID == 4)
-  #define RTE_UART1_TX_PORT             0xC
-  #define RTE_UART1_TX_BIT              13
-  #define RTE_UART1_TX_FUNC             2
-#elif    (RTE_UART1_TX_ID == 5)
-  #define RTE_UART1_TX_PORT             0xE
-  #define RTE_UART1_TX_BIT              11
-  #define RTE_UART1_TX_FUNC             2
-#else
-  #error "Invalid UART1_TX Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_TX_PIN_EN
-  #define RTE_UART1_TX_PIN_EN           1
-#endif
-//   <o> RX <0=>Not used <1=>P1_14 <2=>P3_5 <3=>P5_7 <4=>PC_14 <5=>PE_12
-//   <i> UART1 Serial Input pin
-#define   RTE_UART1_RX_ID               1
-#if      (RTE_UART1_RX_ID == 0)
-  #define RTE_UART1_RX_PIN_EN           0
-#elif    (RTE_UART1_RX_ID == 1)
-  #define RTE_UART1_RX_PORT             1
-  #define RTE_UART1_RX_BIT              14
-  #define RTE_UART1_RX_FUNC             1
-#elif    (RTE_UART1_RX_ID == 2)
-  #define RTE_UART1_RX_PORT             3
-  #define RTE_UART1_RX_BIT              5
-  #define RTE_UART1_RX_FUNC             4
-#elif    (RTE_UART1_RX_ID == 3)
-  #define RTE_UART1_RX_PORT             5
-  #define RTE_UART1_RX_BIT              7
-  #define RTE_UART1_RX_FUNC             4
-#elif    (RTE_UART1_RX_ID == 4)
-  #define RTE_UART1_RX_PORT             0xC
-  #define RTE_UART1_RX_BIT              14
-  #define RTE_UART1_RX_FUNC             2
-#elif    (RTE_UART1_RX_ID == 5)
-  #define RTE_UART1_RX_PORT             0xE
-  #define RTE_UART1_RX_BIT              12
-  #define RTE_UART1_RX_FUNC             2
-#else
-  #error "Invalid UART1_RX Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_RX_PIN_EN
-  #define RTE_UART1_RX_PIN_EN           1
-#endif
-
-//     <h> Modem Lines
-//       <o> CTS <0=>Not used <1=>P1_11 <2=>P5_4 <3=>PC_2 <4=>PE_7
-#define   RTE_UART1_CTS_ID              0
-#if      (RTE_UART1_CTS_ID == 0)
-  #define RTE_UART1_CTS_PIN_EN          0
-#elif    (RTE_UART1_CTS_ID == 1)
-  #define RTE_UART1_CTS_PORT            1
-  #define RTE_UART1_CTS_BIT             11
-  #define RTE_UART1_CTS_FUNC            1
-#elif    (RTE_UART1_CTS_ID == 2)
-  #define RTE_UART1_CTS_PORT            5
-  #define RTE_UART1_CTS_BIT             4
-  #define RTE_UART1_CTS_FUNC            4
-#elif    (RTE_UART1_CTS_ID == 3)
-  #define RTE_UART1_CTS_PORT            0xC
-  #define RTE_UART1_CTS_BIT             2
-  #define RTE_UART1_CTS_FUNC            2
-#elif    (RTE_UART1_CTS_ID == 4)
-  #define RTE_UART1_CTS_PORT            0xE
-  #define RTE_UART1_CTS_BIT             7
-  #define RTE_UART1_CTS_FUNC            2
-#else
-  #error "Invalid UART1_CTS Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_CTS_PIN_EN
-  #define RTE_UART1_CTS_PIN_EN          1
-#endif
-//       <o> RTS <0=>Not used <1=>P1_9  <2=>P5_2 <3=>PC_3 <4=>PE_5
-#define   RTE_UART1_RTS_ID              0
-#if      (RTE_UART1_RTS_ID == 0)
-  #define RTE_UART1_RTS_PIN_EN          0
-#elif    (RTE_UART1_RTS_ID == 1)
-  #define RTE_UART1_RTS_PORT            1
-  #define RTE_UART1_RTS_BIT             9
-  #define RTE_UART1_RTS_FUNC            1
-#elif    (RTE_UART1_RTS_ID == 2)
-  #define RTE_UART1_RTS_PORT            5
-  #define RTE_UART1_RTS_BIT             2
-  #define RTE_UART1_RTS_FUNC            4
-#elif    (RTE_UART1_RTS_ID == 3)
-  #define RTE_UART1_RTS_PORT            0xC
-  #define RTE_UART1_RTS_BIT             3
-  #define RTE_UART1_RTS_FUNC            2
-#elif    (RTE_UART1_RTS_ID == 4)
-  #define RTE_UART1_RTS_PORT            0xE
-  #define RTE_UART1_RTS_BIT             5
-  #define RTE_UART1_RTS_FUNC            2
-#else
-  #error "Invalid UART1_RTS Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_RTS_PIN_EN
-  #define RTE_UART1_RTS_PIN_EN          1
-#endif
-//       <o> DCD <0=>Not used <1=>P1_12 <2=>P5_5 <3=>PC_11 <4=>PE_9
-#define   RTE_UART1_DCD_ID              0
-#if      (RTE_UART1_DCD_ID == 0)
-  #define RTE_UART1_DCD_PIN_EN          0
-#elif    (RTE_UART1_DCD_ID == 1)
-  #define RTE_UART1_DCD_PORT            1
-  #define RTE_UART1_DCD_BIT             12
-  #define RTE_UART1_DCD_FUNC            1
-#elif    (RTE_UART1_DCD_ID == 2)
-  #define RTE_UART1_DCD_PORT            5
-  #define RTE_UART1_DCD_BIT             5
-  #define RTE_UART1_DCD_FUNC            4
-#elif    (RTE_UART1_DCD_ID == 3)
-  #define RTE_UART1_DCD_PORT            0xC
-  #define RTE_UART1_DCD_BIT             11
-  #define RTE_UART1_DCD_FUNC            2
-#elif    (RTE_UART1_DCD_ID == 4)
-  #define RTE_UART1_DCD_PORT            0xE
-  #define RTE_UART1_DCD_BIT             9
-  #define RTE_UART1_DCD_FUNC            2
-#else
-  #error "Invalid UART1_DCD Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_DCD_PIN_EN
-  #define RTE_UART1_DCD_PIN_EN          1
-#endif
-//       <o> DSR <0=>Not used <1=>P1_7 <2=>P5_0 <3=>PC_10 <4=>PE_8
-#define   RTE_UART1_DSR_ID              0
-#if      (RTE_UART1_DSR_ID == 0)
-  #define RTE_UART1_DSR_PIN_EN          0
-#elif    (RTE_UART1_DSR_ID == 1)
-  #define RTE_UART1_DSR_PORT            1
-  #define RTE_UART1_DSR_BIT             7
-  #define RTE_UART1_DSR_FUNC            1
-#elif    (RTE_UART1_DSR_ID == 2)
-  #define RTE_UART1_DSR_PORT            5
-  #define RTE_UART1_DSR_BIT             0
-  #define RTE_UART1_DSR_FUNC            4
-#elif    (RTE_UART1_DSR_ID == 3)
-  #define RTE_UART1_DSR_PORT            0xC
-  #define RTE_UART1_DSR_BIT             10
-  #define RTE_UART1_DSR_FUNC            2
-#elif    (RTE_UART1_DSR_ID == 4)
-  #define RTE_UART1_DSR_PORT            0xE
-  #define RTE_UART1_DSR_BIT             8
-  #define RTE_UART1_DSR_FUNC            2
-#else
-  #error "Invalid UART1_DSR Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_DSR_PIN_EN
-  #define RTE_UART1_DSR_PIN_EN          1
-#endif
-//       <o> DTR <0=>Not used <1=>P1_8  <2=>P5_1 <3=>PC_12 <4=>PE_10
-#define   RTE_UART1_DTR_ID              0
-#if      (RTE_UART1_DTR_ID == 0)
-  #define RTE_UART1_DTR_PIN_EN          0
-#elif    (RTE_UART1_DTR_ID == 1)
-  #define RTE_UART1_DTR_PORT            1
-  #define RTE_UART1_DTR_BIT             8
-  #define RTE_UART1_DTR_FUNC            1
-#elif    (RTE_UART1_DTR_ID == 2)
-  #define RTE_UART1_DTR_PORT            5
-  #define RTE_UART1_DTR_BIT             1
-  #define RTE_UART1_DTR_FUNC            4
-#elif    (RTE_UART1_DTR_ID == 3)
-  #define RTE_UART1_DTR_PORT            0xC
-  #define RTE_UART1_DTR_BIT             12
-  #define RTE_UART1_DTR_FUNC            2
-#elif    (RTE_UART1_DTR_ID == 4)
-  #define RTE_UART1_DTR_PORT            0xE
-  #define RTE_UART1_DTR_BIT             10
-  #define RTE_UART1_DTR_FUNC            2
-#else
-  #error "Invalid UART1_DTR Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_DTR_PIN_EN
-  #define RTE_UART1_DTR_PIN_EN          1
-#endif
-//       <o> RI <0=>Not used <1=>P1_10 <2=>P5_3 <3=>PC_1 <4=>PE_6
-#define   RTE_UART1_RI_ID               0
-#if      (RTE_UART1_RI_ID == 0)
-  #define RTE_UART1_RI_PIN_EN           0
-#elif    (RTE_UART1_RI_ID == 1)
-  #define RTE_UART1_RI_PORT             1
-  #define RTE_UART1_RI_BIT              10
-  #define RTE_UART1_RI_FUNC             1
-#elif    (RTE_UART1_RI_ID == 2)
-  #define RTE_UART1_RI_PORT             5
-  #define RTE_UART1_RI_BIT              3
-  #define RTE_UART1_RI_FUNC             4
-#elif    (RTE_UART1_RI_ID == 3)
-  #define RTE_UART1_RI_PORT             0xC
-  #define RTE_UART1_RI_BIT              1
-  #define RTE_UART1_RI_FUNC             2
-#elif    (RTE_UART1_RI_ID == 4)
-  #define RTE_UART1_RI_PORT             0xE
-  #define RTE_UART1_RI_BIT              6
-  #define RTE_UART1_RI_FUNC             2
-#else
-  #error "Invalid UART1_RI Pin Configuration!"
-#endif
-#ifndef   RTE_UART1_RI_PIN_EN
-  #define RTE_UART1_RI_PIN_EN           1
-#endif
-//     </h> Modem Lines
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>3 (DMAMUXPER3)
-//     </e>
-#define   RTE_UART1_DMA_TX_EN           0
-#define   RTE_UART1_DMA_TX_CH           0
-#define   RTE_UART1_DMA_TX_PERI_ID      0
-#if      (RTE_UART1_DMA_TX_PERI_ID == 0)
-  #define RTE_UART1_DMA_TX_PERI         3
-  #define RTE_UART1_DMA_TX_PERI_SEL     1
-#endif
-//     <e> Rx
-//       <o1> Channel    <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral <0=>4 (DMAMUXPER4)
-//     </e>
-#define   RTE_UART1_DMA_RX_EN           0
-#define   RTE_UART1_DMA_RX_CH           1
-#define   RTE_UART1_DMA_RX_PERI_ID      0
-#if      (RTE_UART1_DMA_RX_PERI_ID == 0)
-  #define RTE_UART1_DMA_RX_PERI         4
-  #define RTE_UART1_DMA_RX_PERI_SEL     1
-#endif
-//   </h> DMA
-// </e> UART1 (Universal asynchronous receiver transmitter) [Driver_USART1]
-
-// <e> USART2 (Universal synchronous asynchronous receiver transmitter) [Driver_USART2]
-#define   RTE_USART2                    0
-
-//   <h> Pin Configuration
-//     <o> TX <0=>Not used <1=>P1_15 <2=>P2_10 <3=>P7_1 <4=>PA_1
-//     <i> USART2 Serial Output pin
-#define   RTE_USART2_TX_ID              0
-#if      (RTE_USART2_TX_ID == 0)
-  #define RTE_USART2_TX_PIN_EN          0
-#elif    (RTE_USART2_TX_ID == 1)
-  #define RTE_USART2_TX_PORT            1
-  #define RTE_USART2_TX_BIT             15
-  #define RTE_USART2_TX_FUNC            1
-#elif    (RTE_USART2_TX_ID == 2)
-  #define RTE_USART2_TX_PORT            2
-  #define RTE_USART2_TX_BIT             10
-  #define RTE_USART2_TX_FUNC            2
-#elif    (RTE_USART2_TX_ID == 3)
-  #define RTE_USART2_TX_PORT            7
-  #define RTE_USART2_TX_BIT             1
-  #define RTE_USART2_TX_FUNC            6
-#elif    (RTE_USART2_TX_ID == 4)
-  #define RTE_USART2_TX_PORT            0xA
-  #define RTE_USART2_TX_BIT             1
-  #define RTE_USART2_TX_FUNC            3
-#else
-  #error "Invalid USART2_TX Pin Configuration!"
-#endif
-#ifndef   RTE_USART2_TX_PIN_EN
-  #define RTE_USART2_TX_PIN_EN          1
-#endif
-//     <o> RX <0=>Not used <1=>P1_16 <2=>P2_11 <3=>P7_2 <4=>PA_2
-//     <i> USART2 Serial Input pin
-#define   RTE_USART2_RX_ID              0
-#if      (RTE_USART2_RX_ID == 0)
-  #define RTE_USART2_RX_PIN_EN          0
-#elif    (RTE_USART2_RX_ID == 1)
-  #define RTE_USART2_RX_PORT            1
-  #define RTE_USART2_RX_BIT             16
-  #define RTE_USART2_RX_FUNC            1
-#elif    (RTE_USART2_RX_ID == 2)
-  #define RTE_USART2_RX_PORT            2
-  #define RTE_USART2_RX_BIT             11
-  #define RTE_USART2_RX_FUNC            2
-#elif    (RTE_USART2_RX_ID == 3)
-  #define RTE_USART2_RX_PORT            7
-  #define RTE_USART2_RX_BIT             2
-  #define RTE_USART2_RX_FUNC            6
-#elif    (RTE_USART2_RX_ID == 4)
-  #define RTE_USART2_RX_PORT            0xA
-  #define RTE_USART2_RX_BIT             2
-  #define RTE_USART2_RX_FUNC            3
-#else
-  #error "Invalid USART2_RX Pin Configuration!"
-#endif
-#ifndef   RTE_USART2_RX_PIN_EN
-  #define RTE_USART2_RX_PIN_EN          1
-#endif
-//       <o> UCLK (Synchronous and SmartCard mode) <0=>Not used <1=>P1_17 <2=>P2_12
-//       <i> USART2 Serial Clock input/output synchronous mode
-#define   RTE_USART2_UCLK_ID            0
-#if      (RTE_USART2_UCLK_ID == 0)
-  #define RTE_USART2_UCLK_PIN_EN        0
-#elif    (RTE_USART2_UCLK_ID == 1)
-  #define RTE_USART2_UCLK_PORT          1
-  #define RTE_USART2_UCLK_BIT           17
-  #define RTE_USART2_UCLK_FUNC          1
-#elif    (RTE_USART2_UCLK_ID == 2)
-  #define RTE_USART2_UCLK_PORT          2
-  #define RTE_USART2_UCLK_BIT           12
-  #define RTE_USART2_UCLK_FUNC          7
-#else
-  #error "Invalid USART2_UCLK Pin Configuration!"
-#endif
-#ifndef   RTE_USART2_UCLK_PIN_EN
-  #define RTE_USART2_UCLK_PIN_EN        1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>5 (DMAMUXPER5)
-//     </e>
-#define   RTE_USART2_DMA_TX_EN          0
-#define   RTE_USART2_DMA_TX_CH          0
-#define   RTE_USART2_DMA_TX_PERI_ID     0
-#if      (RTE_USART2_DMA_TX_PERI_ID == 0)
-  #define RTE_USART2_DMA_TX_PERI        5
-  #define RTE_USART2_DMA_TX_PERI_SEL    1
-#endif
-//     <e> Rx
-//       <o1> Channel    <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral <0=>6 (DMAMUXPER6)
-//     </e>
-#define   RTE_USART2_DMA_RX_EN          0
-#define   RTE_USART2_DMA_RX_CH          1
-#define   RTE_USART2_DMA_RX_PERI_ID     0
-#if      (RTE_USART2_DMA_RX_PERI_ID == 0)
-  #define RTE_USART2_DMA_RX_PERI        6
-  #define RTE_USART2_DMA_RX_PERI_SEL    1
-#endif
-//   </h> DMA
-// </e> USART2 (Universal synchronous asynchronous receiver transmitter) [Driver_USART2]
-
-// <e> USART3 (Universal synchronous asynchronous receiver transmitter) [Driver_USART3]
-#define   RTE_USART3                    0
-
-//   <h> Pin Configuration
-//     <o> TX <0=>Not used <1=>P2_3 <2=>P4_1 <3=>P9_3 <4=>PF_2
-//     <i> USART3 Serial Output pin
-#define   RTE_USART3_TX_ID              0
-#if      (RTE_USART3_TX_ID == 0)
-  #define RTE_USART3_TX_PIN_EN          0
-#elif    (RTE_USART3_TX_ID == 1)
-  #define RTE_USART3_TX_PORT            2
-  #define RTE_USART3_TX_BIT             3
-  #define RTE_USART3_TX_FUNC            2
-#elif    (RTE_USART3_TX_ID == 2)
-  #define RTE_USART3_TX_PORT            4
-  #define RTE_USART3_TX_BIT             1
-  #define RTE_USART3_TX_FUNC            6
-#elif    (RTE_USART3_TX_ID == 3)
-  #define RTE_USART3_TX_PORT            9
-  #define RTE_USART3_TX_BIT             3
-  #define RTE_USART3_TX_FUNC            7
-#elif    (RTE_USART3_TX_ID == 4)
-  #define RTE_USART3_TX_PORT            0xF
-  #define RTE_USART3_TX_BIT             2
-  #define RTE_USART3_TX_FUNC            1
-#else
-  #error "Invalid USART3_TX Pin Configuration!"
-#endif
-#ifndef   RTE_USART3_TX_PIN_EN
-  #define RTE_USART3_TX_PIN_EN          1
-#endif
-//     <o> RX <0=>Not used <1=>P2_4 <2=>P4_2 <3=>P9_4 <4=>PF_3
-//     <i> USART3 Serial Input pin
-#define   RTE_USART3_RX_ID              0
-#if      (RTE_USART3_RX_ID == 0)
-  #define RTE_USART3_RX_PIN_EN          0
-#elif    (RTE_USART3_RX_ID == 1)
-  #define RTE_USART3_RX_PORT            2
-  #define RTE_USART3_RX_BIT             4
-  #define RTE_USART3_RX_FUNC            2
-#elif    (RTE_USART3_RX_ID == 2)
-  #define RTE_USART3_RX_PORT            4
-  #define RTE_USART3_RX_BIT             2
-  #define RTE_USART3_RX_FUNC            6
-#elif    (RTE_USART3_RX_ID == 3)
-  #define RTE_USART3_RX_PORT            9
-  #define RTE_USART3_RX_BIT             4
-  #define RTE_USART3_RX_FUNC            7
-#elif    (RTE_USART3_RX_ID == 4)
-  #define RTE_USART3_RX_PORT            0xF
-  #define RTE_USART3_RX_BIT             3
-  #define RTE_USART3_RX_FUNC            1
-#else
-  #error "Invalid USART3_RX Pin Configuration!"
-#endif
-#ifndef   RTE_USART3_RX_PIN_EN
-  #define RTE_USART3_RX_PIN_EN          1
-#endif
-//     <o> UCLK (Synchronous and SmartCard mode) <0=>Not used <1=>P2_7 <2=>P4_0 <3=>PF_5
-//     <i> USART3 Serial Clock input/output synchronous mode
-#define   RTE_USART3_UCLK_ID            0
-#if      (RTE_USART3_UCLK_ID == 0)
-  #define RTE_USART3_UCLK_PIN_EN        0
-#elif    (RTE_USART3_UCLK_ID == 1)
-  #define RTE_USART3_UCLK_PORT          2
-  #define RTE_USART3_UCLK_BIT           7
-  #define RTE_USART3_UCLK_FUNC          2
-#elif    (RTE_USART3_UCLK_ID == 2)
-  #define RTE_USART3_UCLK_PORT          4
-  #define RTE_USART3_UCLK_BIT           0
-  #define RTE_USART3_UCLK_FUNC          6
-#elif    (RTE_USART3_UCLK_ID == 3)
-  #define RTE_USART3_UCLK_PORT          0xF
-  #define RTE_USART3_UCLK_BIT           5
-  #define RTE_USART3_UCLK_FUNC          1
-#else
-  #error "Invalid USART3_UCLK Pin Configuration!"
-#endif
-#ifndef   RTE_USART3_UCLK_PIN_EN
-  #define RTE_USART3_UCLK_PIN_EN        1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>7 (DMAMUXPER7)  <1=>14 (DMAMUXPER14)
-//     </e>
-#define   RTE_USART3_DMA_TX_EN          0
-#define   RTE_USART3_DMA_TX_CH          0
-#define   RTE_USART3_DMA_TX_PERI_ID     0
-#if      (RTE_USART3_DMA_TX_PERI_ID == 0)
-  #define RTE_USART3_DMA_TX_PERI        7
-  #define RTE_USART3_DMA_TX_PERI_SEL    1
-#elif    (RTE_USART3_DMA_TX_PERI_ID == 1)
-  #define RTE_USART3_DMA_TX_PERI        14
-  #define RTE_USART3_DMA_TX_PERI_SEL    3
-#endif
-//     <e> Rx
-//       <o1> Channel    <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral <0=>8 (DMAMUXPER8)  <1=>13 (DMAMUXPER13)
-//     </e>
-#define   RTE_USART3_DMA_RX_EN          0
-#define   RTE_USART3_DMA_RX_CH          1
-#define   RTE_USART3_DMA_RX_PERI_ID     0
-#if      (RTE_USART3_DMA_RX_PERI_ID == 0)
-  #define RTE_USART3_DMA_RX_PERI        8
-  #define RTE_USART3_DMA_RX_PERI_SEL    1
-#elif    (RTE_USART3_DMA_RX_PERI_ID == 1)
-  #define RTE_USART3_DMA_RX_PERI        13
-  #define RTE_USART3_DMA_RX_PERI_SEL    3
-#endif
-//   </h> DMA
-// </e> USART3 (Universal synchronous asynchronous receiver transmitter) [Driver_USART3]
-
-// <e> SSP0 (Synchronous Serial Port 0) [Driver_SPI0]
-// <i> Configuration settings for Driver_SPI0 in component ::Drivers:SPI
-#define   RTE_SSP0                      0
-
-//   <h> Pin Configuration
-//     <o> SSP0_SSEL <0=>Not used <1=>P1_0 <2=>P3_6 <3=>P3_8 <4=>P9_0 <5=>PF_1
-//     <i> Slave Select for SSP0
-#define   RTE_SSP0_SSEL_PIN_SEL         1
-#if      (RTE_SSP0_SSEL_PIN_SEL == 0)
-#define   RTE_SSP0_SSEL_PIN_EN          0
-#elif    (RTE_SSP0_SSEL_PIN_SEL == 1)
-  #define RTE_SSP0_SSEL_PORT            1
-  #define RTE_SSP0_SSEL_BIT             0
-  #define RTE_SSP0_SSEL_FUNC            5
-  #define RTE_SSP0_SSEL_GPIO_FUNC       0
-  #define RTE_SSP0_SSEL_GPIO_PORT       0
-  #define RTE_SSP0_SSEL_GPIO_BIT        4
-#elif    (RTE_SSP0_SSEL_PIN_SEL == 2)
-  #define RTE_SSP0_SSEL_PORT            3
-  #define RTE_SSP0_SSEL_BIT             6
-  #define RTE_SSP0_SSEL_FUNC            2
-  #define RTE_SSP0_SSEL_GPIO_FUNC       0
-  #define RTE_SSP0_SSEL_GPIO_PORT       0
-  #define RTE_SSP0_SSEL_GPIO_BIT        6
-#elif    (RTE_SSP0_SSEL_PIN_SEL == 3)
-  #define RTE_SSP0_SSEL_PORT            3
-  #define RTE_SSP0_SSEL_BIT             8
-  #define RTE_SSP0_SSEL_FUNC            5
-  #define RTE_SSP0_SSEL_GPIO_FUNC       4
-  #define RTE_SSP0_SSEL_GPIO_PORT       5
-  #define RTE_SSP0_SSEL_GPIO_BIT        11
-#elif    (RTE_SSP0_SSEL_PIN_SEL == 4)
-  #define RTE_SSP0_SSEL_PORT            9
-  #define RTE_SSP0_SSEL_BIT             0
-  #define RTE_SSP0_SSEL_FUNC            7
-  #define RTE_SSP0_SSEL_GPIO_FUNC       0
-  #define RTE_SSP0_SSEL_GPIO_PORT       4
-  #define RTE_SSP0_SSEL_GPIO_BIT        12
-#elif    (RTE_SSP0_SSEL_PIN_SEL == 5)
-  #define RTE_SSP0_SSEL_PORT            0xF
-  #define RTE_SSP0_SSEL_BIT             1
-  #define RTE_SSP0_SSEL_FUNC            2
-  #define RTE_SSP0_SSEL_GPIO_FUNC       4
-  #define RTE_SSP0_SSEL_GPIO_PORT       7
-  #define RTE_SSP0_SSEL_GPIO_BIT        16
-#else
-  #error "Invalid SSP0 SSP0_SSEL Pin Configuration!"
-#endif
-#ifndef   RTE_SSP0_SSEL_PIN_EN
-#define   RTE_SSP0_SSEL_PIN_EN          1
-#endif
-//     <o> SSP0_SCK <0=>P3_0 <1=>P3_3 <2=>PF_0
-//     <i> Serial clock for SSP0
-#define   RTE_SSP0_SCK_PIN_SEL          0
-#if      (RTE_SSP0_SCK_PIN_SEL == 0)
-  #define RTE_SSP0_SCK_PORT             3
-  #define RTE_SSP0_SCK_BIT              0
-  #define RTE_SSP0_SCK_FUNC             4
-#elif    (RTE_SSP0_SCK_PIN_SEL == 1)
-  #define RTE_SSP0_SCK_PORT             3
-  #define RTE_SSP0_SCK_BIT              3
-  #define RTE_SSP0_SCK_FUNC             2
-#elif    (RTE_SSP0_SCK_PIN_SEL == 2)
-  #define RTE_SSP0_SCK_PORT             0xF
-  #define RTE_SSP0_SCK_BIT              0
-  #define RTE_SSP0_SCK_FUNC             0
-#else
-  #error "Invalid SSP0 SSP0_SCK Pin Configuration!"
-#endif
-//     <o> SSP0_MISO <0=>Not used <1=>P1_1 <2=>P3_6 <3=>P3_7 <4=>P9_1 <5=>PF_2
-//     <i> Master In Slave Out for SSP0
-#define   RTE_SSP0_MISO_PIN_SEL         0
-#if      (RTE_SSP0_MISO_PIN_SEL == 0)
-  #define RTE_SSP0_MISO_PIN_EN          0
-#elif    (RTE_SSP0_MISO_PIN_SEL == 1)
-  #define RTE_SSP0_MISO_PORT            1
-  #define RTE_SSP0_MISO_BIT             1
-  #define RTE_SSP0_MISO_FUNC            5
-#elif    (RTE_SSP0_MISO_PIN_SEL == 2)
-  #define RTE_SSP0_MISO_PORT            3
-  #define RTE_SSP0_MISO_BIT             6
-  #define RTE_SSP0_MISO_FUNC            5
-#elif    (RTE_SSP0_MISO_PIN_SEL == 3)
-  #define RTE_SSP0_MISO_PORT            3
-  #define RTE_SSP0_MISO_BIT             7
-  #define RTE_SSP0_MISO_FUNC            2
-#elif    (RTE_SSP0_MISO_PIN_SEL == 4)
-  #define RTE_SSP0_MISO_PORT            9
-  #define RTE_SSP0_MISO_BIT             1
-  #define RTE_SSP0_MISO_FUNC            7
-#elif    (RTE_SSP0_MISO_PIN_SEL == 5)
-  #define RTE_SSP0_MISO_PORT            0xF
-  #define RTE_SSP0_MISO_BIT             2
-  #define RTE_SSP0_MISO_FUNC            2
-#else
-  #error "Invalid SSP0 SSP0_MISO Pin Configuration!"
-#endif
-#ifndef   RTE_SSP0_MISO_PIN_EN
-  #define RTE_SSP0_MISO_PIN_EN          1
-#endif
-//     <o> SSP0_MOSI <0=>Not used <1=>P1_2 <2=>P3_7 <3=>P3_8 <4=>P9_2 <5=>PF_3
-//     <i> Master Out Slave In for SSP0
-#define   RTE_SSP0_MOSI_PIN_SEL         0
-#if      (RTE_SSP0_MOSI_PIN_SEL == 0)
-  #define RTE_SSP0_MOSI_PIN_EN          0
-#elif    (RTE_SSP0_MOSI_PIN_SEL == 1)
-  #define RTE_SSP0_MOSI_PORT            1
-  #define RTE_SSP0_MOSI_BIT             2
-  #define RTE_SSP0_MOSI_FUNC            5
-#elif    (RTE_SSP0_MOSI_PIN_SEL == 2)
-  #define RTE_SSP0_MOSI_PORT            3
-  #define RTE_SSP0_MOSI_BIT             7
-  #define RTE_SSP0_MOSI_FUNC            5
-#elif    (RTE_SSP0_MOSI_PIN_SEL == 3)
-  #define RTE_SSP0_MOSI_PORT            3
-  #define RTE_SSP0_MOSI_BIT             8
-  #define RTE_SSP0_MOSI_FUNC            2
-#elif    (RTE_SSP0_MOSI_PIN_SEL == 4)
-  #define RTE_SSP0_MOSI_PORT            9
-  #define RTE_SSP0_MOSI_BIT             2
-  #define RTE_SSP0_MOSI_FUNC            7
-#elif    (RTE_SSP0_MOSI_PIN_SEL == 5)
-  #define RTE_SSP0_MOSI_PORT            0xF
-  #define RTE_SSP0_MOSI_BIT             3
-  #define RTE_SSP0_MOSI_FUNC            2
-#else
-  #error "Invalid SSP0 SSP0_MOSI Pin Configuration!"
-#endif
-#ifndef   RTE_SSP0_MOSI_PIN_EN
-  #define RTE_SSP0_MOSI_PIN_EN          1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>10 (DMAMUXPER10)
-//     </e>
-#define   RTE_SSP0_DMA_TX_EN            0
-#define   RTE_SSP0_DMA_TX_CH            0
-#define   RTE_SSP0_DMA_TX_PERI_ID       0
-#if      (RTE_SSP0_DMA_TX_PERI_ID == 0)
-  #define RTE_SSP0_DMA_TX_PERI          10
-  #define RTE_SSP0_DMA_TX_PERI_SEL      0
-#endif
-//     <e> Rx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>9 (DMAMUXPER9)
-//     </e>
-#define   RTE_SSP0_DMA_RX_EN            0
-#define   RTE_SSP0_DMA_RX_CH            1
-#define   RTE_SSP0_DMA_RX_PERI_ID       0
-#if      (RTE_SSP0_DMA_RX_PERI_ID == 0)
-  #define RTE_SSP0_DMA_RX_PERI          9
-  #define RTE_SSP0_DMA_RX_PERI_SEL      0
-#endif
-//   </h> DMA
-// </e> SSP0 (Synchronous Serial Port 0) [Driver_SPI0]
-
-// <e> SSP1 (Synchronous Serial Port 1) [Driver_SPI1]
-// <i> Configuration settings for Driver_SPI1 in component ::Drivers:SPI
-#define   RTE_SSP1                      0
-
-//   <h> Pin Configuration
-//     <o> SSP1_SSEL <0=>Not used <1=>P1_5 <2=>P1_20 <3=>PF_5
-//     <i> Slave Select for SSP1
-#define   RTE_SSP1_SSEL_PIN_SEL         1
-#if      (RTE_SSP1_SSEL_PIN_SEL == 0)
-  #define RTE_SSP1_SSEL_PIN_EN          0
-#elif    (RTE_SSP1_SSEL_PIN_SEL == 1)
-  #define RTE_SSP1_SSEL_PORT            1
-  #define RTE_SSP1_SSEL_BIT             5
-  #define RTE_SSP1_SSEL_FUNC            5
-  #define RTE_SSP1_SSEL_GPIO_FUNC       0
-  #define RTE_SSP1_SSEL_GPIO_PORT       1
-  #define RTE_SSP1_SSEL_GPIO_BIT        8
-#elif    (RTE_SSP1_SSEL_PIN_SEL == 2)
-  #define RTE_SSP1_SSEL_PORT            1
-  #define RTE_SSP1_SSEL_BIT             20
-  #define RTE_SSP1_SSEL_FUNC            1
-  #define RTE_SSP1_SSEL_GPIO_FUNC       0
-  #define RTE_SSP1_SSEL_GPIO_PORT       0
-  #define RTE_SSP1_SSEL_GPIO_BIT        15
-#elif    (RTE_SSP1_SSEL_PIN_SEL == 3)
-  #define RTE_SSP1_SSEL_PORT            0xF
-  #define RTE_SSP1_SSEL_BIT             5
-  #define RTE_SSP1_SSEL_FUNC            2
-  #define RTE_SSP1_SSEL_GPIO_FUNC       4
-  #define RTE_SSP1_SSEL_GPIO_PORT       7
-  #define RTE_SSP1_SSEL_GPIO_BIT        19
-#else
-  #error "Invalid SSP1 SSP1_SSEL Pin Configuration!"
-#endif
-#ifndef   RTE_SSP1_SSEL_PIN_EN
-#define   RTE_SSP1_SSEL_PIN_EN          1
-#endif
-//     <o> SSP1_SCK <0=>P1_19 <1=>PF_4 <2=>CLK0
-//     <i> Serial clock for SSP1
-#define   RTE_SSP1_SCK_PIN_SEL          0
-#if      (RTE_SSP1_SCK_PIN_SEL == 0)
-  #define RTE_SSP1_SCK_PORT             1
-  #define RTE_SSP1_SCK_BIT              19
-  #define RTE_SSP1_SCK_FUNC             1
-#elif    (RTE_SSP1_SCK_PIN_SEL == 1)
-  #define RTE_SSP1_SCK_PORT             0xF
-  #define RTE_SSP1_SCK_BIT              4
-  #define RTE_SSP1_SCK_FUNC             0
-#elif    (RTE_SSP1_SCK_PIN_SEL == 2)
-  #define RTE_SSP1_SCK_PORT             0x10
-  #define RTE_SSP1_SCK_BIT              0
-  #define RTE_SSP1_SCK_FUNC             6
-#else
-  #error "Invalid SSP1 SSP1_SCK Pin Configuration!"
-#endif
-//     <o> SSP1_MISO <0=>Not used <1=>P0_0 <2=>P1_3 <3=>PF_6
-//     <i> Master In Slave Out for SSP1
-#define   RTE_SSP1_MISO_PIN_SEL         0
-#if      (RTE_SSP1_MISO_PIN_SEL == 0)
-  #define RTE_SSP1_MISO_PIN_EN          0
-#elif    (RTE_SSP1_MISO_PIN_SEL == 1)
-  #define RTE_SSP1_MISO_PORT            0
-  #define RTE_SSP1_MISO_BIT             0
-  #define RTE_SSP1_MISO_FUNC            1
-#elif    (RTE_SSP1_MISO_PIN_SEL == 2)
-  #define RTE_SSP1_MISO_PORT            1
-  #define RTE_SSP1_MISO_BIT             3
-  #define RTE_SSP1_MISO_FUNC            5
-#elif    (RTE_SSP1_MISO_PIN_SEL == 3)
-  #define RTE_SSP1_MISO_PORT            0xF
-  #define RTE_SSP1_MISO_BIT             6
-  #define RTE_SSP1_MISO_FUNC            2
-#else
-  #error "Invalid SSP1 SSP1_MISO Pin Configuration!"
-#endif
-#ifndef   RTE_SSP1_MISO_PIN_EN
-  #define RTE_SSP1_MISO_PIN_EN          1
-#endif
-//     <o> SSP1_MOSI <0=>Not used <1=>P0_1 <2=>P1_4 <3=>PF_7
-//     <i> Master Out Slave In for SSP1
-#define   RTE_SSP1_MOSI_PIN_SEL         0
-#if      (RTE_SSP1_MOSI_PIN_SEL == 0)
-  #define RTE_SSP1_MOSI_PIN_EN          0
-#elif    (RTE_SSP1_MOSI_PIN_SEL == 1)
-  #define RTE_SSP1_MOSI_PORT            0
-  #define RTE_SSP1_MOSI_BIT             1
-  #define RTE_SSP1_MOSI_FUNC            1
-#elif    (RTE_SSP1_MOSI_PIN_SEL == 2)
-  #define RTE_SSP1_MOSI_PORT            1
-  #define RTE_SSP1_MOSI_BIT             4
-  #define RTE_SSP1_MOSI_FUNC            5
-#elif    (RTE_SSP1_MOSI_PIN_SEL == 3)
-  #define RTE_SSP1_MOSI_PORT            0xF
-  #define RTE_SSP1_MOSI_BIT             7
-  #define RTE_SSP1_MOSI_FUNC            2
-#else
-  #error "Invalid SSP1 SSP1_MOSI Pin Configuration!"
-#endif
-#ifndef   RTE_SSP1_MOSI_PIN_EN
-  #define RTE_SSP1_MOSI_PIN_EN          1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>3 (DMAMUXPER3) <1=>5 (DMAMUXPER5) <2=>12 (DMAMUXPER12) <3=>14 (DMAMUXPER14)
-//     </e>
-#define   RTE_SSP1_DMA_TX_EN            0
-#define   RTE_SSP1_DMA_TX_CH            0
-#define   RTE_SSP1_DMA_TX_PERI_ID       0
-#if      (RTE_SSP1_DMA_TX_PERI_ID == 0)
-  #define RTE_SSP1_DMA_TX_PERI          3
-  #define RTE_SSP1_DMA_TX_PERI_SEL      3
-#elif    (RTE_SSP1_DMA_TX_PERI_ID == 1)
-  #define RTE_SSP1_DMA_TX_PERI          5
-  #define RTE_SSP1_DMA_TX_PERI_SEL      2
-#elif    (RTE_SSP1_DMA_TX_PERI_ID == 2)
-  #define RTE_SSP1_DMA_TX_PERI          12
-  #define RTE_SSP1_DMA_TX_PERI_SEL      0
-#elif    (RTE_SSP1_DMA_TX_PERI_ID == 3)
-  #define RTE_SSP1_DMA_TX_PERI          14
-  #define RTE_SSP1_DMA_TX_PERI_SEL      2
-#endif
-//     <e> Rx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>4 (DMAMUXPER4) <1=>6 (DMAMUXPER6) <2=>11 (DMAMUXPER11) <3=>13 (DMAMUXPER13)
-//     </e>
-#define   RTE_SSP1_DMA_RX_EN            0
-#define   RTE_SSP1_DMA_RX_CH            1
-#define   RTE_SSP1_DMA_RX_PERI_ID       0
-#if      (RTE_SSP1_DMA_RX_PERI_ID == 0)
-  #define RTE_SSP1_DMA_RX_PERI          4
-  #define RTE_SSP1_DMA_RX_PERI_SEL      3
-#elif    (RTE_SSP1_DMA_RX_PERI_ID == 1)
-  #define RTE_SSP1_DMA_RX_PERI          6
-  #define RTE_SSP1_DMA_RX_PERI_SEL      2
-#elif    (RTE_SSP1_DMA_RX_PERI_ID == 2)
-  #define RTE_SSP1_DMA_RX_PERI          11
-  #define RTE_SSP1_DMA_RX_PERI_SEL      0
-#elif    (RTE_SSP1_DMA_RX_PERI_ID == 3)
-  #define RTE_SSP1_DMA_RX_PERI          13
-  #define RTE_SSP1_DMA_RX_PERI_SEL      2
-#endif
-//   </h> DMA
-// </e> SSP1 (Synchronous Serial Port 1) [Driver_SPI1]
-
-// <e> SPI (Serial Peripheral Interface) [Driver_SPI2]
-// <i> Configuration settings for Driver_SPI2 in component ::Drivers:SPI
-#define   RTE_SPI                       0
-
-//   <h> Pin Configuration
-//     <o> SPI_SSEL <0=>Not used <1=>P3_8
-//     <i> Slave Select for SPI
-#define   RTE_SPI_SSEL_PIN_SEL          0
-#if      (RTE_SPI_SSEL_PIN_SEL == 0)
-#define   RTE_SPI_SSEL_PIN_EN           0
-#elif    (RTE_SPI_SSEL_PIN_SEL == 1)
-  #define RTE_SPI_SSEL_PORT             3
-  #define RTE_SPI_SSEL_BIT              8
-  #define RTE_SPI_SSEL_FUNC             1
-  #define RTE_SPI_SSEL_GPIO_FUNC        4
-  #define RTE_SPI_SSEL_GPIO_PORT        5
-  #define RTE_SPI_SSEL_GPIO_BIT         11
-#else
-  #error "Invalid SPI SPI_SSEL Pin Configuration!"
-#endif
-#ifndef   RTE_SPI_SSEL_PIN_EN
-#define   RTE_SPI_SSEL_PIN_EN           1
-#endif
-//     <o> SPI_SCK <0=>P3_3
-//     <i> Serial clock for SPI
-#define   RTE_SPI_SCK_PIN_SEL           0
-#if      (RTE_SPI_SCK_PIN_SEL == 0)
-  #define RTE_SPI_SCK_PORT              3
-  #define RTE_SPI_SCK_BIT               3
-  #define RTE_SPI_SCK_FUNC              1
-#else
-  #error "Invalid SPI SPI_SCK Pin Configuration!"
-#endif
-//     <o> SPI_MISO <0=>Not used <1=>P3_6
-//     <i> Master In Slave Out for SPI
-#define   RTE_SPI_MISO_PIN_SEL          0
-#if      (RTE_SPI_MISO_PIN_SEL == 0)
-  #define RTE_SPI_MISO_PIN_EN           0
-#elif    (RTE_SPI_MISO_PIN_SEL == 1)
-  #define RTE_SPI_MISO_PORT             3
-  #define RTE_SPI_MISO_BIT              6
-  #define RTE_SPI_MISO_FUNC             1
-#else
-  #error "Invalid SPI SPI_MISO Pin Configuration!"
-#endif
-#ifndef   RTE_SPI_MISO_PIN_EN
-  #define RTE_SPI_MISO_PIN_EN           1
-#endif
-//     <o> SPI_MOSI <0=>Not used <1=>P3_7
-//     <i> Master Out Slave In for SPI
-#define   RTE_SPI_MOSI_PIN_SEL          0
-#if      (RTE_SPI_MOSI_PIN_SEL == 0)
-  #define RTE_SPI_MOSI_PIN_EN           0
-#elif    (RTE_SPI_MOSI_PIN_SEL == 1)
-  #define RTE_SPI_MOSI_PORT             3
-  #define RTE_SPI_MOSI_BIT              7
-  #define RTE_SPI_MOSI_FUNC             1
-#else
-  #error "Invalid SPI SPI_MOSI Pin Configuration!"
-#endif
-#ifndef   RTE_SPI_MOSI_PIN_EN
-  #define RTE_SPI_MOSI_PIN_EN           1
-#endif
-//   </h> Pin Configuration
-// </e> SPI (Serial Peripheral Interface) [Driver_SPI2]
-
-// <e> I2S0 (Integrated Interchip Sound 0) [Driver_SAI0]
-// <i> Configuration settings for Driver_SAI0 in component ::Drivers:SAI
-#define   RTE_I2S0                      0
-
-//   <h> Pin Configuration
-//     <o> I2S0_RX_SCK <0=>Not used <1=>P3_0 <2=>P6_0 <3=>PF_4
-//     <i> Receive clock for I2S0
-#define   RTE_I2S0_RX_SCK_PIN_SEL       2
-#if      (RTE_I2S0_RX_SCK_PIN_SEL == 0)
-#define   RTE_I2S0_RX_SCK_PIN_EN        0
-#elif    (RTE_I2S0_RX_SCK_PIN_SEL == 1)
-  #define RTE_I2S0_RX_SCK_PORT          3
-  #define RTE_I2S0_RX_SCK_BIT           0
-  #define RTE_I2S0_RX_SCK_FUNC          0
-#elif    (RTE_I2S0_RX_SCK_PIN_SEL == 2)
-  #define RTE_I2S0_RX_SCK_PORT          6
-  #define RTE_I2S0_RX_SCK_BIT           0
-  #define RTE_I2S0_RX_SCK_FUNC          4
-#elif    (RTE_I2S0_RX_SCK_PIN_SEL == 3)
-  #define RTE_I2S0_RX_SCK_PORT          0xF
-  #define RTE_I2S0_RX_SCK_BIT           4
-  #define RTE_I2S0_RX_SCK_FUNC          7
-#else
-  #error "Invalid I2S0 I2S0_RX_SCK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_RX_SCK_PIN_EN
-#define   RTE_I2S0_RX_SCK_PIN_EN        1
-#endif
-//     <o> I2S0_RX_WS <0=>Not used <1=>P3_1 <2=>P6_1
-//     <i> Receive word select for I2S0
-#define   RTE_I2S0_RX_WS_PIN_SEL        2
-#if      (RTE_I2S0_RX_WS_PIN_SEL == 0)
-#define   RTE_I2S0_RX_WS_PIN_EN         0
-#elif    (RTE_I2S0_RX_WS_PIN_SEL == 1)
-  #define RTE_I2S0_RX_WS_PORT           3
-  #define RTE_I2S0_RX_WS_BIT            1
-  #define RTE_I2S0_RX_WS_FUNC           1
-#elif    (RTE_I2S0_RX_WS_PIN_SEL == 2)
-  #define RTE_I2S0_RX_WS_PORT           6
-  #define RTE_I2S0_RX_WS_BIT            1
-  #define RTE_I2S0_RX_WS_FUNC           3
-#else
-  #error "Invalid I2S0 I2S0_RX_WS Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_RX_WS_PIN_EN
-#define   RTE_I2S0_RX_WS_PIN_EN         1
-#endif
-//     <o> I2S0_RX_SDA <0=>Not used <1=>P3_2 <2=>P6_2
-//     <i> Receive master clock for I2S0
-#define   RTE_I2S0_RX_SDA_PIN_SEL       2
-#if      (RTE_I2S0_RX_SDA_PIN_SEL == 0)
-#define   RTE_I2S0_RX_SDA_PIN_EN        0
-#elif    (RTE_I2S0_RX_SDA_PIN_SEL == 1)
-  #define RTE_I2S0_RX_SDA_PORT          3
-  #define RTE_I2S0_RX_SDA_BIT           2
-  #define RTE_I2S0_RX_SDA_FUNC          1
-#elif    (RTE_I2S0_RX_SDA_PIN_SEL == 2)
-  #define RTE_I2S0_RX_SDA_PORT          6
-  #define RTE_I2S0_RX_SDA_BIT           2
-  #define RTE_I2S0_RX_SDA_FUNC          3
-#else
-  #error "Invalid I2S0 I2S0_RX_SDA Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_RX_SDA_PIN_EN
-#define   RTE_I2S0_RX_SDA_PIN_EN       1
-#endif
-//     <o> I2S0_RX_MCLK <0=>Not used <1=>P1_19 <2=>P3_0 <3=>P6_0
-//     <i> Receive master clock for I2S0
-#define   RTE_I2S0_RX_MCLK_PIN_SEL      0
-#if      (RTE_I2S0_RX_MCLK_PIN_SEL == 0)
-#define   RTE_I2S0_RX_MCLK_PIN_EN       0
-#elif    (RTE_I2S0_RX_MCLK_PIN_SEL == 1)
-  #define RTE_I2S0_RX_MCLK_PORT         1
-  #define RTE_I2S0_RX_MCLK_BIT          19
-  #define RTE_I2S0_RX_MCLK_FUNC         6
-#elif    (RTE_I2S0_RX_MCLK_PIN_SEL == 2)
-  #define RTE_I2S0_RX_MCLK_PORT         3
-  #define RTE_I2S0_RX_MCLK_BIT          0
-  #define RTE_I2S0_RX_MCLK_FUNC         1
-#elif    (RTE_I2S0_RX_MCLK_PIN_SEL == 3)
-  #define RTE_I2S0_RX_MCLK_PORT         6
-  #define RTE_I2S0_RX_MCLK_BIT          0
-  #define RTE_I2S0_RX_MCLK_FUNC         1
-#else
-  #error "Invalid I2S0 I2S0_RX_MCLK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_RX_MCLK_PIN_EN
-#define   RTE_I2S0_RX_MCLK_PIN_EN       1
-#endif
-//     <o> I2S0_TX_SCK <0=>Not used <1=>P3_0 <2=>P4_7
-//     <i> Transmit clock for I2S0
-#define   RTE_I2S0_TX_SCK_PIN_SEL       1
-#if      (RTE_I2S0_TX_SCK_PIN_SEL == 0)
-#define   RTE_I2S0_TX_SCK_PIN_EN        0
-#elif    (RTE_I2S0_TX_SCK_PIN_SEL == 1)
-  #define RTE_I2S0_TX_SCK_PORT          3
-  #define RTE_I2S0_TX_SCK_BIT           0
-  #define RTE_I2S0_TX_SCK_FUNC          2
-#elif    (RTE_I2S0_TX_SCK_PIN_SEL == 2)
-  #define RTE_I2S0_TX_SCK_PORT          4
-  #define RTE_I2S0_TX_SCK_BIT           7
-  #define RTE_I2S0_TX_SCK_FUNC          7
-#else
-  #error "Invalid I2S0 I2S0_TX_SCK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_TX_SCK_PIN_EN
-#define   RTE_I2S0_TX_SCK_PIN_EN        1
-#endif
-//     <o> I2S0_TX_WS <0=>Not used <1=>P0_0 <2=>P3_1 <3=>P3_4 <4=>P7_1 <5=>P9_1 <6=>PC_13
-//     <i> Transmit word select for I2S0
-#define   RTE_I2S0_TX_WS_PIN_SEL        4
-#if      (RTE_I2S0_TX_WS_PIN_SEL == 0)
-#define   RTE_I2S0_TX_WS_PIN_EN         0
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 1)
-  #define RTE_I2S0_TX_WS_PORT           0
-  #define RTE_I2S0_TX_WS_BIT            0
-  #define RTE_I2S0_TX_WS_FUNC           6
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 2)
-  #define RTE_I2S0_TX_WS_PORT           3
-  #define RTE_I2S0_TX_WS_BIT            1
-  #define RTE_I2S0_TX_WS_FUNC           0
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 3)
-  #define RTE_I2S0_TX_WS_PORT           3
-  #define RTE_I2S0_TX_WS_BIT            4
-  #define RTE_I2S0_TX_WS_FUNC           5
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 4)
-  #define RTE_I2S0_TX_WS_PORT           7
-  #define RTE_I2S0_TX_WS_BIT            1
-  #define RTE_I2S0_TX_WS_FUNC           2
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 5)
-  #define RTE_I2S0_TX_WS_PORT           9
-  #define RTE_I2S0_TX_WS_BIT            1
-  #define RTE_I2S0_TX_WS_FUNC           4
-#elif    (RTE_I2S0_TX_WS_PIN_SEL == 6)
-  #define RTE_I2S0_TX_WS_PORT           0xC
-  #define RTE_I2S0_TX_WS_BIT            13
-  #define RTE_I2S0_TX_WS_FUNC           6
-#else
-  #error "Invalid I2S0 I2S0_TX_WS Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_TX_WS_PIN_EN
-#define   RTE_I2S0_TX_WS_PIN_EN         1
-#endif
-//     <o> I2S0_TX_SDA <0=>Not used <1=>P3_2 <2=>P3_5 <3=>P7_2 <4=>P9_2  <5=>PC_12
-//     <i> Transmit data for I2S0
-#define   RTE_I2S0_TX_SDA_PIN_SEL       3
-#if      (RTE_I2S0_TX_SDA_PIN_SEL == 0)
-#define   RTE_I2S0_TX_SDA_PIN_EN        0
-#elif    (RTE_I2S0_TX_SDA_PIN_SEL == 1)
-  #define RTE_I2S0_TX_SDA_PORT          3
-  #define RTE_I2S0_TX_SDA_BIT           2
-  #define RTE_I2S0_TX_SDA_FUNC          0
-#elif    (RTE_I2S0_TX_SDA_PIN_SEL == 2)
-  #define RTE_I2S0_TX_SDA_PORT          3
-  #define RTE_I2S0_TX_SDA_BIT           5
-  #define RTE_I2S0_TX_SDA_FUNC          5
-#elif    (RTE_I2S0_TX_SDA_PIN_SEL == 3)
-  #define RTE_I2S0_TX_SDA_PORT          7
-  #define RTE_I2S0_TX_SDA_BIT           2
-  #define RTE_I2S0_TX_SDA_FUNC          2
-#elif    (RTE_I2S0_TX_SDA_PIN_SEL == 4)
-  #define RTE_I2S0_TX_SDA_PORT          9
-  #define RTE_I2S0_TX_SDA_BIT           2
-  #define RTE_I2S0_TX_SDA_FUNC          4
-#elif    (RTE_I2S0_TX_SDA_PIN_SEL == 5)
-  #define RTE_I2S0_TX_SDA_PORT          0xC
-  #define RTE_I2S0_TX_SDA_BIT           12
-  #define RTE_I2S0_TX_SDA_FUNC          6
-#else
-  #error "Invalid I2S0 I2S0_TX_SDA Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_TX_SDA_PIN_EN
-#define   RTE_I2S0_TX_SDA_PIN_EN        1
-#endif
-//     <o> I2S0_TX_MCLK <0=>Not used <1=>P3_0 <2=>P3_3 <3=>PF_4 <4=>CLK2
-//     <i> Transmit master clock for I2S0
-#define   RTE_I2S0_TX_MCLK_PIN_SEL      2
-#if      (RTE_I2S0_TX_MCLK_PIN_SEL == 0)
-#define   RTE_I2S0_TX_MCLK_PIN_EN       0
-#elif    (RTE_I2S0_TX_MCLK_PIN_SEL == 1)
-  #define RTE_I2S0_TX_MCLK_PORT         3
-  #define RTE_I2S0_TX_MCLK_BIT          0
-  #define RTE_I2S0_TX_MCLK_FUNC         3
-#elif    (RTE_I2S0_TX_MCLK_PIN_SEL == 2)
-  #define RTE_I2S0_TX_MCLK_PORT         3
-  #define RTE_I2S0_TX_MCLK_BIT          3
-  #define RTE_I2S0_TX_MCLK_FUNC         6
-#elif    (RTE_I2S0_TX_MCLK_PIN_SEL == 3)
-  #define RTE_I2S0_TX_MCLK_PORT         0xf
-  #define RTE_I2S0_TX_MCLK_BIT          4
-  #define RTE_I2S0_TX_MCLK_FUNC         6
-#elif    (RTE_I2S0_TX_MCLK_PIN_SEL == 4)
-  #define RTE_I2S0_TX_MCLK_PORT         0x10
-  #define RTE_I2S0_TX_MCLK_BIT          2
-  #define RTE_I2S0_TX_MCLK_FUNC         6
-#else
-  #error "Invalid I2S0 I2S0_TX_MCLK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S0_TX_MCLK_PIN_EN
-#define   RTE_I2S0_TX_MCLK_PIN_EN       1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>9 (DMAMUXPER9)
-//     </e>
-#define   RTE_I2S0_DMA_TX_EN            0
-#define   RTE_I2S0_DMA_TX_CH            0
-#define   RTE_I2S0_DMA_TX_PERI_ID       0
-#if      (RTE_I2S0_DMA_TX_PERI_ID == 0)
-  #define RTE_I2S0_DMA_TX_PERI          9
-  #define RTE_I2S0_DMA_TX_PERI_SEL      1
-#endif
-//     <e> Rx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>10 (DMAMUXPER10)
-//     </e>
-#define   RTE_I2S0_DMA_RX_EN            0
-#define   RTE_I2S0_DMA_RX_CH            1
-#define   RTE_I2S0_DMA_RX_PERI_ID       0
-#if      (RTE_I2S0_DMA_RX_PERI_ID == 0)
-  #define RTE_I2S0_DMA_RX_PERI          10
-  #define RTE_I2S0_DMA_RX_PERI_SEL      1
-#endif
-//   </h> DMA
-// </e> I2S0 (Integrated Interchip Sound 0) [Driver_SAI0]
-
-// <e> I2S1 (Integrated Interchip Sound 1) [Driver_SAI1]
-// <i> Configuration settings for Driver_I2S1 in component ::Drivers:SAI
-#define   RTE_I2S1                      0
-
-//   <h> Pin Configuration
-//     <o> I2S1_RX_SCK <0=>Not used <1=>CLK2 <2=>CLK3
-//     <i> Receive clock for I2S1
-#define   RTE_I2S1_RX_SCK_PIN_SEL       0
-#if      (RTE_I2S1_RX_SCK_PIN_SEL == 0)
-#define   RTE_I2S1_RX_SCK_PIN_EN        0
-#elif    (RTE_I2S1_RX_SCK_PIN_SEL == 1)
-  #define RTE_I2S1_RX_SCK_PORT          0x10
-  #define RTE_I2S1_RX_SCK_BIT           2
-  #define RTE_I2S1_RX_SCK_FUNC          7
-#elif    (RTE_I2S1_RX_SCK_PIN_SEL == 2)
-  #define RTE_I2S1_RX_SCK_PORT          0x10
-  #define RTE_I2S1_RX_SCK_BIT           3
-  #define RTE_I2S1_RX_SCK_FUNC          7
-#else
-  #error "Invalid I2S1 I2S1_RX_SCK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_RX_SCK_PIN_EN
-#define   RTE_I2S1_RX_SCK_PIN_EN        1
-#endif
-//     <o> I2S1_RX_WS <0=>Not used <1=>P3_5
-//     <i> Receive word select for I2S1
-#define   RTE_I2S1_RX_WS_PIN_SEL        0
-#if      (RTE_I2S1_RX_WS_PIN_SEL == 0)
-#define   RTE_I2S1_RX_WS_PIN_EN         0
-#elif    (RTE_I2S1_RX_WS_PIN_SEL == 1)
-  #define RTE_I2S1_RX_WS_PORT           3
-  #define RTE_I2S1_RX_WS_BIT            5
-  #define RTE_I2S1_RX_WS_FUNC           6
-#else
-  #error "Invalid I2S1 I2S1_RX_WS Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_RX_WS_PIN_EN
-#define   RTE_I2S1_RX_WS_PIN_EN         1
-#endif
-//     <o> I2S1_RX_SDA <0=>Not used <1=>P3_4
-//     <i> Receive master clock for I2S1
-#define   RTE_I2S1_RX_SDA_PIN_SEL       0
-#if      (RTE_I2S1_RX_SDA_PIN_SEL == 0)
-#define   RTE_I2S1_RX_SDA_PIN_EN        0
-#elif    (RTE_I2S1_RX_SDA_PIN_SEL == 1)
-  #define RTE_I2S1_RX_SDA_PORT          3
-  #define RTE_I2S1_RX_SDA_BIT           4
-  #define RTE_I2S1_RX_SDA_FUNC          6
-#else
-  #error "Invalid I2S1 I2S1_RX_SDA Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_RX_SDA_PIN_EN
-#define   RTE_I2S1_RX_SDA_PIN_EN       1
-#endif
-//     <o> I2S1_RX_MCLK <0=>Not used <1=>PA_0
-//     <i> Receive master clock for I2S1
-#define   RTE_I2S1_RX_MCLK_PIN_SEL      0
-#if      (RTE_I2S1_RX_MCLK_PIN_SEL == 0)
-#define   RTE_I2S1_RX_MCLK_PIN_EN       0
-#elif    (RTE_I2S1_RX_MCLK_PIN_SEL == 1)
-  #define RTE_I2S1_RX_MCLK_PORT         0x0A
-  #define RTE_I2S1_RX_MCLK_BIT          0
-  #define RTE_I2S1_RX_MCLK_FUNC         5
-#else
-  #error "Invalid I2S1 I2S1_RX_MCLK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_RX_MCLK_PIN_EN
-#define   RTE_I2S1_RX_MCLK_PIN_EN       1
-#endif
-//     <o> I2S1_TX_SCK <0=>Not used <1=>P1_19 <2=>P3_3 <3=>P4_7
-//     <i> Transmit clock for I2S1
-#define   RTE_I2S1_TX_SCK_PIN_SEL       0
-#if      (RTE_I2S1_TX_SCK_PIN_SEL == 0)
-#define   RTE_I2S1_TX_SCK_PIN_EN        0
-#elif    (RTE_I2S1_TX_SCK_PIN_SEL == 1)
-  #define RTE_I2S1_TX_SCK_PORT          1
-  #define RTE_I2S1_TX_SCK_BIT           19
-  #define RTE_I2S1_TX_SCK_FUNC          7
-#elif    (RTE_I2S1_TX_SCK_PIN_SEL == 2)
-  #define RTE_I2S1_TX_SCK_PORT          3
-  #define RTE_I2S1_TX_SCK_BIT           3
-  #define RTE_I2S1_TX_SCK_FUNC          7
-#elif    (RTE_I2S1_TX_SCK_PIN_SEL == 3)
-  #define RTE_I2S1_TX_SCK_PORT          4
-  #define RTE_I2S1_TX_SCK_BIT           7
-  #define RTE_I2S1_TX_SCK_FUNC          6
-#else
-  #error "Invalid I2S1 I2S1_TX_SCK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_TX_SCK_PIN_EN
-#define   RTE_I2S1_TX_SCK_PIN_EN        1
-#endif
-//     <o> I2S1_TX_WS <0=>Not used <1=>P0_0 <2=>PF_7
-//     <i> Transmit word select for I2S1
-#define   RTE_I2S1_TX_WS_PIN_SEL        0
-#if      (RTE_I2S1_TX_WS_PIN_SEL == 0)
-#define   RTE_I2S1_TX_WS_PIN_EN         0
-#elif    (RTE_I2S1_TX_WS_PIN_SEL == 1)
-  #define RTE_I2S1_TX_WS_PORT           0
-  #define RTE_I2S1_TX_WS_BIT            0
-  #define RTE_I2S1_TX_WS_FUNC           7
-#elif    (RTE_I2S1_TX_WS_PIN_SEL == 2)
-  #define RTE_I2S1_TX_WS_PORT           0x0F
-  #define RTE_I2S1_TX_WS_BIT            7
-  #define RTE_I2S1_TX_WS_FUNC           7
-#else
-  #error "Invalid I2S1 I2S1_TX_WS Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_TX_WS_PIN_EN
-#define   RTE_I2S1_TX_WS_PIN_EN         1
-#endif
-//     <o> I2S1_TX_SDA <0=>Not used <1=>P0_1 <2=>PF_6
-//     <i> Transmit data for I2S
-#define   RTE_I2S1_TX_SDA_PIN_SEL       0
-#if      (RTE_I2S1_TX_SDA_PIN_SEL == 0)
-#define   RTE_I2S1_TX_SDA_PIN_EN        0
-#elif    (RTE_I2S1_TX_SDA_PIN_SEL == 1)
-  #define RTE_I2S1_TX_SDA_PORT          0
-  #define RTE_I2S1_TX_SDA_BIT           1
-  #define RTE_I2S1_TX_SDA_FUNC          7
-#elif    (RTE_I2S1_TX_SDA_PIN_SEL == 2)
-  #define RTE_I2S1_TX_SDA_PORT          0x0F
-  #define RTE_I2S1_TX_SDA_BIT           6
-  #define RTE_I2S1_TX_SDA_FUNC          7
-#else
-  #error "Invalid I2S1 I2S1_TX_SDA Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_TX_SDA_PIN_EN
-#define   RTE_I2S1_TX_SDA_PIN_EN        1
-#endif
-//     <o> I2S1_TX_MCLK <0=>Not used <1=>P8_8 <2=>PF_0 <3=>CLK1
-//     <i> Transmit master clock for I2S1
-#define   RTE_I2S1_TX_MCLK_PIN_SEL      0
-#if      (RTE_I2S1_TX_MCLK_PIN_SEL == 0)
-#define   RTE_I2S1_TX_MCLK_PIN_EN       0
-#elif    (RTE_I2S1_TX_MCLK_PIN_SEL == 1)
-  #define RTE_I2S1_TX_MCLK_PORT         8
-  #define RTE_I2S1_TX_MCLK_BIT          8
-  #define RTE_I2S1_TX_MCLK_FUNC         7
-#elif    (RTE_I2S1_TX_MCLK_PIN_SEL == 2)
-  #define RTE_I2S1_TX_MCLK_PORT         0x0F
-  #define RTE_I2S1_TX_MCLK_BIT          0
-  #define RTE_I2S1_TX_MCLK_FUNC         7
-#elif    (RTE_I2S1_TX_MCLK_PIN_SEL == 3)
-  #define RTE_I2S1_TX_MCLK_PORT         0x10
-  #define RTE_I2S1_TX_MCLK_BIT          1
-  #define RTE_I2S1_TX_MCLK_FUNC         7
-#else
-  #error "Invalid I2S1 I2S1_TX_MCLK Pin Configuration!"
-#endif
-#ifndef   RTE_I2S1_TX_MCLK_PIN_EN
-#define   RTE_I2S1_TX_MCLK_PIN_EN       1
-#endif
-//   </h> Pin Configuration
-
-//   <h> DMA
-//     <e> Tx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>3 (DMAMUXPER3)
-//     </e>
-#define   RTE_I2S1_DMA_TX_EN            0
-#define   RTE_I2S1_DMA_TX_CH            0
-#define   RTE_I2S1_DMA_TX_PERI_ID       0
-#if      (RTE_I2S1_DMA_TX_PERI_ID == 0)
-  #define RTE_I2S1_DMA_TX_PERI          3
-  #define RTE_I2S1_DMA_TX_PERI_SEL      2
-#endif
-//     <e> Rx
-//       <o1> Channel     <0=>0 <1=>1 <2=>2 <3=>3 <4=>4 <5=>5 <6=>6 <7=>7
-//       <o2> Peripheral  <0=>4 (DMAMUXPER4)
-//     </e>
-#define   RTE_I2S1_DMA_RX_EN            0
-#define   RTE_I2S1_DMA_RX_CH            1
-#define   RTE_I2S1_DMA_RX_PERI_ID       0
-#if      (RTE_I2S1_DMA_RX_PERI_ID == 0)
-  #define RTE_I2S1_DMA_RX_PERI          4
-  #define RTE_I2S1_DMA_RX_PERI_SEL      2
-#endif
-//   </h> DMA
-// </e> I2S1 (Integrated Interchip Sound 1) [Driver_SAI1]
-
-// <e> CAN0 Controller [Driver_CAN0]
-// <i> Configuration settings for Driver_CAN0 in component ::Drivers:CAN
-#define   RTE_CAN_CAN0                  0
-
-//   <h> Pin Configuration
-//     <o> CAN0_RD <0=>Not used <1=>P3_1 <2=>PE_2
-//     <i> CAN0 receiver input.
-#define   RTE_CAN0_RD_ID                0
-#if      (RTE_CAN0_RD_ID == 0)
-  #define RTE_CAN0_RD_PIN_EN            0
-#elif    (RTE_CAN0_RD_ID == 1)
-  #define RTE_CAN0_RD_PORT              3
-  #define RTE_CAN0_RD_BIT               1
-  #define RTE_CAN0_RD_FUNC              2
-#elif    (RTE_CAN0_RD_ID == 2)
-  #define RTE_CAN0_RD_PORT              0xE
-  #define RTE_CAN0_RD_BIT               2
-  #define RTE_CAN0_RD_FUNC              1
-#else
-  #error "Invalid RTE_CAN0_RD Pin Configuration!"
-#endif
-#ifndef   RTE_CAN0_RD_PIN_EN
-  #define RTE_CAN0_RD_PIN_EN            1
-#endif
-//     <o> CAN0_TD <0=>Not used <1=>P3_2 <2=>PE_3
-//     <i> CAN0 transmitter output.
-#define   RTE_CAN0_TD_ID                0
-#if      (RTE_CAN0_TD_ID == 0)
-  #define RTE_CAN0_TD_PIN_EN            0
-#elif    (RTE_CAN0_TD_ID == 1)
-  #define RTE_CAN0_TD_PORT              3
-  #define RTE_CAN0_TD_BIT               2
-  #define RTE_CAN0_TD_FUNC              2
-#elif    (RTE_CAN0_TD_ID == 2)
-  #define RTE_CAN0_TD_PORT              0xE
-  #define RTE_CAN0_TD_BIT               3
-  #define RTE_CAN0_TD_FUNC              1
-#else
-  #error "Invalid RTE_CAN0_TD Pin Configuration!"
-#endif
-#ifndef   RTE_CAN0_TD_PIN_EN
-  #define RTE_CAN0_TD_PIN_EN            1
-#endif
-//   </h> Pin Configuration
-// </e> CAN0 Controller [Driver_CAN0]
-
-// <e> CAN1 Controller [Driver_CAN1]
-// <i> Configuration settings for Driver_CAN1 in component ::Drivers:CAN
-#define   RTE_CAN_CAN1                  0
-
-//   <h> Pin Configuration
-//     <o> CAN1_RD <0=>Not used <1=>P1_18 <2=>P4_9 <3=>PE_1
-//     <i> CAN1 receiver input.
-#define   RTE_CAN1_RD_ID                0
-#if      (RTE_CAN1_RD_ID == 0)
-  #define RTE_CAN1_RD_PIN_EN            0
-#elif    (RTE_CAN1_RD_ID == 1)
-  #define RTE_CAN1_RD_PORT              1
-  #define RTE_CAN1_RD_BIT               18
-  #define RTE_CAN1_RD_FUNC              5
-#elif    (RTE_CAN1_RD_ID == 2)
-  #define RTE_CAN1_RD_PORT              4
-  #define RTE_CAN1_RD_BIT               9
-  #define RTE_CAN1_RD_FUNC              6
-#elif    (RTE_CAN1_RD_ID == 3)
-  #define RTE_CAN1_RD_PORT              0xE
-  #define RTE_CAN1_RD_BIT               1
-  #define RTE_CAN1_RD_FUNC              5
-#else
-  #error "Invalid RTE_CAN1_RD Pin Configuration!"
-#endif
-#ifndef   RTE_CAN1_RD_PIN_EN
-  #define RTE_CAN1_RD_PIN_EN            1
-#endif
-//     <o> CAN1_TD <0=>Not used <1=>P1_17 <2=>P4_8 <3=>PE_0
-//     <i> CAN1 transmitter output.
-#define   RTE_CAN1_TD_ID                0
-#if      (RTE_CAN1_TD_ID == 0)
-  #define RTE_CAN1_TD_PIN_EN            0
-#elif    (RTE_CAN1_TD_ID == 1)
-  #define RTE_CAN1_TD_PORT              1
-  #define RTE_CAN1_TD_BIT               17
-  #define RTE_CAN1_TD_FUNC              5
-#elif    (RTE_CAN1_TD_ID == 2)
-  #define RTE_CAN1_TD_PORT              4
-  #define RTE_CAN1_TD_BIT               8
-  #define RTE_CAN1_TD_FUNC              6
-#elif    (RTE_CAN1_TD_ID == 3)
-  #define RTE_CAN1_TD_PORT              0xE
-  #define RTE_CAN1_TD_BIT               0
-  #define RTE_CAN1_TD_FUNC              5
-#else
-  #error "Invalid RTE_CAN1_TD Pin Configuration!"
-#endif
-#ifndef   RTE_CAN1_TD_PIN_EN
-  #define RTE_CAN1_TD_PIN_EN            1
-#endif
-//   </h> Pin Configuration
-// </e> CAN1 Controller [Driver_CAN1]
-
-
-#endif  /* __RTE_DEVICE_H */

+ 0 - 167
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/USB/USBD_Config_HID_0.h

@@ -1,167 +0,0 @@
-/*------------------------------------------------------------------------------
- * MDK Middleware - Component ::USB:Device
- * Copyright (c) 2004-2020 Arm Limited (or its affiliates). All rights reserved.
- *------------------------------------------------------------------------------
- * Name:    USBD_Config_HID_0.h
- * Purpose: USB Device Human Interface Device class (HID) Configuration
- * Rev.:    V5.0.2
- *----------------------------------------------------------------------------*/
-
-//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
-
-// <h>USB Device: Human Interface Device class (HID) 0
-//   <o>Assign Device Class to USB Device # <0-3>
-//   <i>Select USB Device that is used for this Device Class instance
-#define USBD_HID0_DEV                             0
-
-//   <h>Interrupt Endpoint Settings
-//   <i>By default, the settings match the first USB Class instance in a USB Device.
-//   <i>Endpoint conflicts are flagged by compile-time error messages.
-//
-//     <h>Interrupt IN Endpoint Settings
-//       <o.0..3>Interrupt IN Endpoint Number
-//                 <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
-//         <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
-#define USBD_HID0_EP_INT_IN                       1
-
-//       <h>Endpoint Settings
-//         <i>Parameters are used to create Endpoint Descriptors
-//         <i>and for memory allocation in the USB component.
-//
-//         <h>Full/Low-speed (High-speed disabled)
-//         <i>Parameters apply when High-speed is disabled in USBD_Config_n.c
-//           <o.0..6>Maximum Endpoint Packet Size (in bytes) <0-64>
-//           <i>Specifies the physical packet size used for information exchange.
-//           <i>Maximum value is 64.
-#define USBD_HID0_EP_INT_IN_WMAXPACKETSIZE        64
-
-//           <o.0..7>Endpoint polling Interval (in ms) <1-255>
-//           <i>Specifies the frequency of requests initiated by USB Host for getting data.
-#define USBD_HID0_EP_INT_IN_BINTERVAL             1
-
-//         </h>
-
-//         <h>High-speed
-//         <i>Parameters apply when High-speed is enabled in USBD_Config_n.c
-//
-//           <o.0..10>Maximum Endpoint Packet Size (in bytes) <0-1024>
-//           <i>Specifies the physical packet size used for information exchange.
-//           <i>Maximum value is 1024.
-//           <o.11..12>Additional transactions per microframe
-//           <i>Additional transactions improve communication performance.
-//             <0=>None <1=>1 additional <2=>2 additional
-#define USBD_HID0_EP_INT_IN_HS_WMAXPACKETSIZE     64
-
-//           <o.0..4>Endpoint polling Interval (in 125 us intervals)
-//           <i>Specifies the frequency of requests initiated by USB Host for getting data.
-//             <1=>    1 <2=>    2 <3=>     4 <4=>     8
-//             <5=>   16 <6=>   32 <7=>    64 <8=>   128
-//             <9=>  256 <10=> 512 <11=> 1024 <12=> 2048
-//             <13=>4096 <14=>8192 <15=>16384 <16=>32768
-#define USBD_HID0_EP_INT_IN_HS_BINTERVAL          1
-
-//         </h>
-//       </h>
-//     </h>
-
-//     <h>Interrupt OUT Endpoint Settings
-//       <o.0..3>Interrupt OUT Endpoint Number
-//         <i>When OUT Endpoint is set to "Not used" the USB Host uses
-//         <i>the Control Endpoint 0 for Out Reports.
-//         <0=>Not used
-//                 <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
-//         <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
-#define USBD_HID0_EP_INT_OUT                      1
-
-//       <h>Endpoint Settings
-//         <i>Parameters are used to create USB Descriptors, HID Device Descriptor
-//         <i>and for memory allocation in the USB component.
-//
-//         <h>Full/Low-speed (High-speed disabled)
-//         <i>Parameters apply when High-speed is disabled in USBD_Config_n.c
-//           <o.0..6>Maximum Endpoint Packet Size (in bytes) <0-64>
-//           <i>Specifies the physical packet size used for information exchange.
-//           <i>Maximum value is 64.
-#define USBD_HID0_EP_INT_OUT_WMAXPACKETSIZE       64
-
-//           <o.0..7>Endpoint polling Interval (in ms) <1-255>
-//           <i>Specifies the frequency of requests sent by USB Host for setting data.
-#define USBD_HID0_EP_INT_OUT_BINTERVAL            1
-
-//         </h>
-
-//         <h>High-speed
-//         <i>Parameters apply when High-speed is enabled in USBD_Config_n.c
-//
-//           <o.0..10>Maximum Endpoint Packet Size (in bytes) <0-1024>
-//           <i>Specifies the physical packet size used for information exchange.
-//           <i>Maximum value is 1024.
-//           <o.11..12>Additional transactions per microframe
-//           <i>Additional transactions improve communication performance.
-//             <0=>None <1=>1 additional <2=>2 additional
-#define USBD_HID0_EP_INT_OUT_HS_WMAXPACKETSIZE    64
-
-//           <o.0..4>Endpoint polling Interval (in 125 us intervals)
-//           <i>Specifies the frequency of requests sent by USB Host for setting data.
-//             <1=>    1 <2=>    2 <3=>     4 <4=>     8
-//             <5=>   16 <6=>   32 <7=>    64 <8=>   128
-//             <9=>  256 <10=> 512 <11=> 1024 <12=> 2048
-//             <13=>4096 <14=>8192 <15=>16384 <16=>32768
-#define USBD_HID0_EP_INT_OUT_HS_BINTERVAL         1
-
-//         </h>
-//       </h>
-//     </h>
-//   </h>
-
-//   <h>Human Interface Device Class Settings
-//   <i>Parameters are used to create USB Descriptors, USB HID Report Descriptor
-//   <i>and for memory allocation in the USB component.
-//
-//     <s.126>HID Interface String
-#define USBD_HID0_STR_DESC                        L"LPC-Link2 CMSIS-DAP"
-
-//     <o.0..4>Number of Input Reports <1-32>
-//     <i>Configures max 'rid' value for USBD_HID0_GetReport and USBD_HID_GetReportTrigger
-#define USBD_HID0_IN_REPORT_NUM                   1
-
-//     <o.0..4>Number of Output Reports <1-32>
-//     <i>Configures max 'rid' value for USBD_HID0_SetReport
-#define USBD_HID0_OUT_REPORT_NUM                  1
-
-//     <o.0..15>Maximum Input Report Size (in bytes) <1-65535>
-//     <i>Allocates memory and configures 'len' value for USBD_HID0_GetReport
-//     <i>and USBD_HID_GetReportTrigger
-#define USBD_HID0_IN_REPORT_MAX_SZ                1024
-
-//     <o.0..15>Maximum Output Report Size (in bytes) <1-65535>
-//     <i>Allocates memory and configures 'len' value for USBD_HID0_SetReport
-//     <i>when rtype=HID_REPORT_OUTPUT.
-#define USBD_HID0_OUT_REPORT_MAX_SZ               1024
-
-//     <o.0..15>Maximum Feature Report Size (in bytes) <1-65535>
-//     <i>Allocates memory and configures 'len' value for USBD_HID0_SetReport
-//     <i>when rtype=HID_REPORT_FEATURE
-#define USBD_HID0_FEAT_REPORT_MAX_SZ              1
-
-//     <e.0>Use User Provided HID Report Descriptor
-//     <i>User needs to provide HID Report Descriptor in array
-//     <i>const uint8_t usbd_hid0_report_descriptor[]
-#define USBD_HID0_USER_REPORT_DESCRIPTOR          0
-
-//       <o>User Provided HID Report Descriptor Size (in bytes) <1-65535>
-#define USBD_HID0_USER_REPORT_DESCRIPTOR_SIZE     33
-
-//     </e>
-//   </h>
-
-//   <h>OS Resources Settings
-//   <i>These settings are used to optimize usage of OS resources.
-//     <o>Human Interface Device Class Thread Stack Size <64-65536>
-#define USBD_HID0_THREAD_STACK_SIZE               512
-
-//        Human Interface Device Class Thread Priority
-#define USBD_HID0_THREAD_PRIORITY                 osPriorityAboveNormal
-
-//   </h>
-// </h>

+ 0 - 246
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/USBD_User_HID_0.c

@@ -1,246 +0,0 @@
-/*------------------------------------------------------------------------------
- * MDK Middleware - Component ::USB:Device
- * Copyright (c) 2004-2017 ARM Germany GmbH. All rights reserved.
- *------------------------------------------------------------------------------
- * Name:    USBD_User_HID_0.c
- * Purpose: USB Device Human Interface Device class (HID) User module
- * Rev.:    V6.2.3
- *----------------------------------------------------------------------------*/
-/**
- * \addtogroup usbd_hidFunctions
- *
- * USBD_User_HID_0.c implements the application specific functionality of the
- * HID class and is used to receive and send data reports to the USB Host.
- *
- * The implementation must match the configuration file USBD_Config_HID_0.h.
- * The following values in USBD_Config_HID_0.h affect the user code:
- *
- *  - 'Endpoint polling Interval' specifies the frequency of requests
- *    initiated by USB Host for \ref USBD_HIDn_GetReport.
- *
- *  - 'Number of Output Reports' configures the values for \em rid of
- *    \ref USBD_HIDn_SetReport.
- *
- *  - 'Number of Input Reports' configures the values for \em rid of
- *    \ref USBD_HIDn_GetReport and \ref USBD_HID_GetReportTrigger.
- *
- *  - 'Maximum Input Report Size' specifies the maximum value for:
- *       - return of \ref USBD_HIDn_GetReport
- *       - len of \ref USBD_HID_GetReportTrigger.
- *
- *  - 'Maximum Output Report Size' specifies the maximum value for \em len
- *    in \ref USBD_HIDn_SetReport for rtype=HID_REPORT_OUTPUT
- *
- *  - 'Maximum Feature Report Size' specifies the maximum value for \em len
- *    in \ref USBD_HIDn_SetReport for rtype=HID_REPORT_FEATURE
- *
- */
-
-
-//! [code_USBD_User_HID]
-
-#include <stdint.h>
-#include <string.h>
-#include "cmsis_os2.h"
-#define   osObjectsExternal
-#include "osObjects.h"
-#include "rl_usb.h"
-#include "RTE\USB\USBD_Config_HID_0.h"
-#include "DAP_config.h"
-#include "DAP.h"
-
-
-#if (USBD_HID0_OUT_REPORT_MAX_SZ != DAP_PACKET_SIZE)
-#error "USB HID0 Output Report Size must match DAP Packet Size"
-#endif
-#if (USBD_HID0_IN_REPORT_MAX_SZ != DAP_PACKET_SIZE)
-#error "USB HID Input Report Size must match DAP Packet Size"
-#endif
-
-static volatile uint16_t USB_RequestIndexI;     // Request  Index In
-static volatile uint16_t USB_RequestIndexO;     // Request  Index Out
-static volatile uint16_t USB_RequestCountI;     // Request  Count In
-static volatile uint16_t USB_RequestCountO;     // Request  Count Out
-
-static volatile uint16_t USB_ResponseIndexI;    // Response Index In
-static volatile uint16_t USB_ResponseIndexO;    // Response Index Out
-static volatile uint16_t USB_ResponseCountI;    // Response Count In
-static volatile uint16_t USB_ResponseCountO;    // Response Count Out
-static volatile uint8_t  USB_ResponseIdle;      // Response Idle  Flag
-
-static uint8_t  USB_Request [DAP_PACKET_COUNT][DAP_PACKET_SIZE];  // Request  Buffer
-static uint8_t  USB_Response[DAP_PACKET_COUNT][DAP_PACKET_SIZE];  // Response Buffer
-
-
-// Called during USBD_Initialize to initialize the USB HID class instance.
-void USBD_HID0_Initialize (void) {
-  // Initialize variables
-  USB_RequestIndexI  = 0U;
-  USB_RequestIndexO  = 0U;
-  USB_RequestCountI  = 0U;
-  USB_RequestCountO  = 0U;
-  USB_ResponseIndexI = 0U;
-  USB_ResponseIndexO = 0U;
-  USB_ResponseCountI = 0U;
-  USB_ResponseCountO = 0U;
-  USB_ResponseIdle   = 1U;
-}
-
-
-// Called during USBD_Uninitialize to de-initialize the USB HID class instance.
-void USBD_HID0_Uninitialize (void) {
-}
-
-
-// \brief Prepare HID Report data to send.
-// \param[in]   rtype   report type:
-//                - HID_REPORT_INPUT           = input report requested
-//                - HID_REPORT_FEATURE         = feature report requested
-// \param[in]   req     request type:
-//                - USBD_HID_REQ_EP_CTRL       = control endpoint request
-//                - USBD_HID_REQ_PERIOD_UPDATE = idle period expiration request
-//                - USBD_HID_REQ_EP_INT        = previously sent report on interrupt endpoint request
-// \param[in]   rid     report ID (0 if only one report exists).
-// \param[out]  buf     buffer containing report data to send.
-// \return              number of report data bytes prepared to send or invalid report requested.
-//              - value >= 0: number of report data bytes prepared to send
-//              - value = -1: invalid report requested
-int32_t USBD_HID0_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf) {
-  (void)rid;
-
-  switch (rtype) {
-    case HID_REPORT_INPUT:
-      switch (req) {
-        case USBD_HID_REQ_EP_CTRL:        // Explicit USB Host request via Control OUT Endpoint
-        case USBD_HID_REQ_PERIOD_UPDATE:  // Periodic USB Host request via Interrupt OUT Endpoint
-          break;
-        case USBD_HID_REQ_EP_INT:         // Called after USBD_HID_GetReportTrigger to signal data obtained.
-          if (USB_ResponseCountI != USB_ResponseCountO) {
-            // Load data from response buffer to be sent back
-            memcpy(buf, USB_Response[USB_ResponseIndexO], DAP_PACKET_SIZE);
-            USB_ResponseIndexO++;
-            if (USB_ResponseIndexO == DAP_PACKET_COUNT) {
-              USB_ResponseIndexO = 0U;
-            }
-            USB_ResponseCountO++;
-            return ((int32_t)DAP_PACKET_SIZE);
-          } else {
-            USB_ResponseIdle = 1U;
-          }
-          break;
-      }
-      break;
-    case HID_REPORT_FEATURE:
-      break;
-  }
-  return (0);
-}
-
-
-// \brief Process received HID Report data.
-// \param[in]   rtype   report type:
-//                - HID_REPORT_OUTPUT    = output report received
-//                - HID_REPORT_FEATURE   = feature report received
-// \param[in]   req     request type:
-//                - USBD_HID_REQ_EP_CTRL = report received on control endpoint
-//                - USBD_HID_REQ_EP_INT  = report received on interrupt endpoint
-// \param[in]   rid     report ID (0 if only one report exists).
-// \param[in]   buf     buffer that receives report data.
-// \param[in]   len     length of received report data.
-// \return      true    received report data processed.
-// \return      false   received report data not processed or request not supported.
-bool USBD_HID0_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len) {
-  (void)req;
-  (void)rid;
-
-  switch (rtype) {
-    case HID_REPORT_OUTPUT:
-      if (len == 0) {
-        break;
-      }
-      if (buf[0] == ID_DAP_TransferAbort) {
-        DAP_TransferAbort = 1U;
-        break;
-      }
-      if ((uint16_t)(USB_RequestCountI - USB_RequestCountO) == DAP_PACKET_COUNT) {
-        osThreadFlagsSet(DAP_ThreadId, 0x80U);
-        break;  // Discard packet when buffer is full
-      }
-      // Store received data into request buffer
-      memcpy(USB_Request[USB_RequestIndexI], buf, (uint32_t)len);
-      USB_RequestIndexI++;
-      if (USB_RequestIndexI == DAP_PACKET_COUNT) {
-        USB_RequestIndexI = 0U;
-      }
-      USB_RequestCountI++;
-      osThreadFlagsSet(DAP_ThreadId, 0x01U);
-      break;
-    case HID_REPORT_FEATURE:
-      break;
-  }
-  return true;
-}
-
-
-// DAP Thread.
-__NO_RETURN void DAP_Thread (void *argument) {
-  uint32_t flags;
-  uint32_t n;
-  (void)   argument;
-
-  for (;;) {
-    osThreadFlagsWait(0x81U, osFlagsWaitAny, osWaitForever);
-
-    // Process pending requests
-    while (USB_RequestCountI != USB_RequestCountO) {
-
-      // Handle Queue Commands
-      n = USB_RequestIndexO;
-      while (USB_Request[n][0] == ID_DAP_QueueCommands) {
-        USB_Request[n][0] = ID_DAP_ExecuteCommands;
-        n++;
-        if (n == DAP_PACKET_COUNT) {
-          n = 0U;
-        }
-        if (n == USB_RequestIndexI) {
-          flags = osThreadFlagsWait(0x81U, osFlagsWaitAny, osWaitForever);
-          if (flags & 0x80U) {
-            break;
-          }
-        }
-      }
-
-      // Execute DAP Command (process request and prepare response)
-      DAP_ExecuteCommand(USB_Request[USB_RequestIndexO], USB_Response[USB_ResponseIndexI]);
-
-      // Update Request Index and Count
-      USB_RequestIndexO++;
-      if (USB_RequestIndexO == DAP_PACKET_COUNT) {
-        USB_RequestIndexO = 0U;
-      }
-      USB_RequestCountO++;
-
-      // Update Response Index and Count
-      USB_ResponseIndexI++;
-      if (USB_ResponseIndexI == DAP_PACKET_COUNT) {
-        USB_ResponseIndexI = 0U;
-      }
-      USB_ResponseCountI++;
-
-      if (USB_ResponseIdle) {
-        if (USB_ResponseCountI != USB_ResponseCountO) {
-          // Load data from response buffer to be sent back
-          n = USB_ResponseIndexO++;
-          if (USB_ResponseIndexO == DAP_PACKET_COUNT) {
-            USB_ResponseIndexO = 0U;
-          }
-          USB_ResponseCountO++;
-          USB_ResponseIdle = 0U;
-          USBD_HID_GetReportTrigger(0U, 0U, USB_Response[n], DAP_PACKET_SIZE);
-        }
-      }
-    }
-  }
-}
-
-//! [code_USBD_User_HID]

+ 0 - 8
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/Abstract.txt

@@ -1,8 +0,0 @@
-CMSIS-DAP V2 USB WinUSB Firmware for NXP LPC-Link2 debug probe.
-
-Following targets are available:
- - LPC-Link2: stand-alone debug probe
- - LPC-Link2 on-board: on-board debug probe (LPC55S69-EVK, MIMXRT1064-EVK, ...)
-
-CMSIS-DAP with default V2 configuration uses WinUSB interface to host PC and is therefore faster. 
-Optionally support for streaming SWO trace is provided via an additional USB endpoint.

+ 0 - 43
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/DebugConfig/LPC-Link2_LPC4370_Cortex-M4.dbgconf

@@ -1,43 +0,0 @@
-// <<< Use Configuration Wizard in Context Menu >>>
-
-// <h> Debug Setup
-
-// <o> Release M0 On Connect
-//   <0=> No
-//   <1=> Yes
-// <i> Debugger releases the M0 Application processor from reset when connecting to it.
-ReleaseM0OnConnect = 1;
-
-// <o> Release M0 Sub-System On Connect
-//   <0=> No
-//   <1=> Yes
-// <i> Debugger releases the M0 Sub-System from reset when connecting to it (LPC437x only).
-ReleaseM0SubOnConnect = 1;
-
-// <o> Vector Reset
-//   <0=> Processor Only
-//   <1=> Processor and Peripherals
-// <i> Select if to additionally reset peripherals (LCD, USB0, USB1, DMA, SDIO, ETHERNET) after a Vector Reset
-VecResetWithPeriph = 1;
-
-// </h>
-
-// <h> TPIU Pin Routing (TRACECLK fixed on PF_4)
-// <i> Configure the TPIU pin routing as used on your target platform.
-// <o.1> TRACEDATA0
-//   <0=> Pin PF_5
-//   <1=> Pin P7_4
-// <o.2> TRACEDATA1
-//   <0=> Pin PF_6
-//   <1=> Pin P7_5
-// <o.3> TRACEDATA2
-//   <0=> Pin PF_7
-//   <1=> Pin P7_6
-// <o.4> TRACEDATA3
-//   <0=> Pin PF_8
-//   <1=> Pin P7_7
-RoutingTPIU = 0x00000000;
-
-// </h>
-
-// <<< end of configuration section >>>

+ 0 - 333
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4370_Cortex-M4/startup_LPC43xx.s

@@ -1,333 +0,0 @@
-;/**************************************************************************//**
-; * @file     LPC43xx.s
-; * @brief    CMSIS Cortex-M4 Core Device Startup File for
-; *           NXP LPC43xxDevice Series
-; * @version  V1.00
-; * @date     03. September 2013
-; *
-; * @note
-; * Copyright (C) 2009-2013 ARM Limited. All rights reserved.
-; *
-; * @par
-; * ARM Limited (ARM) is supplying this software for use with Cortex-M
-; * processor based microcontrollers.  This file can be freely distributed
-; * within development tools that are supporting such ARM based processors.
-; *
-; * @par
-; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
-; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
-; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
-; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
-; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
-; *
-; * <<< Use Configuration Wizard in Context Menu >>>   
-; ******************************************************************************/
-
-; <h> Stack Configuration
-;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Stack_Size      EQU     0x00000400
-
-                AREA    STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem       SPACE   Stack_Size
-__initial_sp
-
-; <h> Heap Configuration
-;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-; </h>
-
-Heap_Size       EQU     0x00000000
-
-                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
-
-Sign_Value      EQU     0x5A5A5A5A
-
-__Vectors       DCD     __initial_sp                            ;  0  Top of Stack
-                DCD     Reset_Handler                           ;  1  Reset Handler
-                DCD     NMI_Handler                             ;  2  NMI Handler
-                DCD     HardFault_Handler                       ;  3  Hard Fault Handler
-                DCD     MemManage_Handler                       ;  4  MPU Fault Handler
-                DCD     BusFault_Handler                        ;  5  Bus Fault Handler
-                DCD     UsageFault_Handler                      ;  6  Usage Fault Handler
-                DCD     Sign_Value                              ;  7  Reserved
-                DCD     0                                       ;  8  Reserved
-                DCD     0                                       ;  9  Reserved
-                DCD     0                                       ; 10  Reserved
-                DCD     SVC_Handler                             ; 11  SVCall Handler
-                DCD     DebugMon_Handler                        ; 12  Debug Monitor Handler
-                DCD     0                                       ; 13  Reserved
-                DCD     PendSV_Handler                          ; 14  PendSV Handler
-                DCD     SysTick_Handler                         ; 15  SysTick Handler
-
-                ; External LPC43xx/M4 Interrupts
-                DCD     DAC_IRQHandler                          ;  0  DAC interrupt
-                DCD     M0APP_IRQHandler                        ;  1  Cortex-M0APP; Latched TXEV; for M4-M0APP communication
-                DCD     DMA_IRQHandler                          ;  2  DMA interrupt
-                DCD     0                                       ;  3  Reserved
-                DCD     FLASHEEPROM_IRQHandler                  ;  4  flash bank A, flash bank B, EEPROM ORed interrupt
-                DCD     ETHERNET_IRQHandler                     ;  5  Ethernet interrupt
-                DCD     SDIO_IRQHandler                         ;  6  SD/MMC interrupt
-                DCD     LCD_IRQHandler                          ;  7  LCD interrupt
-                DCD     USB0_IRQHandler                         ;  8  OTG interrupt
-                DCD     USB1_IRQHandler                         ;  9  USB1 interrupt
-                DCD     SCT_IRQHandler                          ; 10  SCT combined interrupt
-                DCD     RITIMER_IRQHandler                      ; 11  RI Timer interrupt
-                DCD     TIMER0_IRQHandler                       ; 12  Timer 0 interrupt
-                DCD     TIMER1_IRQHandler                       ; 13  Timer 1 interrupt
-                DCD     TIMER2_IRQHandler                       ; 14  Timer 2 interrupt
-                DCD     TIMER3_IRQHandler                       ; 15  Timer 3 interrupt
-                DCD     MCPWM_IRQHandler                        ; 16  Motor control PWM interrupt
-                DCD     ADC0_IRQHandler                         ; 17  ADC0 interrupt
-                DCD     I2C0_IRQHandler                         ; 18  I2C0 interrupt
-                DCD     I2C1_IRQHandler                         ; 19  I2C1 interrupt
-                DCD     SPI_IRQHandler                          ; 20  SPI interrupt
-                DCD     ADC1_IRQHandler                         ; 21  ADC1 interrupt
-                DCD     SSP0_IRQHandler                         ; 22  SSP0 interrupt
-                DCD     SSP1_IRQHandler                         ; 23  SSP1 interrupt
-                DCD     USART0_IRQHandler                       ; 24  USART0 interrupt
-                DCD     UART1_IRQHandler                        ; 25  Combined UART1, Modem interrupt
-                DCD     USART2_IRQHandler                       ; 26  USART2 interrupt
-                DCD     USART3_IRQHandler                       ; 27  Combined USART3, IrDA interrupt
-                DCD     I2S0_IRQHandler                         ; 28  I2S0 interrupt
-                DCD     I2S1_IRQHandler                         ; 29  I2S1 interrupt
-                DCD     SPIFI_IRQHandler                        ; 30  SPISI interrupt
-                DCD     SGPIO_IRQHandler                        ; 31  SGPIO interrupt
-                DCD     PIN_INT0_IRQHandler                     ; 32  GPIO pin interrupt 0
-                DCD     PIN_INT1_IRQHandler                     ; 33  GPIO pin interrupt 1
-                DCD     PIN_INT2_IRQHandler                     ; 34  GPIO pin interrupt 2
-                DCD     PIN_INT3_IRQHandler                     ; 35  GPIO pin interrupt 3
-                DCD     PIN_INT4_IRQHandler                     ; 36  GPIO pin interrupt 4
-                DCD     PIN_INT5_IRQHandler                     ; 37  GPIO pin interrupt 5
-                DCD     PIN_INT6_IRQHandler                     ; 38  GPIO pin interrupt 6
-                DCD     PIN_INT7_IRQHandler                     ; 39  GPIO pin interrupt 7
-                DCD     GINT0_IRQHandler                        ; 40  GPIO global interrupt 0
-                DCD     GINT1_IRQHandler                        ; 41  GPIO global interrupt 1
-                DCD     EVENTROUTER_IRQHandler                  ; 42  Event router interrupt
-                DCD     C_CAN1_IRQHandler                       ; 43  C_CAN1 interrupt
-                DCD     0                                       ; 44  Reserved
-                DCD     ADCHS_IRQHandler                        ; 45  ADCHS combined interrupt
-                DCD     ATIMER_IRQHandler                       ; 46  Alarm timer interrupt
-                DCD     RTC_IRQHandler                          ; 47  RTC interrupt
-                DCD     0                                       ; 48  Reserved
-                DCD     WWDT_IRQHandler                         ; 49  WWDT interrupt
-                DCD     M0SUB_IRQHandler                        ; 50  TXEV instruction from the M0 subsystem core interrupt
-                DCD     C_CAN0_IRQHandler                       ; 51  C_CAN0 interrupt
-                DCD     QEI_IRQHandler                          ; 52  QEI interrupt
-
-
-;CRP address at offset 0x2FC relative to the BOOT Bank address
-                IF      :LNOT::DEF:NO_CRP
-                SPACE   (0x2FC - (. - __Vectors))
-;                EXPORT  CRP_Key
-CRP_Key         DCD     0xFFFFFFFF
-;                       0xFFFFFFFF => CRP Disabled
-;                       0x12345678 => CRP Level 1
-;                       0x87654321 => CRP Level 2
-;                       0x43218765 => CRP Level 3 (ARE YOU SURE?)
-;                       0x4E697370 => NO ISP      (ARE YOU SURE?)
-                ENDIF
-
-                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  DAC_IRQHandler                      [WEAK]
-                EXPORT  M0APP_IRQHandler                    [WEAK]
-                EXPORT  DMA_IRQHandler                      [WEAK]
-                EXPORT  FLASHEEPROM_IRQHandler              [WEAK]
-                EXPORT  ETHERNET_IRQHandler                 [WEAK]
-                EXPORT  SDIO_IRQHandler                     [WEAK]
-                EXPORT  LCD_IRQHandler                      [WEAK]
-                EXPORT  USB0_IRQHandler                     [WEAK]
-                EXPORT  USB1_IRQHandler                     [WEAK]
-                EXPORT  SCT_IRQHandler                      [WEAK]
-                EXPORT  RITIMER_IRQHandler                  [WEAK]
-                EXPORT  TIMER0_IRQHandler                   [WEAK]
-                EXPORT  TIMER1_IRQHandler                   [WEAK]
-                EXPORT  TIMER2_IRQHandler                   [WEAK]
-                EXPORT  TIMER3_IRQHandler                   [WEAK]
-                EXPORT  MCPWM_IRQHandler                    [WEAK]
-                EXPORT  ADC0_IRQHandler                     [WEAK]
-                EXPORT  I2C0_IRQHandler                     [WEAK]
-                EXPORT  I2C1_IRQHandler                     [WEAK]
-                EXPORT  SPI_IRQHandler                      [WEAK]
-                EXPORT  ADC1_IRQHandler                     [WEAK]
-                EXPORT  SSP0_IRQHandler                     [WEAK]
-                EXPORT  SSP1_IRQHandler                     [WEAK]
-                EXPORT  USART0_IRQHandler                   [WEAK]
-                EXPORT  UART1_IRQHandler                    [WEAK]
-                EXPORT  USART2_IRQHandler                   [WEAK]
-                EXPORT  USART3_IRQHandler                   [WEAK]
-                EXPORT  I2S0_IRQHandler                     [WEAK]
-                EXPORT  I2S1_IRQHandler                     [WEAK]
-                EXPORT  SPIFI_IRQHandler                    [WEAK]
-                EXPORT  SGPIO_IRQHandler                    [WEAK]
-                EXPORT  PIN_INT0_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT1_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT2_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT3_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT4_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT5_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT6_IRQHandler                 [WEAK]
-                EXPORT  PIN_INT7_IRQHandler                 [WEAK]
-                EXPORT  GINT0_IRQHandler                    [WEAK]
-                EXPORT  GINT1_IRQHandler                    [WEAK]
-                EXPORT  EVENTROUTER_IRQHandler              [WEAK]
-                EXPORT  C_CAN1_IRQHandler                   [WEAK]
-                EXPORT  ADCHS_IRQHandler                    [WEAK]
-                EXPORT  ATIMER_IRQHandler                   [WEAK]
-                EXPORT  RTC_IRQHandler                      [WEAK]
-                EXPORT  WWDT_IRQHandler                     [WEAK]
-                EXPORT  M0SUB_IRQHandler                    [WEAK]
-                EXPORT  C_CAN0_IRQHandler                   [WEAK]
-                EXPORT  QEI_IRQHandler                      [WEAK]
-
-DAC_IRQHandler
-M0APP_IRQHandler
-DMA_IRQHandler
-FLASHEEPROM_IRQHandler
-ETHERNET_IRQHandler
-SDIO_IRQHandler
-LCD_IRQHandler
-USB0_IRQHandler
-USB1_IRQHandler
-SCT_IRQHandler
-RITIMER_IRQHandler
-TIMER0_IRQHandler
-TIMER1_IRQHandler
-TIMER2_IRQHandler
-TIMER3_IRQHandler
-MCPWM_IRQHandler
-ADC0_IRQHandler
-I2C0_IRQHandler
-I2C1_IRQHandler
-SPI_IRQHandler
-ADC1_IRQHandler
-SSP0_IRQHandler
-SSP1_IRQHandler
-USART0_IRQHandler
-UART1_IRQHandler
-USART2_IRQHandler
-USART3_IRQHandler
-I2S0_IRQHandler
-I2S1_IRQHandler
-SPIFI_IRQHandler
-SGPIO_IRQHandler
-PIN_INT0_IRQHandler
-PIN_INT1_IRQHandler
-PIN_INT2_IRQHandler
-PIN_INT3_IRQHandler
-PIN_INT4_IRQHandler
-PIN_INT5_IRQHandler
-PIN_INT6_IRQHandler
-PIN_INT7_IRQHandler
-GINT0_IRQHandler
-GINT1_IRQHandler
-EVENTROUTER_IRQHandler
-C_CAN1_IRQHandler
-ADCHS_IRQHandler
-ATIMER_IRQHandler
-RTC_IRQHandler
-WWDT_IRQHandler
-M0SUB_IRQHandler
-C_CAN0_IRQHandler
-QEI_IRQHandler
-
-                B       .
-                ENDP
-
-                ALIGN
-
-; User Initial Stack & Heap
-
-                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

+ 0 - 938
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/Device/LPC4370_Cortex-M4/system_LPC43xx.c

@@ -1,938 +0,0 @@
-/* -----------------------------------------------------------------------------
- * Copyright (c) 2013 - 2017 ARM Ltd.
- *
- * This software is provided 'as-is', without any express or implied warranty.
- * In no event will the authors be held liable for any damages arising from
- * the use of this software. Permission is granted to anyone to use this
- * software for any purpose, including commercial applications, and to alter
- * it and redistribute it freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software in
- *    a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- *
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- *
- * 3. This notice may not be removed or altered from any source distribution.
- *
- * $Date:        10. September 2018
- * $Revision:    V1.0.3
- *
- * Project:      NXP LPC43xx System initialization
- * -------------------------------------------------------------------------- */
-
-#include "LPC43xx.h"
-
-/*----------------------------------------------------------------------------
-  This file configures the clocks as follows:
- -----------------------------------------------------------------------------
- Clock Unit  |  Output clock  |  Source clock  |          Note
- -----------------------------------------------------------------------------
-   PLL0USB   |    480 MHz     |      XTAL      | External crystal @ 12 MHz
- -----------------------------------------------------------------------------
-    PLL1     |    180 MHz     |      XTAL      | External crystal @ 12 MHz
- -----------------------------------------------------------------------------
-    CPU      |    180 MHz     |      PLL1      | CPU Clock ==  BASE_M4_CLK
- -----------------------------------------------------------------------------
-   IDIV A    |     60 MHz     |      PLL1      | To the USB1 peripheral
- -----------------------------------------------------------------------------
-   IDIV B    |     25 MHz     |   ENET_TX_CLK  | ENET_TX_CLK @ 50MHz
- -----------------------------------------------------------------------------
-   IDIV C    |     12 MHz     |      IRC       | Internal oscillator @ 12 MHz
- -----------------------------------------------------------------------------
-   IDIV D    |     12 MHz     |      IRC       | Internal oscillator @ 12 MHz
- -----------------------------------------------------------------------------
-   IDIV E    |    5.3 MHz     |      PLL1      | To the LCD controller
- -----------------------------------------------------------------------------*/
-
-
-/*----------------------------------------------------------------------------
-  Clock source selection definitions (do not change)
- *----------------------------------------------------------------------------*/
-#define CLK_SRC_32KHZ       0x00
-#define CLK_SRC_IRC         0x01
-#define CLK_SRC_ENET_RX     0x02
-#define CLK_SRC_ENET_TX     0x03
-#define CLK_SRC_GP_CLKIN    0x04
-#define CLK_SRC_XTAL        0x06
-#define CLK_SRC_PLL0U       0x07
-#define CLK_SRC_PLL0A       0x08
-#define CLK_SRC_PLL1        0x09
-#define CLK_SRC_IDIVA       0x0C
-#define CLK_SRC_IDIVB       0x0D
-#define CLK_SRC_IDIVC       0x0E
-#define CLK_SRC_IDIVD       0x0F
-#define CLK_SRC_IDIVE       0x10
-
-
-/*----------------------------------------------------------------------------
-  Define external input frequency values
- *----------------------------------------------------------------------------*/
-#define CLK_32KHZ            32768UL    /* 32 kHz oscillator frequency        */
-#define CLK_IRC           12000000UL    /* Internal oscillator frequency      */
-#define CLK_ENET_RX       50000000UL    /* Ethernet Rx frequency              */
-#define CLK_ENET_TX       50000000UL    /* Ethernet Tx frequency              */
-#define CLK_GP_CLKIN      12000000UL    /* General purpose clock input freq.  */
-#define CLK_XTAL          12000000UL    /* Crystal oscilator frequency        */
-
-
-/*----------------------------------------------------------------------------
-  Define clock sources
- *----------------------------------------------------------------------------*/
-#define PLL1_CLK_SEL      CLK_SRC_XTAL    /* PLL1 input clock: XTAL           */
-#define PLL0USB_CLK_SEL   CLK_SRC_XTAL    /* PLL0USB input clock: XTAL        */
-#define IDIVA_CLK_SEL     CLK_SRC_PLL1    /* IDIVA input clock: PLL1          */
-#define IDIVB_CLK_SEL     CLK_SRC_ENET_TX /* IDIVB input clock: ENET TX       */
-#define IDIVC_CLK_SEL     CLK_SRC_IRC     /* IDIVC input clock: IRC           */
-#define IDIVD_CLK_SEL     CLK_SRC_IRC     /* IDIVD input clock: IRC           */
-#define IDIVE_CLK_SEL     CLK_SRC_PLL1    /* IDIVD input clock: PLL1          */
-
-
-/*----------------------------------------------------------------------------
-  Configure integer divider values
- *----------------------------------------------------------------------------*/
-#define IDIVA_IDIV        2             /* Divide input clock by 3            */
-#define IDIVB_IDIV        1             /* Divide input clock by 2            */
-#define IDIVC_IDIV        0             /* Divide input clock by 1            */
-#define IDIVD_IDIV        0             /* Divide input clock by 1            */
-#define IDIVE_IDIV       33             /* Divide input clock by 34           */
-
-
-/*----------------------------------------------------------------------------
-  Define CPU clock input
- *----------------------------------------------------------------------------*/
-#define CPU_CLK_SEL       CLK_SRC_PLL1  /* Default CPU clock source is PLL1   */
-
-
-/*----------------------------------------------------------------------------
-  Configure external memory controller options
- *----------------------------------------------------------------------------*/
-#define USE_EXT_STAT_MEM_CS0 1          /* Use ext. static  memory with CS0   */
-#define USE_EXT_DYN_MEM_CS0  1          /* Use ext. dynamic memory with CS0   */
-
-
-/*----------------------------------------------------------------------------
- * Configure PLL1
- *----------------------------------------------------------------------------
- * Integer mode:
- *    - PLL1_DIRECT = 0 (Post divider enabled)
- *    - PLL1_FBSEL  = 1 (Feedback divider runs from PLL output)
- *    - Output frequency:
- *                        FCLKOUT = (FCLKIN / N) * M
- *                        FCCO    = FCLKOUT * 2 * P
- *
- * Non-integer:
- *    - PLL1_DIRECT = 0 (Post divider enabled)
- *    - PLL1_FBSEL  = 0 (Feedback divider runs from CCO clock)
- *    - Output frequency:
- *                        FCLKOUT = (FCLKIN / N) * M / (2 * P)
- *                        FCCO    = FCLKOUT * 2 * P
- *
- * Direct mode:
- *    - PLL1_DIRECT = 1         (Post divider disabled)
- *    - PLL1_FBSEL  = dont care (Feedback divider runs from CCO clock)
- *    - Output frequency:
- *                        FCLKOUT = (FCLKIN / N) * M
- *                        FCCO    = FCLKOUT
- *
- *----------------------------------------------------------------------------
- * PLL1 requirements:
- * | Frequency |  Minimum  |  Maximum  |               Note                   |
- * |  FCLKIN   |    1MHz   |   25MHz   |   Clock source is external crystal   |
- * |  FCLKIN   |    1MHz   |   50MHz   |                                      |
- * |   FCCO    |  156MHz   |  320MHz   |                                      |
- * |  FCLKOUT  | 9.75MHz   |  320MHz   |                                      |
- *----------------------------------------------------------------------------
- * Configuration examples:
- * | Fclkout |  Fcco  |  N  |  M  |  P  | DIRECT | FBSEL | BYPASS |
- * |  36MHz | 288MHz |  1  |  24 |  4  |   0    |   0   |    0   |
- * |  72MHz | 288MHz |  1  |  24 |  2  |   0    |   0   |    0   |
- * | 100MHz | 200MHz |  3  |  50 |  1  |   0    |   0   |    0   |
- * | 120MHz | 240MHz |  1  |  20 |  1  |   0    |   0   |    0   |
- * | 160MHz | 160MHz |  3  |  40 |  x  |   1    |   0   |    0   |
- * | 180MHz | 180MHz |  1  |  15 |  x  |   1    |   0   |    0   |
- * | 204MHz | 204MHz |  1  |  17 |  x  |   1    |   0   |    0   |
- *----------------------------------------------------------------------------
- * Relations beetwen PLL dividers and definitions:
- * N = PLL1_NSEL + 1,     M = PLL1_MSEL + 1,     P = 2 ^ PLL1_PSEL
- *----------------------------------------------------------------------------*/
-
-/* PLL1 output clock: 180MHz, Fcco: 180MHz, N = 1, M = 15, P = x              */
-#define PLL1_NSEL   0           /* Range [0 -   3]: Pre-divider ratio N       */
-#define PLL1_MSEL  14           /* Range [0 - 255]: Feedback-divider ratio M  */
-#define PLL1_PSEL   0           /* Range [0 -   3]: Post-divider ratio P      */
-
-#define PLL1_BYPASS 0           /* 0: Use PLL, 1: PLL is bypassed             */
-#define PLL1_DIRECT 1           /* 0: Use PSEL, 1: Don't use PSEL             */
-#define PLL1_FBSEL  0           /* 0: FCCO is used as PLL feedback            */
-                                /* 1: FCLKOUT is used as PLL feedback         */
-
-/*----------------------------------------------------------------------------
- * Configure Flash Accelerator
- *----------------------------------------------------------------------------
- * Flash acces time:
- * |  CPU clock   | FLASHTIM |
- * | up to  21MHz |    0     |
- * | up to  43MHz |    1     |
- * | up to  64MHz |    2     |
- * | up to  86MHz |    3     |
- * | up to 107MHz |    4     |
- * | up to 129MHz |    5     |
- * | up to 150MHz |    6     |
- * | up to 172MHz |    7     |
- * | up to 193MHz |    8     |
- * | up to 204MHz |    9     |
- *----------------------------------------------------------------------------*/
-#define FLASHCFG_FLASHTIM   9
-
-
-/*----------------------------------------------------------------------------
- * Configure PLL0USB
- *----------------------------------------------------------------------------
- *
- *   Normal operating mode without post-divider and without pre-divider
- *    - PLL0USB_DIRECTI = 1
- *    - PLL0USB_DIRECTO = 1
- *    - PLL0USB_BYPASS  = 0
- *    - Output frequency:
- *                        FOUT = FIN * 2 * M
- *                        FCCO = FOUT
- *
- *   Normal operating mode with post-divider and without pre-divider
- *    - PLL0USB_DIRECTI = 1
- *    - PLL0USB_DIRECTO = 0
- *    - PLL0USB_BYPASS  = 0
- *    - Output frequency:
- *                        FOUT = FIN * (M / P)
- *                        FCCO = FOUT * 2 * P
- *
- *   Normal operating mode without post-divider and with pre-divider
- *    - PLL0USB_DIRECTI = 0
- *    - PLL0USB_DIRECTO = 1
- *    - PLL0USB_BYPASS  = 0
- *    - Output frequency:
- *                        FOUT = FIN * 2 * M / N
- *                        FCCO = FOUT
- *
- *   Normal operating mode with post-divider and with pre-divider
- *    - PLL0USB_DIRECTI = 0
- *    - PLL0USB_DIRECTO = 0
- *    - PLL0USB_BYPASS  = 0
- *    - Output frequency:
- *                        FOUT = FIN * M / (P * N)
- *                        FCCO = FOUT * 2 * P
- *----------------------------------------------------------------------------
- * PLL0 requirements:
- * | Frequency |  Minimum  |  Maximum  |               Note                   |
- * |  FCLKIN   |   14kHz   |   25MHz   |   Clock source is external crystal   |
- * |  FCLKIN   |   14kHz   |  150MHz   |                                      |
- * |   FCCO    |  275MHz   |  550MHz   |                                      |
- * |  FCLKOUT  |  4.3MHz   |  550MHz   |                                      |
- *----------------------------------------------------------------------------
- * Configuration examples:
- * | Fclkout |  Fcco  |  N  |  M  |  P  | DIRECTI | DIRECTO | BYPASS |
- * | 120MHz | 480MHz |  x  |  20 |  2  |    1    |    0    |    0   |
- * | 480MHz | 480MHz |  1  |  20 |  1  |    1    |    1    |    0   |
- *----------------------------------------------------------------------------*/
-
-/* PLL0USB output clock: 480MHz, Fcco: 480MHz, N = 1, M = 20, P = 1           */
-#define PLL0USB_N       1       /* Range [1 -  256]: Pre-divider              */
-#define PLL0USB_M      20       /* Range [1 - 2^15]: Feedback-divider         */
-#define PLL0USB_P       1       /* Range [1 -   32]: Post-divider             */
-
-#define PLL0USB_DIRECTI 1       /* 0: Use N_DIV, 1: Don't use N_DIV           */
-#define PLL0USB_DIRECTO 1       /* 0: Use P_DIV, 1: Don't use P_DIV           */
-#define PLL0USB_BYPASS  0       /* 0: Use PLL, 1: PLL is bypassed             */
-
-
-/*----------------------------------------------------------------------------
-  End of configuration
- *----------------------------------------------------------------------------*/
-
-/* PLL0 Setting Check */
-#if (PLL0USB_BYPASS == 0)
- #if (PLL0USB_CLK_SEL == CLK_SRC_XTAL)
-  #define PLL0USB_CLKIN CLK_XTAL
- #else
-  #define PLL0USB_CLKIN CLK_IRC
- #endif
-
- #if   ((PLL0USB_DIRECTI == 1) && (PLL0USB_DIRECTO == 1)) /* Mode 1a          */
-  #define PLL0USB_FOUT (PLL0USB_CLKIN * 2 * PLL0USB_M)
-  #define PLL0USB_FCCO (PLL0USB_FOUT)
- #elif ((PLL0USB_DIRECTI == 1) && (PLL0USB_DIRECTO == 0)) /* Mode 1b          */
-  #define PLL0USB_FOUT (PLL0USB_CLKIN * PLL0USB_M / PLL0USB_P)
-  #define PLL0USB_FCCO (PLL0USB_FOUT * 2 * PLL0USB_P)
- #elif ((PLL0USB_DIRECTI == 0) && (PLL0USB_DIRECTO == 1)) /* Mode 1c          */
-  #define PLL0USB_FOUT (PLL0USB_CLKIN * 2 * PLL0USB_M / PLL0USB_N)
-  #define PLL0USB_FCCO (PLL0USB_FOUT)
- #else                                                    /* Mode 1d          */
-  #define PLL0USB_FOUT (PLL0USB_CLKIN * PLL0USB_M / (PLL0USB_P * PLL0USB_N))
-  #define PLL0USB_FCCO (PLL0USB_FOUT * 2 * PLL0USB_P)
- #endif
-
- #if (PLL0USB_FCCO < 275000000UL || PLL0USB_FCCO > 550000000UL)
-  #error "PLL0USB Fcco frequency out of range! (275MHz >= Fcco <= 550MHz)"
- #endif
- #if (PLL0USB_FOUT < 4300000UL || PLL0USB_FOUT > 550000000UL)
-  #error "PLL0USB output frequency out of range! (4.3MHz >= Fclkout <= 550MHz)"
- #endif
-#endif
-
-/* PLL1 Setting Check */
-#if (PLL1_BYPASS == 0)
- #if (PLL1_CLK_SEL == CLK_SRC_XTAL)
-  #define PLL1_CLKIN CLK_XTAL
- #else
-  #define PLL1_CLKIN CLK_IRC
- #endif
-
- #if   (PLL1_DIRECT == 1)               /* Direct Mode                        */
-  #define PLL1_FCCO ((PLL1_MSEL + 1) * (PLL1_CLKIN / (PLL1_NSEL + 1)))
-  #define PLL1_FOUT ((PLL1_MSEL + 1) * (PLL1_CLKIN / (PLL1_NSEL + 1)))
- #elif (PLL1_FBSEL  == 1)               /* Integer Mode                       */
-  #define PLL1_FCCO ((2 * (1 << PLL1_PSEL)) * (PLL1_MSEL + 1) * (PLL1_CLKIN / (PLL1_NSEL + 1)))
-  #define PLL1_FOUT ((PLL1_MSEL + 1) * (PLL1_CLKIN / (PLL1_NSEL + 1)))
- #else                                  /* Noninteger Mode                    */
-  #define PLL1_FCCO ((PLL1_MSEL + 1) * (PLL1_CLKIN / (PLL1_NSEL + 1)))
-  #define PLL1_FOUT (PLL1_FCCO / (2 * (1 << PLL1_PSEL)))
- #endif
- #if (PLL1_FCCO < 156000000UL || PLL1_FCCO > 320000000UL)
-  #error "PLL1 Fcco frequency out of range! (156MHz >= Fcco <= 320MHz)"
- #endif
- #if (PLL1_FOUT < 9750000UL || PLL1_FOUT > 204000000UL)
-  #error "PLL1 output frequency out of range! (9.75MHz >= Fclkout <= 204MHz)"
- #endif
-#endif
-
-
-/*----------------------------------------------------------------------------
-  System Core Clock variable
- *----------------------------------------------------------------------------*/
-uint32_t SystemCoreClock = 180000000U; /* System Clock Frequency (Core Clock) */
-
-
-/******************************************************************************
- * SetClock
- ******************************************************************************/
-void SetClock (void) {
-  uint32_t x, i;
-  uint32_t selp, seli;
-
-
-  /* Set flash accelerator configuration for bank A and B to reset value      */
-  LPC_CREG->FLASHCFGA |= (0xF << 12);
-  LPC_CREG->FLASHCFGB |= (0xF << 12);
-
-  /* Set flash wait states to maximum                                         */
-  LPC_EMC->STATICWAITRD0  = 0x1F;
-
-  /* Switch BASE_M4_CLOCK to IRC                                              */
-  LPC_CGU->BASE_M4_CLK = (0x01        << 11) |  /* Autoblock En               */
-                         (CLK_SRC_IRC << 24) ;  /* Set clock source           */
-
-  /* Configure input to crystal oscilator                                     */
-  LPC_CGU->XTAL_OSC_CTRL = (0 << 0) |   /* Enable oscillator-pad              */
-                           (0 << 1) |   /* Operation with crystal connected   */
-                           (0 << 2) ;   /* Low-frequency mode                 */
-
-  /* Wait ~250us @ 12MHz */
-  for (i = 1500; i; i--);
-
-#if (USE_SPIFI)
-/* configure SPIFI clk to IRC via IDIVA (later IDIVA is configured to PLL1/3) */
-  LPC_CGU->IDIVA_CTRL     = (0              <<  0) |  /* Disable Power-down   */
-                            (0              <<  2) |  /* IDIV                 */
-                            (1              << 11) |  /* Autoblock En         */
-                            (CLK_SRC_IRC    << 24) ;  /* Clock source         */
-
-  LPC_CGU->BASE_SPIFI_CLK = (0              <<  0) |  /* Disable Power-down   */
-                            (0              <<  2) |  /* IDIV                 */
-                            (1              << 11) |  /* Autoblock En         */
-                            (CLK_SRC_IDIVA  << 24) ;  /* Clock source         */
-#endif
-
-/*----------------------------------------------------------------------------
-  PLL1 Setup
- *----------------------------------------------------------------------------*/
-  /* Power down PLL                                                           */
-  LPC_CGU->PLL1_CTRL |= 1;
-
-#if ((PLL1_FOUT > 110000000UL) && (CPU_CLK_SEL == CLK_SRC_PLL1))
-  /* To run at full speed, CPU must first run at an intermediate speed        */
-  LPC_CGU->PLL1_CTRL = (0            << 0) | /* PLL1 Enabled                  */
-                       (PLL1_BYPASS  << 1) | /* CCO out sent to post-dividers */
-                       (PLL1_FBSEL   << 6) | /* PLL output used as feedback   */
-                       (0            << 7) | /* Direct on/off                 */
-                       (PLL1_PSEL    << 8) | /* PSEL                          */
-                       (0            << 11)| /* Autoblock Disabled            */
-                       (PLL1_NSEL    << 12)| /* NSEL                          */
-                       (PLL1_MSEL    << 16)| /* MSEL                          */
-                       (PLL1_CLK_SEL << 24); /* Clock source                  */
-  /* Wait for lock                                                            */
-  while (!(LPC_CGU->PLL1_STAT & 1));
-
-  /* CPU base clock is in the mid frequency range before final clock set      */
-  LPC_CGU->BASE_M4_CLK     = (0x01 << 11) |  /* Autoblock En                  */
-                             (0x09 << 24) ;  /* Clock source: PLL1            */
-
-  /* Max. BASE_M4_CLK frequency here is 102MHz, wait at least 20us */
-  for (i = 1050; i; i--);                    /* Wait minimum 2100 cycles      */
-#endif
-  /* Configure PLL1                                                           */
-  LPC_CGU->PLL1_CTRL = (0            << 0) | /* PLL1 Enabled                  */
-                       (PLL1_BYPASS  << 1) | /* CCO out sent to post-dividers */
-                       (PLL1_FBSEL   << 6) | /* PLL output used as feedback   */
-                       (PLL1_DIRECT  << 7) | /* Direct on/off                 */
-                       (PLL1_PSEL    << 8) | /* PSEL                          */
-                       (1            << 11)| /* Autoblock En                  */
-                       (PLL1_NSEL    << 12)| /* NSEL                          */
-                       (PLL1_MSEL    << 16)| /* MSEL                          */
-                       (PLL1_CLK_SEL << 24); /* Clock source                  */
-
-  /* Wait for lock                                                            */
-  while (!(LPC_CGU->PLL1_STAT & 1));
-
-  /* Set CPU base clock source                                                */
-  LPC_CGU->BASE_M4_CLK = (0x01        << 11) |  /* Autoblock En               */
-                         (CPU_CLK_SEL << 24) ;  /* Set clock source           */
-
-  /* Set flash accelerator configuration for internal flash bank A and B      */
-  LPC_CREG->FLASHCFGA = (LPC_CREG->FLASHCFGA & (~0x0000F000)) | (FLASHCFG_FLASHTIM << 12);
-  LPC_CREG->FLASHCFGB = (LPC_CREG->FLASHCFGB & (~0x0000F000)) | (FLASHCFG_FLASHTIM << 12);
-
-/*----------------------------------------------------------------------------
-  PLL0USB Setup
- *----------------------------------------------------------------------------*/
-
-  /* Power down PLL0USB                                                       */
-  LPC_CGU->PLL0USB_CTRL  |= 1;
-
-  /* M divider                                                                */
-  x = 0x00004000;
-  switch (PLL0USB_M) {
-    case 0:  x = 0xFFFFFFFF;
-      break;
-    case 1:  x = 0x00018003;
-      break;
-    case 2:  x = 0x00010003;
-      break;
-    default:
-      for (i = PLL0USB_M; i <= 0x8000; i++) {
-        x = (((x ^ (x >> 1)) & 1) << 14) | ((x >> 1) & 0x3FFF);
-      }
-  }
-
-  if (PLL0USB_M < 60) selp = (PLL0USB_M >> 1) + 1;
-  else        selp = 31;
-
-  if      (PLL0USB_M > 16384) seli = 1;
-  else if (PLL0USB_M >  8192) seli = 2;
-  else if (PLL0USB_M >  2048) seli = 4;
-  else if (PLL0USB_M >=  501) seli = 8;
-  else if (PLL0USB_M >=   60) seli = 4 * (1024 / (PLL0USB_M + 9));
-  else                        seli = (PLL0USB_M & 0x3C) + 4;
-  LPC_CGU->PLL0USB_MDIV   =  (selp   << 17) |
-                             (seli   << 22) |
-                             (x      <<  0);
-
-  /* N divider                                                                */
-  x = 0x80;
-  switch (PLL0USB_N) {
-    case 0:  x = 0xFFFFFFFF;
-      break;
-    case 1:  x = 0x00000302;
-      break;
-    case 2:  x = 0x00000202;
-      break;
-    default:
-      for (i = PLL0USB_N; i <= 0x0100; i++) {
-        x =(((x ^ (x >> 2) ^ (x >> 3) ^ (x >> 4)) & 1) << 7) | ((x >> 1) & 0x7F);
-      }
-  }
-  LPC_CGU->PLL0USB_NP_DIV = (x << 12);
-
-  /* P divider                                                                */
-  x = 0x10;
-  switch (PLL0USB_P) {
-    case 0:  x = 0xFFFFFFFF;
-      break;
-    case 1:  x = 0x00000062;
-      break;
-    case 2:  x = 0x00000042;
-      break;
-    default:
-      for (i = PLL0USB_P; i <= 0x200; i++) {
-        x = (((x ^ (x >> 2)) & 1) << 4) | ((x >> 1) &0x0F);
-      }
-  }
-  LPC_CGU->PLL0USB_NP_DIV |= x;
-
-  LPC_CGU->PLL0USB_CTRL  = (PLL0USB_CLK_SEL   << 24) | /* Clock source sel    */
-                           (1                 << 11) | /* Autoblock En        */
-                           (1                 << 4 ) | /* PLL0USB clock en    */
-                           (PLL0USB_DIRECTO   << 3 ) | /* Direct output       */
-                           (PLL0USB_DIRECTI   << 2 ) | /* Direct input        */
-                           (PLL0USB_BYPASS    << 1 ) | /* PLL bypass          */
-                           (0                 << 0 ) ; /* PLL0USB Enabled     */
-  while (!(LPC_CGU->PLL0USB_STAT & 1));
-
-
-/*----------------------------------------------------------------------------
-  Integer divider Setup
- *----------------------------------------------------------------------------*/
-
-  /* Configure integer dividers                                               */
-  LPC_CGU->IDIVA_CTRL = (0              <<  0) |  /* Disable Power-down       */
-                        (IDIVA_IDIV     <<  2) |  /* IDIV                     */
-                        (1              << 11) |  /* Autoblock En             */
-                        (IDIVA_CLK_SEL  << 24) ;  /* Clock source             */
-
-  LPC_CGU->IDIVB_CTRL = (0              <<  0) |  /* Disable Power-down       */
-                        (IDIVB_IDIV     <<  2) |  /* IDIV                     */
-                        (1              << 11) |  /* Autoblock En             */
-                        (IDIVB_CLK_SEL  << 24) ;  /* Clock source             */
-
-  LPC_CGU->IDIVC_CTRL = (0              <<  0) |  /* Disable Power-down       */
-                        (IDIVC_IDIV     <<  2) |  /* IDIV                     */
-                        (1              << 11) |  /* Autoblock En             */
-                        (IDIVC_CLK_SEL  << 24) ;  /* Clock source             */
-
-  LPC_CGU->IDIVD_CTRL = (0              <<  0) |  /* Disable Power-down       */
-                        (IDIVD_IDIV     <<  2) |  /* IDIV                     */
-                        (1              << 11) |  /* Autoblock En             */
-                        (IDIVD_CLK_SEL  << 24) ;  /* Clock source             */
-
-  LPC_CGU->IDIVE_CTRL = (0              <<  0) |  /* Disable Power-down       */
-                        (IDIVE_IDIV     <<  2) |  /* IDIV                     */
-                        (1              << 11) |  /* Autoblock En             */
-                        (IDIVE_CLK_SEL  << 24) ;  /* Clock source             */
-}
-
-
-/*----------------------------------------------------------------------------
-  Approximate delay function (must be used after SystemCoreClockUpdate() call)
- *----------------------------------------------------------------------------*/
-#define CPU_NANOSEC(x) (((uint64_t)(x) * SystemCoreClock)/1000000000)
-
-static void WaitUs (uint32_t us) {
-  uint32_t cyc = us * CPU_NANOSEC(1000)/4;
-  while(cyc--);
-}
-
-
-/*----------------------------------------------------------------------------
-  External Memory Controller Definitions
- *----------------------------------------------------------------------------*/
-#define SDRAM_ADDR_BASE 0x28000000      /* SDRAM base address                 */
-/* Write Mode register macro                                                  */
-#define WR_MODE(x) (*((volatile uint32_t *)(SDRAM_ADDR_BASE | (x))))
-
-/* Pin Settings: Glith filter DIS, Input buffer EN, Fast Slew Rate, No Pullup */
-#define EMC_PIN_SET ((1 << 7) | (1 << 6) | (1 << 5) | (1 << 4))
-#define EMC_NANOSEC(ns, freq, div) (((uint64_t)(ns) * ((freq)/((div)+1)))/1000000000)
-
-#define EMC_CLK_DLY_TIM_2  (0x7777)     /* 3.5 ns delay for the EMC clock out */
-#define EMC_CLK_DLY_TIM_0  (0x0000)     /* No delay for the EMC clock out     */
-
-typedef void (*emcdivby2) (volatile uint32_t *creg6, volatile uint32_t *emcdiv, uint32_t cfg);
-
-const uint16_t emcdivby2_opc[] =  {
-  0x6803,        /*      LDR  R3,[R0,#0]      ; Load CREG6          */
-  0xF443,0x3380, /*      ORR  R3,R3,#0x10000  ; Set Divided by 2    */
-  0x6003,        /*      STR  R3,[R0,#0]      ; Store CREG6         */
-  0x600A,        /*      STR  R2,[R1,#0]      ; EMCDIV_CFG = cfg    */
-  0x684B,        /* loop LDR  R3,[R1,#4]      ; Load EMCDIV_STAT    */
-  0x07DB,        /*      LSLS R3,R3,#31       ; Check EMCDIV_STAT.0 */
-  0xD0FC,        /*      BEQ  loop            ; Jump if 0           */
-  0x4770,        /*      BX   LR              ; Exit                */
-  0,
-};
-
-#define        emcdivby2_szw ((sizeof(emcdivby2_opc)+3)/4)
-#define        emcdivby2_ram 0x10000000
-
-/*----------------------------------------------------------------------------
-  Initialize external memory controller
- *----------------------------------------------------------------------------*/
-
-void SystemInit_ExtMemCtl (void) {
-  uint32_t emcdivby2_buf[emcdivby2_szw];
-  uint32_t div, n;
-
-  /* Select and enable EMC branch clock */
-  LPC_CCU1->CLK_M4_EMC_CFG = (1 << 2) | (1 << 1) | 1;
-  while (!(LPC_CCU1->CLK_M4_EMC_STAT & 1));
-
-  /* Set EMC clock output delay */
-  if (SystemCoreClock < 80000000UL) {
-    LPC_SCU->EMCDELAYCLK = EMC_CLK_DLY_TIM_0; /* No EMC clock out delay       */
-  }
-  else {
-    LPC_SCU->EMCDELAYCLK = EMC_CLK_DLY_TIM_2; /* 2.0 ns EMC clock out delay   */
-  }
-
-  /* Configure EMC port pins */
-  LPC_SCU->SFSP1_0  = EMC_PIN_SET | 2;  /* P1_0:  A5                          */
-  LPC_SCU->SFSP1_1  = EMC_PIN_SET | 2;  /* P1_1:  A6                          */
-  LPC_SCU->SFSP1_2  = EMC_PIN_SET | 2;  /* P1_2:  A7                          */
-  LPC_SCU->SFSP1_3  = EMC_PIN_SET | 3;  /* P1_3:  OE                          */
-  LPC_SCU->SFSP1_4  = EMC_PIN_SET | 3;  /* P1_4:  BLS0                        */
-  LPC_SCU->SFSP1_5  = EMC_PIN_SET | 3;  /* P1_5:  CS0                         */
-  LPC_SCU->SFSP1_6  = EMC_PIN_SET | 3;  /* P1_6:  WE                          */
-  LPC_SCU->SFSP1_7  = EMC_PIN_SET | 3;  /* P1_7:  D0                          */
-  LPC_SCU->SFSP1_8  = EMC_PIN_SET | 3;  /* P1_8:  D1                          */
-  LPC_SCU->SFSP1_9  = EMC_PIN_SET | 3;  /* P1_9:  D2                          */
-  LPC_SCU->SFSP1_10 = EMC_PIN_SET | 3;  /* P1_10: D3                          */
-  LPC_SCU->SFSP1_11 = EMC_PIN_SET | 3;  /* P1_11: D4                          */
-  LPC_SCU->SFSP1_12 = EMC_PIN_SET | 3;  /* P1_12: D5                          */
-  LPC_SCU->SFSP1_13 = EMC_PIN_SET | 3;  /* P1_13: D6                          */
-  LPC_SCU->SFSP1_14 = EMC_PIN_SET | 3;  /* P1_14: D7                          */
-
-  LPC_SCU->SFSP2_0  = EMC_PIN_SET | 2;  /* P2_0:  A13                         */
-  LPC_SCU->SFSP2_1  = EMC_PIN_SET | 2;  /* P2_1:  A12                         */
-  LPC_SCU->SFSP2_2  = EMC_PIN_SET | 2;  /* P2_2:  A11                         */
-  LPC_SCU->SFSP2_6  = EMC_PIN_SET | 2;  /* P2_6:  A10                         */
-  LPC_SCU->SFSP2_7  = EMC_PIN_SET | 3;  /* P2_7:  A9                          */
-  LPC_SCU->SFSP2_8  = EMC_PIN_SET | 3;  /* P2_8:  A8                          */
-  LPC_SCU->SFSP2_9  = EMC_PIN_SET | 3;  /* P2_9:  A0                          */
-  LPC_SCU->SFSP2_10 = EMC_PIN_SET | 3;  /* P2_10: A1                          */
-  LPC_SCU->SFSP2_11 = EMC_PIN_SET | 3;  /* P2_11: A2                          */
-  LPC_SCU->SFSP2_12 = EMC_PIN_SET | 3;  /* P2_12: A3                          */
-  LPC_SCU->SFSP2_13 = EMC_PIN_SET | 3;  /* P2_13: A4                          */
-
-  LPC_SCU->SFSP5_0  = EMC_PIN_SET | 2;  /* P5_0:  D12                         */
-  LPC_SCU->SFSP5_1  = EMC_PIN_SET | 2;  /* P5_1:  D13                         */
-  LPC_SCU->SFSP5_2  = EMC_PIN_SET | 2;  /* P5_2:  D14                         */
-  LPC_SCU->SFSP5_3  = EMC_PIN_SET | 2;  /* P5_3:  D15                         */
-  LPC_SCU->SFSP5_4  = EMC_PIN_SET | 2;  /* P5_4:  D8                          */
-  LPC_SCU->SFSP5_5  = EMC_PIN_SET | 2;  /* P5_5:  D9                          */
-  LPC_SCU->SFSP5_6  = EMC_PIN_SET | 2;  /* P5_6:  D10                         */
-  LPC_SCU->SFSP5_7  = EMC_PIN_SET | 2;  /* P5_7:  D11                         */
-
-  LPC_SCU->SFSP6_1  = EMC_PIN_SET | 1;  /* P6_1:  DYCS1                       */
-  LPC_SCU->SFSP6_2  = EMC_PIN_SET | 1;  /* P6_3:  CKEOUT1                     */
-  LPC_SCU->SFSP6_3  = EMC_PIN_SET | 3;  /* P6_3:  CS1                         */
-  LPC_SCU->SFSP6_4  = EMC_PIN_SET | 3;  /* P6_4:  CAS                         */
-  LPC_SCU->SFSP6_5  = EMC_PIN_SET | 3;  /* P6_5:  RAS                         */
-  LPC_SCU->SFSP6_6  = EMC_PIN_SET | 1;  /* P6_6:  BLS1                        */
-  LPC_SCU->SFSP6_7  = EMC_PIN_SET | 1;  /* P6_7:  A15                         */
-  LPC_SCU->SFSP6_8  = EMC_PIN_SET | 1;  /* P6_8:  A14                         */
-  LPC_SCU->SFSP6_9  = EMC_PIN_SET | 3;  /* P6_9:  DYCS0                       */
-  LPC_SCU->SFSP6_10 = EMC_PIN_SET | 3;  /* P6_10: DQMOUT1                     */
-  LPC_SCU->SFSP6_11 = EMC_PIN_SET | 3;  /* P6_11: CKEOUT0                     */
-  LPC_SCU->SFSP6_12 = EMC_PIN_SET | 3;  /* P6_12: DQMOUT0                     */
-
-  LPC_SCU->SFSPA_4  = EMC_PIN_SET | 3;  /* PA_4:  A23                         */
-
-  LPC_SCU->SFSPD_0  = EMC_PIN_SET | 2;  /* PD_0:  DQMOUT2                     */
-  LPC_SCU->SFSPD_1  = EMC_PIN_SET | 2;  /* PD_1:  CKEOUT2                     */
-  LPC_SCU->SFSPD_2  = EMC_PIN_SET | 2;  /* PD_2:  D16                         */
-  LPC_SCU->SFSPD_3  = EMC_PIN_SET | 2;  /* PD_3:  D17                         */
-  LPC_SCU->SFSPD_4  = EMC_PIN_SET | 2;  /* PD_4:  D18                         */
-  LPC_SCU->SFSPD_5  = EMC_PIN_SET | 2;  /* PD_5:  D19                         */
-  LPC_SCU->SFSPD_6  = EMC_PIN_SET | 2;  /* PD_6:  D20                         */
-  LPC_SCU->SFSPD_7  = EMC_PIN_SET | 2;  /* PD_7:  D21                         */
-  LPC_SCU->SFSPD_8  = EMC_PIN_SET | 2;  /* PD_8:  D22                         */
-  LPC_SCU->SFSPD_9  = EMC_PIN_SET | 2;  /* PD_9:  D23                         */
-  LPC_SCU->SFSPD_10 = EMC_PIN_SET | 2;  /* PD_10: BLS3                        */
-  LPC_SCU->SFSPD_11 = EMC_PIN_SET | 2;  /* PD_11: CS3                         */
-  LPC_SCU->SFSPD_12 = EMC_PIN_SET | 2;  /* PD_12: CS2                         */
-  LPC_SCU->SFSPD_13 = EMC_PIN_SET | 2;  /* PD_13: BLS2                        */
-  LPC_SCU->SFSPD_14 = EMC_PIN_SET | 2;  /* PD_14: DYCS2                       */
-  LPC_SCU->SFSPD_15 = EMC_PIN_SET | 2;  /* PD_15: A17                         */
-  LPC_SCU->SFSPD_16 = EMC_PIN_SET | 2;  /* PD_16: A16                         */
-
-  LPC_SCU->SFSPE_0  = EMC_PIN_SET | 3;  /* PE_0:  A18                         */
-  LPC_SCU->SFSPE_1  = EMC_PIN_SET | 3;  /* PE_1:  A19                         */
-  LPC_SCU->SFSPE_2  = EMC_PIN_SET | 3;  /* PE_2:  A20                         */
-  LPC_SCU->SFSPE_3  = EMC_PIN_SET | 3;  /* PE_3:  A21                         */
-  LPC_SCU->SFSPE_4  = EMC_PIN_SET | 3;  /* PE_4:  A22                         */
-  LPC_SCU->SFSPE_5  = EMC_PIN_SET | 3;  /* PE_5:  D24                         */
-  LPC_SCU->SFSPE_6  = EMC_PIN_SET | 3;  /* PE_6:  D25                         */
-  LPC_SCU->SFSPE_7  = EMC_PIN_SET | 3;  /* PE_7:  D26                         */
-  LPC_SCU->SFSPE_8  = EMC_PIN_SET | 3;  /* PE_8:  D27                         */
-  LPC_SCU->SFSPE_9  = EMC_PIN_SET | 3;  /* PE_9:  D28                         */
-  LPC_SCU->SFSPE_10 = EMC_PIN_SET | 3;  /* PE_10: D29                         */
-  LPC_SCU->SFSPE_11 = EMC_PIN_SET | 3;  /* PE_11: D30                         */
-  LPC_SCU->SFSPE_12 = EMC_PIN_SET | 3;  /* PE_12: D31                         */
-  LPC_SCU->SFSPE_13 = EMC_PIN_SET | 3;  /* PE_13: DQMOUT3                     */
-  LPC_SCU->SFSPE_14 = EMC_PIN_SET | 3;  /* PE_14: DYCS3                       */
-  LPC_SCU->SFSPE_15 = EMC_PIN_SET | 3;  /* PE_15: CKEOUT3                     */
-
-  LPC_EMC->CONTROL  = 0x00000001;       /* EMC Enable                         */
-  LPC_EMC->CONFIG   = 0x00000000;       /* Little-endian, Clock Ratio 1:1     */
-
-  div = 0;
-  if (SystemCoreClock > 120000000UL) {
-    /* Use EMC clock divider and EMC clock output delay */
-    div = 1;
-    /* Following code must be executed in RAM to ensure stable operation      */
-    /* LPC_CCU1->CLK_M4_EMCDIV_CFG = (1 << 5) | (1 << 2) | (1 << 1) | 1;      */
-    /* LPC_CREG->CREG6 |= (1 << 16);       // EMC_CLK_DIV divided by 2        */
-    /* while (!(LPC_CCU1->CLK_M4_EMCDIV_STAT & 1));                           */
-
-    /* This code configures EMC clock divider and is executed in RAM          */
-    for (n = 0; n < emcdivby2_szw; n++) {
-      emcdivby2_buf[n] =  *((uint32_t *)emcdivby2_ram + n);
-      *((uint32_t *)emcdivby2_ram + n) = *((uint32_t *)emcdivby2_opc + n);
-    }
-    __ISB();
-    ((emcdivby2 )(emcdivby2_ram+1))(&LPC_CREG->CREG6, &LPC_CCU1->CLK_M4_EMCDIV_CFG, (1 << 5) | (1 << 2) | (1 << 1) | 1);
-    for (n = 0; n < emcdivby2_szw; n++) {
-      *((uint32_t *)emcdivby2_ram + n) = emcdivby2_buf[n];
-    }
-  }
-
-  /* Configure EMC clock-out pins                                             */
-  LPC_SCU->SFSCLK_0 = EMC_PIN_SET | 0;  /* CLK0                               */
-  LPC_SCU->SFSCLK_1 = EMC_PIN_SET | 0;  /* CLK1                               */
-  LPC_SCU->SFSCLK_2 = EMC_PIN_SET | 0;  /* CLK2                               */
-  LPC_SCU->SFSCLK_3 = EMC_PIN_SET | 0;  /* CLK3                               */
-
-  /* Static memory configuration (chip select 0)                              */
-#if (USE_EXT_STAT_MEM_CS0)
-  LPC_EMC->STATICCONFIG0  = (1 <<  7) | /* Byte lane state: use WE signal     */
-                            (2 <<  0) | /* Memory width 32-bit                */
-                            (1 <<  3);  /* Async page mode enable             */
-
-  LPC_EMC->STATICWAITOEN0 = (0 <<  0) ; /* Wait output enable: No delay       */
-
-  LPC_EMC->STATICWAITPAGE0 = 2;
-
-  /* Set Static Memory Read Delay for 90ns External NOR Flash                 */
-  LPC_EMC->STATICWAITRD0  = 1 + EMC_NANOSEC(90, SystemCoreClock, div);
-  LPC_EMC->STATICCONFIG0 |= (1 << 19) ; /* Enable buffer                      */
-#endif
-
-  /* Dynamic memory configuration (chip select 0)                             */
-#if (USE_EXT_DYN_MEM_CS0)
-
-  /* Set Address mapping: 128Mb(4Mx32), 4 banks, row len = 12, column len = 8 */
-  LPC_EMC->DYNAMICCONFIG0    = (1 << 14) |  /* AM[14]   = 1                   */
-                               (0 << 12) |  /* AM[12]   = 0                   */
-                               (2 <<  9) |  /* AM[11:9] = 2                   */
-                               (2 <<  7) ;  /* AM[8:7]  = 2                   */
-
-  LPC_EMC->DYNAMICRASCAS0    = 0x00000303;  /* Latency: RAS 3, CAS 3 CCLK cyc.*/
-  LPC_EMC->DYNAMICREADCONFIG = 0x00000001;  /* Command delayed by 1/2 CCLK    */
-
-  LPC_EMC->DYNAMICRP         = EMC_NANOSEC (20, SystemCoreClock, div);
-  LPC_EMC->DYNAMICRAS        = EMC_NANOSEC (42, SystemCoreClock, div);
-  LPC_EMC->DYNAMICSREX       = EMC_NANOSEC (63, SystemCoreClock, div);
-  LPC_EMC->DYNAMICAPR        = EMC_NANOSEC (70, SystemCoreClock, div);
-  LPC_EMC->DYNAMICDAL        = EMC_NANOSEC (70, SystemCoreClock, div);
-  LPC_EMC->DYNAMICWR         = EMC_NANOSEC (30, SystemCoreClock, div);
-  LPC_EMC->DYNAMICRC         = EMC_NANOSEC (63, SystemCoreClock, div);
-  LPC_EMC->DYNAMICRFC        = EMC_NANOSEC (63, SystemCoreClock, div);
-  LPC_EMC->DYNAMICXSR        = EMC_NANOSEC (63, SystemCoreClock, div);
-  LPC_EMC->DYNAMICRRD        = EMC_NANOSEC (14, SystemCoreClock, div);
-  LPC_EMC->DYNAMICMRD        = EMC_NANOSEC (30, SystemCoreClock, div);
-
-  WaitUs (100);
-  LPC_EMC->DYNAMICCONTROL    = 0x00000183;  /* Issue NOP command              */
-  WaitUs (10);
-  LPC_EMC->DYNAMICCONTROL    = 0x00000103;  /* Issue PALL command             */
-  WaitUs (1);
-  LPC_EMC->DYNAMICCONTROL    = 0x00000183;  /* Issue NOP command              */
-  WaitUs (1);
-  LPC_EMC->DYNAMICREFRESH    = EMC_NANOSEC(  200, SystemCoreClock, div) / 16 + 1;
-  WaitUs (10);
-  LPC_EMC->DYNAMICREFRESH    = EMC_NANOSEC(15625, SystemCoreClock, div) / 16 + 1;
-  WaitUs (10);
-  LPC_EMC->DYNAMICCONTROL    = 0x00000083;  /* Issue MODE command             */
-
-  /* Mode register: Burst Length: 4, Burst Type: Sequential, CAS Latency: 3   */
-  WR_MODE(((3 << 4) | 2) << 12);
-
-  WaitUs (10);
-  LPC_EMC->DYNAMICCONTROL    = 0x00000002;  /* Issue NORMAL command           */
-  LPC_EMC->DYNAMICCONFIG0   |= (1 << 19);   /* Enable buffer                  */
-#endif
-}
-
-
-/*----------------------------------------------------------------------------
-  Measure frequency using frequency monitor
- *----------------------------------------------------------------------------*/
-uint32_t MeasureFreq (uint32_t clk_sel) {
-  uint32_t fcnt, rcnt, fout;
-
-  /* Set register values */
-  LPC_CGU->FREQ_MON &= ~(1 << 23);                /* Stop frequency counters  */
-  LPC_CGU->FREQ_MON  = (clk_sel << 24) | 511;     /* RCNT == 511              */
-  LPC_CGU->FREQ_MON |= (1 << 23);                 /* Start RCNT and FCNT      */
-  while (LPC_CGU->FREQ_MON & (1 << 23)) {
-    fcnt = (LPC_CGU->FREQ_MON >> 9) & 0x3FFF;
-    rcnt = (LPC_CGU->FREQ_MON     ) & 0x01FF;
-    if (fcnt == 0 && rcnt == 0) {
-      return (0);                                 /* No input clock present   */
-    }
-  }
-  fcnt = (LPC_CGU->FREQ_MON >> 9) & 0x3FFF;
-  fout = fcnt * (12000000U/511U);                 /* FCNT * (IRC_CLK / RCNT)  */
-
-  return (fout);
-}
-
-
-/*----------------------------------------------------------------------------
-  Get PLL1 (divider and multiplier) parameters
- *----------------------------------------------------------------------------*/
-static __inline uint32_t GetPLL1Param (void) {
-  uint32_t ctrl;
-  uint32_t p;
-  uint32_t div, mul;
-
-  ctrl = LPC_CGU->PLL1_CTRL;
-  div = ((ctrl >> 12) & 0x03) + 1;
-  mul = ((ctrl >> 16) & 0xFF) + 1;
-  p = 1 << ((ctrl >>  8) & 0x03);
-
-  if (ctrl & (1 << 1)) {
-    /* Bypass = 1, PLL1 input clock sent to post-dividers */
-    if (ctrl & (1 << 7)) {
-      div *= (2*p);
-    }
-  }
-  else {
-    /* Direct and integer mode */
-    if (((ctrl & (1 << 7)) == 0) && ((ctrl & (1 << 6)) == 0)) {
-      /* Non-integer mode */
-      div *= (2*p);
-    }
-  }
-  return ((div << 8) | (mul));
-}
-
-
-/*----------------------------------------------------------------------------
-  Get input clock source for specified clock generation block
- *----------------------------------------------------------------------------*/
-int32_t GetClkSel (uint32_t clk_src) {
-  uint32_t reg;
-  int32_t clk_sel = -1;
-
-  switch (clk_src) {
-    case CLK_SRC_IRC:
-    case CLK_SRC_ENET_RX:
-    case CLK_SRC_ENET_TX:
-    case CLK_SRC_GP_CLKIN:
-      return (clk_src);
-
-    case CLK_SRC_32KHZ:
-      return ((LPC_CREG->CREG0 & 0x0A) != 0x02) ? (-1) : (CLK_SRC_32KHZ);
-    case CLK_SRC_XTAL:
-     return  (LPC_CGU->XTAL_OSC_CTRL & 1)       ? (-1) : (CLK_SRC_XTAL);
-
-    case CLK_SRC_PLL0U: reg = LPC_CGU->PLL0USB_CTRL;    break;
-    case CLK_SRC_PLL0A: reg = LPC_CGU->PLL0AUDIO_CTRL;  break;
-    case CLK_SRC_PLL1:  reg = (LPC_CGU->PLL1_STAT & 1) ? (LPC_CGU->PLL1_CTRL) : (0); break;
-
-    case CLK_SRC_IDIVA: reg = LPC_CGU->IDIVA_CTRL;      break;
-    case CLK_SRC_IDIVB: reg = LPC_CGU->IDIVB_CTRL;      break;
-    case CLK_SRC_IDIVC: reg = LPC_CGU->IDIVC_CTRL;      break;
-    case CLK_SRC_IDIVD: reg = LPC_CGU->IDIVD_CTRL;      break;
-    case CLK_SRC_IDIVE: reg = LPC_CGU->IDIVE_CTRL;      break;
-
-    default:
-      return (clk_sel);
-  }
-  if (!(reg & 1)) {
-    clk_sel = (reg >> 24) & 0x1F;
-  }
-  return (clk_sel);
-}
-
-
-/*----------------------------------------------------------------------------
-  Get clock frequency for specified clock source
- *----------------------------------------------------------------------------*/
-uint32_t GetClockFreq (uint32_t clk_src) {
-  uint32_t tmp;
-  uint32_t mul        =  1;
-  uint32_t div        =  1;
-  uint32_t main_freq  =  0;
-  int32_t  clk_sel    = clk_src;
-
-  do {
-    switch (clk_sel) {
-      case CLK_SRC_32KHZ:    main_freq = CLK_32KHZ;     break;
-      case CLK_SRC_IRC:      main_freq = CLK_IRC;       break;
-      case CLK_SRC_ENET_RX:  main_freq = CLK_ENET_RX;   break;
-      case CLK_SRC_ENET_TX:  main_freq = CLK_ENET_TX;   break;
-      case CLK_SRC_GP_CLKIN: main_freq = CLK_GP_CLKIN;  break;
-      case CLK_SRC_XTAL:     main_freq = CLK_XTAL;      break;
-
-      case CLK_SRC_IDIVA: div *= ((LPC_CGU->IDIVA_CTRL >> 2) & 0x03) + 1; break;
-      case CLK_SRC_IDIVB: div *= ((LPC_CGU->IDIVB_CTRL >> 2) & 0x0F) + 1; break;
-      case CLK_SRC_IDIVC: div *= ((LPC_CGU->IDIVC_CTRL >> 2) & 0x0F) + 1; break;
-      case CLK_SRC_IDIVD: div *= ((LPC_CGU->IDIVD_CTRL >> 2) & 0x0F) + 1; break;
-      case CLK_SRC_IDIVE: div *= ((LPC_CGU->IDIVE_CTRL >> 2) & 0xFF) + 1; break;
-
-      case CLK_SRC_PLL0U: /* Not implemented */  break;
-      case CLK_SRC_PLL0A: /* Not implemented */  break;
-
-      case CLK_SRC_PLL1:
-        tmp = GetPLL1Param ();
-        mul *= (tmp     ) & 0xFF;       /* PLL input clock multiplier         */
-        div *= (tmp >> 8) & 0xFF;       /* PLL input clock divider            */
-        break;
-
-      default:
-        return (0);                     /* Clock not running or not supported */
-    }
-    if (main_freq == 0) {
-      clk_sel = GetClkSel (clk_sel);
-    }
-  }
-  while (main_freq == 0);
-
-  return ((main_freq * mul) / div);
-}
-
-
-/*----------------------------------------------------------------------------
-  System Core Clock update
- *----------------------------------------------------------------------------*/
-void SystemCoreClockUpdate (void) {
-  /* Check BASE_M4_CLK connection */
-  uint32_t base_src = (LPC_CGU->BASE_M4_CLK >> 24) & 0x1F;
-
-  /* Update core clock frequency */
-  SystemCoreClock = GetClockFreq (base_src);
-}
-
-
-extern uint32_t __Vectors;                         /* see startup_LPC43xx.s   */
-
-/*----------------------------------------------------------------------------
-  Initialize the system
- *----------------------------------------------------------------------------*/
-void SystemInit (void) {
-
-  #if (__FPU_USED == 1)
-    SCB->CPACR |= ((3UL << 10*2) |                 /* set CP10 Full Access */
-                   (3UL << 11*2)  );               /* set CP11 Full Access */
-  #endif
-
-  /* Stop CM0 core */
-  LPC_RGU->RESET_CTRL1 = (1 << 24);
-
-  /* Disable SysTick timer                                                    */
-  SysTick->CTRL &= ~(SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk);
-
-  /* Set vector table pointer */
-  SCB->VTOR = ((uint32_t)(&__Vectors)) & 0xFFF00000UL;
-
-  /* Configure PLL0 and PLL1, connect CPU clock to selected clock source */
-  SetClock();
-
-  /* Update SystemCoreClock variable */
-  SystemCoreClockUpdate();
-
-  /* Configure External Memory Controller */
-//SystemInit_ExtMemCtl ();
-}

+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/main.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/main.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/osObjects.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/osObjects.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/ser_num.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/ser_num.c


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/ser_num.h → CMSIS/DAP/Firmware/Examples/LPC-Link2/ser_num.h


+ 0 - 0
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/target.c → CMSIS/DAP/Firmware/Examples/LPC-Link2/target.c


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1801 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvguix


+ 180 - 31
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/CMSIS_DAP.uvoptx → CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvoptx

@@ -22,7 +22,7 @@
   </DaveTm>
 
   <Target>
-    <TargetName>LPC-Link2</TargetName>
+    <TargetName>MCU-LINK</TargetName>
     <ToolsetNumber>0x4</ToolsetNumber>
     <ToolsetName>ARM-ADS</ToolsetName>
     <TargetOption>
@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>0</nTsel>
+        <nTsel>15</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,28 +114,73 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\UL2CM3.DLL</pMon>
+        <pMon>BIN\CMSIS_AGDI_V8M.DLL</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
         <SetRegEntry>
           <Number>0</Number>
-          <Key>UL2CM3</Key>
-          <Name>-UV0018BME -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC180000000 -TT180000000 -TP21 -TDS802F -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD10000000 -FC10000 -FN1 -FF0LPC18xx43xx_S25FL032 -FS014000000 -FL0400000</Name>
+          <Key>CMSIS_AGDI_V8M</Key>
+          <Name>-X"ULINKplus CMSIS-DAP" -UL68410450A -O206 -S9 -C0 -P00000000 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN2 -FF0LPC55XX_640.FLM -FS00 -FL098000 -FP0($$Device:LPC55S69JBD64$arm\LPC55XX_640.FLM) -FF1LPC55XX_S_640.FLM -FS110000000 -FL198000 -FP1($$Device:LPC55S69JBD64$arm\LPC55XX_S_640.FLM)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>EVENTREC_CNF</Key>
+          <Name>-l0 -a1 -s0 -f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ULPL2CM3</Key>
+          <Name>-UL68410450A -O718 -S9 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN2 -FF0LPC55XX_640.FLM -FS00 -FL098000 -FP0($$Device:LPC55S69JBD64$arm\LPC55XX_640.FLM) -FF1LPC55XX_S_640.FLM -FS110000000 -FL198000 -FP1($$Device:LPC55S69JBD64$arm\LPC55XX_S_640.FLM)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(6010=75,104,552,700,0)(6018=-1,-1,-1,-1,0)(6019=-1,-1,-1,-1,0)(6008=-1,-1,-1,-1,0)(6009=-1,-1,-1,-1,0)(6014=-1,-1,-1,-1,0)(6015=-1,-1,-1,-1,0)(6003=-1,-1,-1,-1,0)(6000=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2V8M</Key>
+          <Name>-UAny -O206 -S9 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN2 -FF0LPC55XX_640.FLM -FS00 -FL098000 -FP0($$Device:LPC55S69JBD64$arm\LPC55XX_640.FLM) -FF1LPC55XX_S_640.FLM -FS110000000 -FL198000 -FP1($$Device:LPC55S69JBD64$arm\LPC55XX_S_640.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
       <Breakpoint/>
+      <ScvdPack>
+        <Filename>C:\Keil_v5\ARM\PACK\Keil\MDK-Middleware\7.13.0\USB\USB.scvd</Filename>
+        <Type>Keil.MDK-Middleware.7.13.0</Type>
+        <SubType>1</SubType>
+      </ScvdPack>
+      <ScvdPack>
+        <Filename>C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.8.0\CMSIS\RTOS2\RTX\RTX5.scvd</Filename>
+        <Type>ARM.CMSIS.5.8.0</Type>
+        <SubType>1</SubType>
+      </ScvdPack>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>0</aLwin>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
         <aPa>0</aPa>
-        <viewmode>0</viewmode>
+        <viewmode>1</viewmode>
         <vrSel>0</vrSel>
         <aSym>0</aSym>
         <aTbox>0</aTbox>
@@ -148,7 +193,7 @@
         <aPa1>0</aPa1>
         <AscS4>0</AscS4>
         <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
+        <StkLoc>1</StkLoc>
         <TrcWin>0</TrcWin>
         <newCpu>0</newCpu>
         <uProt>0</uProt>
@@ -168,10 +213,10 @@
       <pMultCmdsp></pMultCmdsp>
       <DebugDescription>
         <Enable>1</Enable>
-        <EnableFlashSeq>0</EnableFlashSeq>
+        <EnableFlashSeq>1</EnableFlashSeq>
         <EnableLog>0</EnableLog>
-        <Protocol>1</Protocol>
-        <DbgClock>10000000</DbgClock>
+        <Protocol>2</Protocol>
+        <DbgClock>5000000</DbgClock>
       </DebugDescription>
     </TargetOption>
   </Target>
@@ -201,8 +246,56 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>.\USBD_User_HID_0.c</PathWithFileName>
-      <FilenameWithoutPath>USBD_User_HID_0.c</FilenameWithoutPath>
+      <PathWithFileName>.\ser_num.c</PathWithFileName>
+      <FilenameWithoutPath>ser_num.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\USBD_User_CustomClass_0.c</PathWithFileName>
+      <FilenameWithoutPath>USBD_User_CustomClass_0.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\USBD_User_CDC_ACM_UART_0.c</PathWithFileName>
+      <FilenameWithoutPath>USBD_User_CDC_ACM_UART_0.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\USBD1_LPC55xxx.c</PathWithFileName>
+      <FilenameWithoutPath>USBD1_LPC55xxx.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\fsl_usart.c</PathWithFileName>
+      <FilenameWithoutPath>fsl_usart.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -216,27 +309,71 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>3</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>.\Abstract.txt</PathWithFileName>
-      <FilenameWithoutPath>Abstract.txt</FilenameWithoutPath>
+      <PathWithFileName>.\README.md</PathWithFileName>
+      <FilenameWithoutPath>README.md</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
   </Group>
 
   <Group>
-    <GroupName>CMSIS DAP</GroupName>
+    <GroupName>Board</GroupName>
     <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>4</FileNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\board\clock_config.c</PathWithFileName>
+      <FilenameWithoutPath>clock_config.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\board\peripherals.c</PathWithFileName>
+      <FilenameWithoutPath>peripherals.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>.\board\pin_mux.c</PathWithFileName>
+      <FilenameWithoutPath>pin_mux.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>CMSIS DAP</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>11</FileNumber>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -247,53 +384,65 @@
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>5</FileNumber>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\DAP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\DAP.c</PathWithFileName>
       <FilenameWithoutPath>DAP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\JTAG_DP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\JTAG_DP.c</PathWithFileName>
       <FilenameWithoutPath>JTAG_DP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\SW_DP.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\SW_DP.c</PathWithFileName>
       <FilenameWithoutPath>SW_DP.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\Source\SWO.c</PathWithFileName>
+      <PathWithFileName>..\..\Source\SWO.c</PathWithFileName>
       <FilenameWithoutPath>SWO.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\Source\UART.c</PathWithFileName>
+      <FilenameWithoutPath>UART.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -314,7 +463,7 @@
 
   <Group>
     <GroupName>::Device</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>1</RteFlg>

+ 955 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/CMSIS_DAP.uvprojx

@@ -0,0 +1,955 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>MCU-LINK</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed>
+      <uAC6>1</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>LPC55S69JBD64:cm33_core0</Device>
+          <Vendor>NXP</Vendor>
+          <PackID>NXP.LPC55S69_DFP.13.1.0</PackID>
+          <PackURL>https://mcuxpresso.nxp.com/cmsis_pack/repo/</PackURL>
+          <Cpu>IRAM(0x20000000,0x040000) IRAM2(0x20040000,0x4000) IROM(0x00000000,0x098000) XRAM(0x04000000,0x8000) XRAM2(0x40100000,0x4000) CPUTYPE("Cortex-M33") FPU3(SFPU) DSP TZ CLOCK(12000000) ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN2 -FF0LPC55XX_640 -FS00 -FL098000 -FF1LPC55XX_S_640 -FS110000000 -FL198000 -FP0($$Device:LPC55S69JBD64$arm\LPC55XX_640.FLM) -FP1($$Device:LPC55S69JBD64$arm\LPC55XX_S_640.FLM))</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:LPC55S69JBD64$fsl_device_registers.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:LPC55S69JBD64$LPC55S69_cm33_core0.xml</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>CMSIS_DAP</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName></SimDllName>
+          <SimDllArguments></SimDllArguments>
+          <SimDlgDll></SimDlgDll>
+          <SimDlgDllArguments></SimDlgDllArguments>
+          <TargetDllName>SARMV8M.DLL</TargetDllName>
+          <TargetDllArguments> -MPU</TargetDllArguments>
+          <TargetDlgDll>TCM.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM33</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4102</DriverSelection>
+          </Flash1>
+          <bUseTDR>1</bUseTDR>
+          <Flash2>BIN\UL2V8M.DLL</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M33"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>1</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>1</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>2</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <RvdsCdeCp>0</RvdsCdeCp>
+            <hadIRAM2>1</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>2</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>4</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>1</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x40000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x98000</Size>
+              </IROM>
+              <XRAM>
+                <Type>1</Type>
+                <StartAddress>0x4000000</StartAddress>
+                <Size>0x8000</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x98000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x4000000</StartAddress>
+                <Size>0x8000</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x40100000</StartAddress>
+                <Size>0x4000</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x20040000</StartAddress>
+                <Size>0x4000</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>4</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>1</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>3</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>3</v6Lang>
+            <v6LangP>3</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath>.;.\board;..\..\Include</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <ClangAsOpt>1</ClangAsOpt>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x10000000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\RTE\Device\LPC55S69JBD64_cm33_core0\LPC55S69_cm33_core0_flash.scf</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc>--diag_suppress=L6314</Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>Source</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\main.c</FilePath>
+            </File>
+            <File>
+              <FileName>ser_num.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\ser_num.c</FilePath>
+            </File>
+            <File>
+              <FileName>USBD_User_CustomClass_0.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\USBD_User_CustomClass_0.c</FilePath>
+            </File>
+            <File>
+              <FileName>USBD_User_CDC_ACM_UART_0.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\USBD_User_CDC_ACM_UART_0.c</FilePath>
+            </File>
+            <File>
+              <FileName>USBD1_LPC55xxx.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\USBD1_LPC55xxx.c</FilePath>
+            </File>
+            <File>
+              <FileName>fsl_usart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\fsl_usart.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Documentation</GroupName>
+          <Files>
+            <File>
+              <FileName>README.md</FileName>
+              <FileType>5</FileType>
+              <FilePath>.\README.md</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Board</GroupName>
+          <Files>
+            <File>
+              <FileName>clock_config.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\board\clock_config.c</FilePath>
+            </File>
+            <File>
+              <FileName>peripherals.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\board\peripherals.c</FilePath>
+            </File>
+            <File>
+              <FileName>pin_mux.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>.\board\pin_mux.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>CMSIS DAP</GroupName>
+          <Files>
+            <File>
+              <FileName>DAP_config.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>.\DAP_config.h</FilePath>
+            </File>
+            <File>
+              <FileName>DAP.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\Source\DAP.c</FilePath>
+            </File>
+            <File>
+              <FileName>JTAG_DP.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\Source\JTAG_DP.c</FilePath>
+            </File>
+            <File>
+              <FileName>SW_DP.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\Source\SW_DP.c</FilePath>
+            </File>
+            <File>
+              <FileName>SWO.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\Source\SWO.c</FilePath>
+            </File>
+            <File>
+              <FileName>UART.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\Source\UART.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>::CMSIS</GroupName>
+        </Group>
+        <Group>
+          <GroupName>::CMSIS Driver</GroupName>
+          <GroupOption>
+            <CommonProperty>
+              <UseCPPCompiler>0</UseCPPCompiler>
+              <RVCTCodeConst>0</RVCTCodeConst>
+              <RVCTZI>0</RVCTZI>
+              <RVCTOtherData>0</RVCTOtherData>
+              <ModuleSelection>0</ModuleSelection>
+              <IncludeInBuild>1</IncludeInBuild>
+              <AlwaysBuild>2</AlwaysBuild>
+              <GenerateAssemblyFile>2</GenerateAssemblyFile>
+              <AssembleAssemblyFile>2</AssembleAssemblyFile>
+              <PublicsOnly>2</PublicsOnly>
+              <StopOnExitCode>11</StopOnExitCode>
+              <CustomArgument></CustomArgument>
+              <IncludeLibraryModules></IncludeLibraryModules>
+              <ComprImg>1</ComprImg>
+            </CommonProperty>
+            <GroupArmAds>
+              <Cads>
+                <interw>2</interw>
+                <Optim>0</Optim>
+                <oTime>2</oTime>
+                <SplitLS>2</SplitLS>
+                <OneElfS>2</OneElfS>
+                <Strict>2</Strict>
+                <EnumInt>2</EnumInt>
+                <PlainCh>2</PlainCh>
+                <Ropi>2</Ropi>
+                <Rwpi>2</Rwpi>
+                <wLevel>0</wLevel>
+                <uThumb>2</uThumb>
+                <uSurpInc>2</uSurpInc>
+                <uC99>2</uC99>
+                <uGnu>2</uGnu>
+                <useXO>2</useXO>
+                <v6Lang>0</v6Lang>
+                <v6LangP>0</v6LangP>
+                <vShortEn>2</vShortEn>
+                <vShortWch>2</vShortWch>
+                <v6Lto>2</v6Lto>
+                <v6WtE>2</v6WtE>
+                <v6Rtti>2</v6Rtti>
+                <VariousControls>
+                  <MiscControls></MiscControls>
+                  <Define></Define>
+                  <Undefine></Undefine>
+                  <IncludePath></IncludePath>
+                </VariousControls>
+              </Cads>
+              <Aads>
+                <interw>2</interw>
+                <Ropi>2</Ropi>
+                <Rwpi>2</Rwpi>
+                <thumb>2</thumb>
+                <SplitLS>2</SplitLS>
+                <SwStkChk>2</SwStkChk>
+                <NoWarn>2</NoWarn>
+                <uSurpInc>2</uSurpInc>
+                <useXO>2</useXO>
+                <ClangAsOpt>0</ClangAsOpt>
+                <VariousControls>
+                  <MiscControls></MiscControls>
+                  <Define></Define>
+                  <Undefine></Undefine>
+                  <IncludePath></IncludePath>
+                </VariousControls>
+              </Aads>
+            </GroupArmAds>
+          </GroupOption>
+        </Group>
+        <Group>
+          <GroupName>::Device</GroupName>
+          <GroupOption>
+            <CommonProperty>
+              <UseCPPCompiler>0</UseCPPCompiler>
+              <RVCTCodeConst>0</RVCTCodeConst>
+              <RVCTZI>0</RVCTZI>
+              <RVCTOtherData>0</RVCTOtherData>
+              <ModuleSelection>0</ModuleSelection>
+              <IncludeInBuild>1</IncludeInBuild>
+              <AlwaysBuild>2</AlwaysBuild>
+              <GenerateAssemblyFile>2</GenerateAssemblyFile>
+              <AssembleAssemblyFile>2</AssembleAssemblyFile>
+              <PublicsOnly>2</PublicsOnly>
+              <StopOnExitCode>11</StopOnExitCode>
+              <CustomArgument></CustomArgument>
+              <IncludeLibraryModules></IncludeLibraryModules>
+              <ComprImg>1</ComprImg>
+            </CommonProperty>
+            <GroupArmAds>
+              <Cads>
+                <interw>2</interw>
+                <Optim>0</Optim>
+                <oTime>2</oTime>
+                <SplitLS>2</SplitLS>
+                <OneElfS>2</OneElfS>
+                <Strict>2</Strict>
+                <EnumInt>2</EnumInt>
+                <PlainCh>2</PlainCh>
+                <Ropi>2</Ropi>
+                <Rwpi>2</Rwpi>
+                <wLevel>0</wLevel>
+                <uThumb>2</uThumb>
+                <uSurpInc>2</uSurpInc>
+                <uC99>2</uC99>
+                <uGnu>2</uGnu>
+                <useXO>2</useXO>
+                <v6Lang>0</v6Lang>
+                <v6LangP>0</v6LangP>
+                <vShortEn>2</vShortEn>
+                <vShortWch>2</vShortWch>
+                <v6Lto>2</v6Lto>
+                <v6WtE>2</v6WtE>
+                <v6Rtti>2</v6Rtti>
+                <VariousControls>
+                  <MiscControls></MiscControls>
+                  <Define></Define>
+                  <Undefine></Undefine>
+                  <IncludePath></IncludePath>
+                </VariousControls>
+              </Cads>
+              <Aads>
+                <interw>2</interw>
+                <Ropi>2</Ropi>
+                <Rwpi>2</Rwpi>
+                <thumb>2</thumb>
+                <SplitLS>2</SplitLS>
+                <SwStkChk>2</SwStkChk>
+                <NoWarn>2</NoWarn>
+                <uSurpInc>2</uSurpInc>
+                <useXO>2</useXO>
+                <ClangAsOpt>0</ClangAsOpt>
+                <VariousControls>
+                  <MiscControls></MiscControls>
+                  <Define></Define>
+                  <Undefine></Undefine>
+                  <IncludePath></IncludePath>
+                </VariousControls>
+              </Aads>
+            </GroupArmAds>
+          </GroupOption>
+        </Group>
+        <Group>
+          <GroupName>::USB</GroupName>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <packages>
+      <filter>
+        <targetInfos/>
+      </filter>
+      <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0">
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </package>
+      <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0">
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </package>
+      <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0">
+        <targetInfos>
+          <targetInfo name="MCU-LINK" versionMatchMode="fixed"/>
+        </targetInfos>
+      </package>
+    </packages>
+    <apis>
+      <api Capiversion="2.01" Cclass="CMSIS Driver" Cgroup="USART" exclusive="0">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.3.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </api>
+      <api Capiversion="2.01" Cclass="CMSIS Driver" Cgroup="USB Device" exclusive="0">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.3.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </api>
+      <api Capiversion="2.1.2" Cclass="CMSIS" Cgroup="RTOS2" exclusive="1">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.2.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </api>
+    </apis>
+    <components>
+      <component Capiversion="2.4.0" Cclass="CMSIS Driver" Cgroup="USART" Csub="Custom" Cvendor="ARM" Cversion="1.0.0" custom="1">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Capiversion="2.3.0" Cclass="CMSIS Driver" Cgroup="USB Device" Csub="Custom" Cvendor="ARM" Cversion="1.0.0" custom="1">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.5.0" condition="ARMv6_7_8-M Device">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.3" condition="RTOS2 RTX5">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="CORE" Cvariant="Release" Cvendor="Keil" Cversion="6.15.0" condition="USB Core">
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4">
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Csub="CDC" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="8">
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Csub="Custom Class" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4">
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Capiversion="2.3.0" Cclass="CMSIS Driver" Cgroup="USART" Csub="flexcomm_usart_cmsis" Cvendor="NXP" Cversion="2.2.0" condition="device.LPC55S69_AND_CMSIS_Driver_Include.USART_AND_RTE_Device_AND_driver.flexcomm_usart_dma">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="CMSIS" Csub="LPC55S69_system" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_device.LPC55S69_CMSIS">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="clock" Cvendor="NXP" Cversion="2.3.3" condition="device.LPC55S69_AND__driver.power_OR_driver.power_s__AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="common" Cvendor="NXP" Cversion="2.3.0" condition="device.LPC55S69_AND_device.LPC55S69_CMSIS_AND_driver.clock_AND_driver.reset">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="dma" Cvendor="NXP" Cversion="2.4.2" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="flexcomm" Cvendor="NXP" Cversion="2.0.2" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="gpio" Cvendor="NXP" Cversion="2.1.7" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="iap1" Cvendor="NXP" Cversion="2.1.3" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="iocon" Cvendor="NXP" Cversion="2.2.0" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="lists" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="power" Cvendor="NXP" Cversion="2.0.0" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="reset" Cvendor="NXP" Cversion="2.0.1" condition="device.LPC55S69_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="usart" Cvendor="NXP" Cversion="2.6.0" condition="device.LPC55S69_AND_driver.flexcomm">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo excluded="1" name="MCU-LINK" versionMatchMode=""/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="usart_adapter" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_driver.common_AND_driver.flexcomm_AND_driver.flexcomm_usart">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Drivers" Csub="usart_dma" Cvendor="NXP" Cversion="2.6.0" condition="device.LPC55S69_AND_driver.flexcomm_AND_driver.flexcomm_usart_AND_driver.lpc_dma">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Project Template" Csub="RTE_Device" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_driver.lpc_dma">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Utilities" Csub="assert" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_utility.debug_console">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Utilities" Csub="debug_console" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_component.serial_manager_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Utilities" Csub="serial_manager" Cvendor="NXP" Cversion="1.0.1" condition="device.LPC55S69_AND__component.serial_manager_swo_OR_component.serial_manager_uart_OR_component.serial_manager_virtual__AND_component.lists_AND_driver.common">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="SDK Utilities" Csub="serial_manager_uart" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_component.serial_manager_AND_component.usart_adapter_AND_driver.flexcomm_usart">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+      <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system">
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </component>
+    </components>
+    <files>
+      <file attr="config" category="source" name="CMSIS\RTOS2\RTX\Config\RTX_Config.c" version="5.1.1">
+        <instance index="0">RTE\CMSIS\RTX_Config.c</instance>
+        <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.3" condition="RTOS2 RTX5"/>
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="header" name="CMSIS\RTOS2\RTX\Config\RTX_Config.h" version="5.5.2">
+        <instance index="0">RTE\CMSIS\RTX_Config.h</instance>
+        <component Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Library" Cvendor="ARM" Cversion="5.5.3" condition="RTOS2 RTX5"/>
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.8.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="linkerScript" condition="core_id.cm33_core0_AND_core_type.cm33_AND_mdk" name="arm\LPC55S69_cm33_core0_flash.scf" version="1.1.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\LPC55S69_cm33_core0_flash.scf</instance>
+        <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="linkerScript" condition="core_id.cm33_core0_AND_core_type.cm33_AND_mdk" name="arm\LPC55S69_cm33_core0_flash_ns.scf" version="1.1.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\LPC55S69_cm33_core0_flash_ns.scf</instance>
+        <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="linkerScript" condition="core_id.cm33_core0_AND_core_type.cm33_AND_mdk" name="arm\LPC55S69_cm33_core0_flash_s.scf" version="1.1.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\LPC55S69_cm33_core0_flash_s.scf</instance>
+        <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="linkerScript" condition="core_id.cm33_core0_AND_core_type.cm33_AND_mdk" name="arm\LPC55S69_cm33_core0_ram.scf" version="1.1.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\LPC55S69_cm33_core0_ram.scf</instance>
+        <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="header" name="template\RTE_Device.h" version="1.0.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\RTE_Device.h</instance>
+        <component Cclass="Device" Cgroup="SDK Project Template" Csub="RTE_Device" Cvendor="NXP" Cversion="1.0.0" condition="device.LPC55S69_AND_driver.lpc_dma"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="sourceAsm" condition="core_id.cm33_core0_AND_core_type.cm33_AND_mdk" name="arm\startup_LPC55S69_cm33_core0.S" version="1.1.0">
+        <instance index="0">RTE\Device\LPC55S69JBD64_cm33_core0\startup_LPC55S69_cm33_core0.S</instance>
+        <component Cclass="Device" Cgroup="Startup" Cvendor="NXP" Cversion="1.1.0" condition="device.LPC55S69_AND_CMSIS_Include_core_cm_AND__armclang_OR_iar__AND_device.LPC55S69_system"/>
+        <package name="LPC55S69_DFP" schemaVersion="1.4" url="https://mcuxpresso.nxp.com/cmsis_pack/repo/" vendor="NXP" version="13.1.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="source" name="USB\Config\USBD_Config.c" version="5.2.0">
+        <instance index="0">RTE\USB\USBD_Config_0.c</instance>
+        <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4"/>
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="header" name="USB\Config\USBD_Config_CDC.h" version="5.2.0">
+        <instance index="0">RTE\USB\USBD_Config_CDC_0.h</instance>
+        <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Csub="CDC" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="8"/>
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+      <file attr="config" category="header" name="USB\Config\USBD_Config_CustomClass.h" version="5.2.0">
+        <instance index="0">RTE\USB\USBD_Config_CustomClass_0.h</instance>
+        <component Cbundle="MDK-Plus" Cclass="USB" Cgroup="Device" Csub="Custom Class" Cvendor="Keil" Cversion="6.15.0" condition="USB Core and Device Instance and Device Driver" maxInstances="4"/>
+        <package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.13.0"/>
+        <targetInfos>
+          <targetInfo name="MCU-LINK"/>
+        </targetInfos>
+      </file>
+    </files>
+  </RTE>
+
+  <LayerInfo>
+    <Layers>
+      <Layer>
+        <LayName>CMSIS_DAP</LayName>
+        <LayPrjMark>1</LayPrjMark>
+      </Layer>
+    </Layers>
+  </LayerInfo>
+
+</Project>

+ 133 - 170
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/DAP_config.h → CMSIS/DAP/Firmware/Examples/MCU-LINK/DAP_config.h

@@ -17,11 +17,11 @@
  *
  * ----------------------------------------------------------------------
  *
- * $Date:        16. June 2021
+ * $Date:        15. September 2021
  * $Revision:    V2.1.0
  *
- * Project:      CMSIS-DAP Examples LPC-Link2
- * Title:        DAP_config.h CMSIS-DAP Configuration File for LPC-Link2
+ * Project:      CMSIS-DAP Examples MCU-LINK
+ * Title:        DAP_config.h CMSIS-DAP Configuration File for MCU-LINK
  *
  *---------------------------------------------------------------------------*/
 
@@ -30,9 +30,9 @@
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Debug_gr CMSIS-DAP Debug Unit Information
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 Provides definitions about the hardware and configuration of the Debug Unit.
 
@@ -51,15 +51,20 @@ This information includes:
 #include "device.h"                             // Debug Unit Cortex-M Processor Header File
 #endif
 
+#include "pin_mux.h"
+#include "fsl_gpio.h"
+
+#include "ser_num.h"
+
 /// Processor Clock of the Cortex-M MCU used in the Debug Unit.
 /// This value is used to calculate the SWD/JTAG clock speed.
-#define CPU_CLOCK               180000000U      ///< Specifies the CPU Clock in Hz.
+#define CPU_CLOCK               150000000U      ///< Specifies the CPU Clock in Hz.
 
 /// Number of processor cycles for I/O Port write operations.
 /// This value is used to calculate the SWD/JTAG clock speed that is generated with I/O
 /// Port write operations in the Debug Unit by a Cortex-M MCU. Most Cortex-M processors
 /// require 2 processor cycles for a I/O Port Write operation.  If the Debug Unit uses
-/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be 
+/// a Cortex-M0+ processor with high-speed peripheral I/O only 1 processor cycle might be
 /// required.
 #define IO_PORT_WRITE_CYCLES    2U              ///< I/O Cycles: 2=default, 1=Cortex-M0+ fast I/0.
 
@@ -88,23 +93,23 @@ This information includes:
 /// This configuration settings is used to optimize the communication performance with the
 /// debugger and depends on the USB peripheral. Typical vales are 64 for Full-speed USB HID or WinUSB,
 /// 1024 for High-speed USB HID and 512 for High-speed USB WinUSB.
-#define DAP_PACKET_SIZE         1024U           ///< Specifies Packet Size in bytes.
+#define DAP_PACKET_SIZE         512U            ///< Specifies Packet Size in bytes.
 
 /// Maximum Package Buffers for Command and Response data.
 /// This configuration settings is used to optimize the communication performance with the
 /// debugger and depends on the USB peripheral. For devices with limited RAM or USB buffer the
 /// setting can be reduced (valid range is 1 .. 255).
-#define DAP_PACKET_COUNT        4U              ///< Specifies number of packets buffered.
+#define DAP_PACKET_COUNT        8U              ///< Specifies number of packets buffered.
 
 /// Indicate that UART Serial Wire Output (SWO) trace is available.
 /// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
 #define SWO_UART                1               ///< SWO UART:  1 = available, 0 = not available.
 
 /// USART Driver instance number for the UART SWO.
-#define SWO_UART_DRIVER         1               ///< USART Driver instance number (Driver_USART#).
+#define SWO_UART_DRIVER         3               ///< USART Driver instance number (Driver_USART#).
 
 /// Maximum SWO UART Baudrate.
-#define SWO_UART_MAX_BAUDRATE   10000000U       ///< SWO UART Maximum Baudrate in Hz.
+#define SWO_UART_MAX_BAUDRATE   9000000U        ///< SWO UART Maximum Baudrate in Hz.
 
 /// Indicate that Manchester Serial Wire Output (SWO) trace is available.
 /// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
@@ -114,14 +119,14 @@ This information includes:
 #define SWO_BUFFER_SIZE         8192U           ///< SWO Trace Buffer Size in bytes (must be 2^n).
 
 /// SWO Streaming Trace.
-#define SWO_STREAM              0               ///< SWO Streaming Trace: 1 = available, 0 = not available.
+#define SWO_STREAM              1               ///< SWO Streaming Trace: 1 = available, 0 = not available.
 
 /// Clock frequency of the Test Domain Timer. Timer value is returned with \ref TIMESTAMP_GET.
-#define TIMESTAMP_CLOCK         180000000U      ///< Timestamp clock in Hz (0 = timestamps not supported).
+#define TIMESTAMP_CLOCK         150000000U      ///< Timestamp clock in Hz (0 = timestamps not supported).
 
 /// Indicate that UART Communication Port is available.
 /// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
-#define DAP_UART                0               ///< DAP UART:  1 = available, 0 = not available.
+#define DAP_UART                1               ///< DAP UART:  1 = available, 0 = not available.
 
 /// USART Driver instance number for the UART Communication Port.
 #define DAP_UART_DRIVER         0               ///< USART Driver instance number (Driver_USART#).
@@ -134,7 +139,7 @@ This information includes:
 
 /// Indicate that UART Communication via USB COM Port is available.
 /// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
-#define DAP_UART_USB_COM_PORT   0               ///< USB COM Port:  1 = available, 0 = not available.
+#define DAP_UART_USB_COM_PORT   1               ///< USB COM Port:  1 = available, 0 = not available.
 
 /// Debug Unit is connected to fixed Target Device.
 /// The Debug Unit may be part of an evaluation board and always connected to a fixed
@@ -178,8 +183,16 @@ __STATIC_INLINE uint8_t DAP_GetProductString (char *str) {
 \return String length (including terminating NULL character) or 0 (no string).
 */
 __STATIC_INLINE uint8_t DAP_GetSerNumString (char *str) {
-  (void)str;
-  return (0U);
+  uint8_t len = 0U;
+  char *ser_num;
+
+  ser_num = GetSerialNum();
+  if (ser_num != NULL) {
+    strcpy(str, ser_num);
+    len = (uint8_t)(strlen(ser_num) + 1U);
+  }
+
+  return (len);
 }
 
 /** Get Target Device Vendor string.
@@ -261,70 +274,19 @@ __STATIC_INLINE uint8_t DAP_GetProductFirmwareVersionString (char *str) {
 
 ///@}
 
-
-// LPC43xx peripheral register bit masks (used by macros)
-#define CCU_CLK_CFG_RUN         (1U << 0)
-#define CCU_CLK_CFG_AUTO        (1U << 1)
-#define CCU_CLK_STAT_RUN        (1U << 0)
-#define SCU_SFS_EPD             (1U << 3)
-#define SCU_SFS_EPUN            (1U << 4)
-#define SCU_SFS_EHS             (1U << 5)
-#define SCU_SFS_EZI             (1U << 6)
-#define SCU_SFS_ZIF             (1U << 7)
-
-
 // Debug Port I/O Pins
-
-// SWCLK/TCK Pin                P1_17: GPIO0[12]
-#define PIN_SWCLK_TCK_PORT      0
-#define PIN_SWCLK_TCK_BIT       12
-
-// SWDIO/TMS Pin                P1_6:  GPIO1[9]
-#define PIN_SWDIO_TMS_PORT      1
-#define PIN_SWDIO_TMS_BIT       9
-
-// SWDIO Output Enable Pin      P1_5:  GPIO1[8]
-#define PIN_SWDIO_OE_PORT       1
-#define PIN_SWDIO_OE_BIT        8
-
-// TDI Pin                      P1_18: GPIO0[13]
-#define PIN_TDI_PORT            0
-#define PIN_TDI_BIT             13
-
-// TDO Pin                      P1_14: GPIO1[7]
-#define PIN_TDO_PORT            1
-#define PIN_TDO_BIT             7
-
-// nTRST Pin                    Not available
-#define PIN_nTRST_PORT
-#define PIN_nTRST_BIT
-
-// nRESET Pin                   P2_5:  GPIO5[5]
-#define PIN_nRESET_PORT         5
-#define PIN_nRESET_BIT          5
-
-// nRESET Output Enable Pin     P2_6:  GPIO5[6]
-#define PIN_nRESET_OE_PORT      5
-#define PIN_nRESET_OE_BIT       6
-
-
-// Debug Unit LEDs
-
-// Connected LED                P1_1: GPIO0[8]
-#define LED_CONNECTED_PORT      0
-#define LED_CONNECTED_BIT       8
-
-// Target Running LED           Not available
-
+//SWO/TDO
+#define PIN_SWO_TDO_PORT  (0U)
+#define PIN_SWO_TDO_PIN   (3U)
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_PortIO_gr CMSIS-DAP Hardware I/O Pin Access
-\ingroup DAP_ConfigIO_gr 
+\ingroup DAP_ConfigIO_gr
 @{
 
 Standard I/O Pins of the CMSIS-DAP Hardware Debug Port support standard JTAG mode
-and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug 
+and Serial Wire Debug (SWD) mode. In SWD mode only 2 pins are required to implement the debug
 interface of a device. The following I/O Pins are provided:
 
 JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mode
@@ -332,19 +294,19 @@ JTAG I/O Pin                 | SWD I/O Pin          | CMSIS-DAP Hardware pin mod
 TCK: Test Clock              | SWCLK: Clock         | Output Push/Pull
 TMS: Test Mode Select        | SWDIO: Data I/O      | Output Push/Pull; Input (for receiving data)
 TDI: Test Data Input         |                      | Output Push/Pull
-TDO: Test Data Output        |                      | Input             
+TDO: Test Data Output        |                      | Input
 nTRST: Test Reset (optional) |                      | Output Open Drain with pull-up resistor
 nRESET: Device Reset         | nRESET: Device Reset | Output Open Drain with pull-up resistor
 
 
 DAP Hardware I/O Pin Access Functions
 -------------------------------------
-The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to 
-these I/O Pins. 
+The various I/O Pins are accessed by functions that implement the Read, Write, Set, or Clear to
+these I/O Pins.
 
 For the SWDIO I/O Pin there are additional functions that are called in SWD I/O mode only.
-This functions are provided to achieve faster I/O that is possible with some advanced GPIO 
-peripherals that can independently write/read a single I/O pin without affecting any other pins 
+This functions are provided to achieve faster I/O that is possible with some advanced GPIO
+peripherals that can independently write/read a single I/O pin without affecting any other pins
 of the same I/O port. The following SWDIO I/O Pin functions are provided:
  - \ref PIN_SWDIO_OUT_ENABLE to enable the output mode from the DAP hardware.
  - \ref PIN_SWDIO_OUT_DISABLE to enable the input mode to the DAP hardware.
@@ -355,29 +317,58 @@ of the same I/O port. The following SWDIO I/O Pin functions are provided:
 
 // Configure DAP I/O pins ------------------------------
 
-//   LPC-Link2 HW uses buffers for debug port pins. Therefore it is not
-//   possible to disable outputs SWCLK/TCK, TDI and they are left active.
-//   Only SWDIO/TMS output can be disabled but it is also left active.
-//   nRESET is configured for open drain mode.
-
 /** Setup JTAG I/O pins: TCK, TMS, TDI, TDO, nTRST, and nRESET.
 Configures the DAP Hardware I/O pins for JTAG mode:
  - TCK, TMS, TDI, nTRST, nRESET to output mode and set to high level.
  - TDO to input mode.
-*/ 
+*/
 __STATIC_INLINE void PORT_JTAG_SETUP (void) {
-  LPC_GPIO_PORT->MASK[PIN_SWDIO_TMS_PORT] = 0U;
-  LPC_GPIO_PORT->MASK[PIN_TDI_PORT] = ~(1U << PIN_TDI_BIT);
+
+  // TCK
+  DBGIF_TCK_SWCLK_GPIO->SET[DBGIF_TCK_SWCLK_PORT]    = (1U << DBGIF_TCK_SWCLK_PIN);
+  DBGIF_TCK_SWCLK_GPIO->DIRSET[DBGIF_TCK_SWCLK_PORT] = (1U << DBGIF_TCK_SWCLK_PIN);
+
+  // TDI
+  DBGIF_TDI_GPIO->SET[DBGIF_TDI_PORT]    = (1U << DBGIF_TDI_PIN);
+  DBGIF_TDI_GPIO->DIRSET[DBGIF_TDI_PORT] = (1U << DBGIF_TDI_PIN);
+
+  // TMS
+  DBGIF_TMS_SWDIO_GPIO->SET[DBGIF_TMS_SWDIO_PORT]           = (1U << DBGIF_TMS_SWDIO_PIN);
+  DBGIF_TMS_SWDIO_GPIO->DIRSET[DBGIF_TMS_SWDIO_PORT]        = (1U << DBGIF_TMS_SWDIO_PIN);
+  DBGIF_TMS_SWDIO_TXEN_GPIO->SET[DBGIF_TMS_SWDIO_TXEN_PORT] = (1U << DBGIF_TMS_SWDIO_TXEN_PIN);
+
+  // nRESET
+  DBGIF_RESET_GPIO->SET[DBGIF_RESET_PORT]           = (1U << DBGIF_RESET_PIN);
+  DBGIF_RESET_GPIO->DIRSET[DBGIF_RESET_PORT]        = (1U << DBGIF_RESET_PIN);
+  DBGIF_RESET_TXEN_GPIO->SET[DBGIF_RESET_TXEN_PORT] = (1U << DBGIF_RESET_TXEN_PIN);
+
+  // TDO
+  GPIO->DIRCLR[PIN_SWO_TDO_PORT] = (1U << PIN_SWO_TDO_PIN);
 }
- 
+
 /** Setup SWD I/O pins: SWCLK, SWDIO, and nRESET.
 Configures the DAP Hardware I/O pins for Serial Wire Debug (SWD) mode:
  - SWCLK, SWDIO, nRESET to output mode and set to default high level.
  - TDI, nTRST to HighZ mode (pins are unused in SWD mode).
-*/ 
+*/
 __STATIC_INLINE void PORT_SWD_SETUP (void) {
-  LPC_GPIO_PORT->MASK[PIN_TDI_PORT] = 0U;
-  LPC_GPIO_PORT->MASK[PIN_SWDIO_TMS_PORT] = ~(1U << PIN_SWDIO_TMS_BIT);
+
+  // SWCLK
+  DBGIF_TCK_SWCLK_GPIO->SET[DBGIF_TCK_SWCLK_PORT]    = (1U << DBGIF_TCK_SWCLK_PIN);
+  DBGIF_TCK_SWCLK_GPIO->DIRSET[DBGIF_TCK_SWCLK_PORT] = (1U << DBGIF_TCK_SWCLK_PIN);
+
+  // SWDIO
+  DBGIF_TMS_SWDIO_GPIO->SET[DBGIF_TMS_SWDIO_PORT]           = (1U << DBGIF_TMS_SWDIO_PIN);
+  DBGIF_TMS_SWDIO_GPIO->DIRSET[DBGIF_TMS_SWDIO_PORT]        = (1U << DBGIF_TMS_SWDIO_PIN);
+  DBGIF_TMS_SWDIO_TXEN_GPIO->SET[DBGIF_TMS_SWDIO_TXEN_PORT] = (1U << DBGIF_TMS_SWDIO_TXEN_PIN);
+
+  // nRESET
+  DBGIF_RESET_GPIO->SET[DBGIF_RESET_PORT]           = (1U << DBGIF_RESET_PIN);
+  DBGIF_RESET_GPIO->DIRSET[DBGIF_RESET_PORT]        = (1U << DBGIF_RESET_PIN);
+  DBGIF_RESET_TXEN_GPIO->SET[DBGIF_RESET_TXEN_PORT] = (1U << DBGIF_RESET_TXEN_PIN);
+ 
+  // TDI
+  DBGIF_TDI_GPIO->DIRCLR[DBGIF_TDI_PORT] = (1U << DBGIF_TDI_PIN);
 }
 
 /** Disable JTAG/SWD I/O Pins.
@@ -385,12 +376,23 @@ Disables the DAP Hardware I/O pins which configures:
  - TCK/SWCLK, TMS/SWDIO, TDI, TDO, nTRST, nRESET to High-Z mode.
 */
 __STATIC_INLINE void PORT_OFF (void) {
-  LPC_GPIO_PORT->SET[PIN_SWCLK_TCK_PORT]  =  (1U << PIN_SWCLK_TCK_BIT);
-  LPC_GPIO_PORT->SET[PIN_SWDIO_TMS_PORT]  =  (1U << PIN_SWDIO_TMS_BIT);
-  LPC_GPIO_PORT->SET[PIN_SWDIO_OE_PORT]   =  (1U << PIN_SWDIO_OE_BIT);
-  LPC_GPIO_PORT->SET[PIN_TDI_PORT]        =  (1U << PIN_TDI_BIT);
-  LPC_GPIO_PORT->DIR[PIN_nRESET_PORT]    &= ~(1U << PIN_nRESET_BIT);
-  LPC_GPIO_PORT->CLR[PIN_nRESET_OE_PORT]  =  (1U << PIN_nRESET_OE_BIT);
+
+  // TCK/SWCLK
+  DBGIF_TCK_SWCLK_GPIO->DIRCLR[DBGIF_TCK_SWCLK_PORT] = (1U << DBGIF_TCK_SWCLK_PIN);
+
+  // TMS/SWDIO
+  DBGIF_TMS_SWDIO_TXEN_GPIO->CLR[DBGIF_TMS_SWDIO_TXEN_PORT] = (1U << DBGIF_TMS_SWDIO_TXEN_PIN);
+  DBGIF_TMS_SWDIO_GPIO->DIRCLR[DBGIF_TMS_SWDIO_PORT]        = (1U << DBGIF_TMS_SWDIO_PIN);
+
+  // nRESET
+  DBGIF_RESET_TXEN_GPIO->CLR[DBGIF_RESET_TXEN_PORT] = (1U << DBGIF_RESET_TXEN_PIN);
+  DBGIF_RESET_GPIO->DIRCLR[DBGIF_RESET_PORT]        = (1U << DBGIF_RESET_PIN);
+  
+  // TDI
+  DBGIF_TDI_GPIO->DIRCLR[DBGIF_TDI_PORT] = (1U << DBGIF_TDI_PIN);
+  
+  // TDO
+  GPIO->DIRCLR[PIN_SWO_TDO_PORT] = (1U << PIN_SWO_TDO_PIN);
 }
 
 
@@ -400,21 +402,21 @@ __STATIC_INLINE void PORT_OFF (void) {
 \return Current status of the SWCLK/TCK DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_SWCLK_TCK_IN  (void) {
-  return ((LPC_GPIO_PORT->PIN[PIN_SWCLK_TCK_PORT] >> PIN_SWCLK_TCK_BIT) & 1U);
+  return ((DBGIF_TCK_SWCLK_GPIO->PIN[DBGIF_TCK_SWCLK_PORT] >> DBGIF_TCK_SWCLK_PIN) & 1U);
 }
 
 /** SWCLK/TCK I/O pin: Set Output to High.
 Set the SWCLK/TCK DAP hardware I/O pin to high level.
 */
 __STATIC_FORCEINLINE void     PIN_SWCLK_TCK_SET (void) {
-  LPC_GPIO_PORT->SET[PIN_SWCLK_TCK_PORT] = 1U << PIN_SWCLK_TCK_BIT;
+  DBGIF_TCK_SWCLK_GPIO->SET[DBGIF_TCK_SWCLK_PORT] = (1U << DBGIF_TCK_SWCLK_PIN);
 }
 
 /** SWCLK/TCK I/O pin: Set Output to Low.
 Set the SWCLK/TCK DAP hardware I/O pin to low level.
 */
 __STATIC_FORCEINLINE void     PIN_SWCLK_TCK_CLR (void) {
-  LPC_GPIO_PORT->CLR[PIN_SWCLK_TCK_PORT] = 1U << PIN_SWCLK_TCK_BIT;
+  DBGIF_TCK_SWCLK_GPIO->CLR[DBGIF_TCK_SWCLK_PORT] = (1U << DBGIF_TCK_SWCLK_PIN);
 }
 
 
@@ -424,35 +426,35 @@ __STATIC_FORCEINLINE void     PIN_SWCLK_TCK_CLR (void) {
 \return Current status of the SWDIO/TMS DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_SWDIO_TMS_IN  (void) {
-  return ((LPC_GPIO_PORT->PIN[PIN_SWDIO_TMS_PORT] >> PIN_SWDIO_TMS_BIT) & 1U);
+  return ((DBGIF_TMS_SWDIO_GPIO->PIN[DBGIF_TMS_SWDIO_PORT] >> DBGIF_TMS_SWDIO_PIN) & 1U);
 }
 
 /** SWDIO/TMS I/O pin: Set Output to High.
 Set the SWDIO/TMS DAP hardware I/O pin to high level.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_TMS_SET (void) {
-  LPC_GPIO_PORT->SET[PIN_SWDIO_TMS_PORT] = 1U << PIN_SWDIO_TMS_BIT;
+  DBGIF_TMS_SWDIO_GPIO->SET[DBGIF_TMS_SWDIO_PORT] = (1U << DBGIF_TMS_SWDIO_PIN);
 }
 
 /** SWDIO/TMS I/O pin: Set Output to Low.
 Set the SWDIO/TMS DAP hardware I/O pin to low level.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_TMS_CLR (void) {
-  LPC_GPIO_PORT->CLR[PIN_SWDIO_TMS_PORT] = 1U << PIN_SWDIO_TMS_BIT;
+  DBGIF_TMS_SWDIO_GPIO->CLR[DBGIF_TMS_SWDIO_PORT] = (1U << DBGIF_TMS_SWDIO_PIN);
 }
 
 /** SWDIO I/O pin: Get Input (used in SWD mode only).
 \return Current status of the SWDIO DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN      (void) {
-  return (LPC_GPIO_PORT->MPIN[PIN_SWDIO_TMS_PORT] >> PIN_SWDIO_TMS_BIT);
+  return (DBGIF_TMS_SWDIO_GPIO->B[DBGIF_TMS_SWDIO_PORT][DBGIF_TMS_SWDIO_PIN]);
 }
 
 /** SWDIO I/O pin: Set Output (used in SWD mode only).
 \param bit Output value for the SWDIO DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_OUT     (uint32_t bit) {
-  LPC_GPIO_PORT->MPIN[PIN_SWDIO_TMS_PORT] = bit << PIN_SWDIO_TMS_BIT;
+  DBGIF_TMS_SWDIO_GPIO->B[DBGIF_TMS_SWDIO_PORT][DBGIF_TMS_SWDIO_PIN] = bit;
 }
 
 /** SWDIO I/O pin: Switch to Output mode (used in SWD mode only).
@@ -460,7 +462,8 @@ Configure the SWDIO DAP hardware I/O pin to output mode. This function is
 called prior \ref PIN_SWDIO_OUT function calls.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_OUT_ENABLE  (void) {
-  LPC_GPIO_PORT->SET[PIN_SWDIO_OE_PORT] = 1U << PIN_SWDIO_OE_BIT;
+  DBGIF_TMS_SWDIO_GPIO->DIRSET[DBGIF_TMS_SWDIO_PORT]        = (1U << DBGIF_TMS_SWDIO_PIN);
+  DBGIF_TMS_SWDIO_TXEN_GPIO->SET[DBGIF_TMS_SWDIO_TXEN_PORT] = (1U << DBGIF_TMS_SWDIO_TXEN_PIN);
 }
 
 /** SWDIO I/O pin: Switch to Input mode (used in SWD mode only).
@@ -468,7 +471,8 @@ Configure the SWDIO DAP hardware I/O pin to input mode. This function is
 called prior \ref PIN_SWDIO_IN function calls.
 */
 __STATIC_FORCEINLINE void     PIN_SWDIO_OUT_DISABLE (void) {
-  LPC_GPIO_PORT->CLR[PIN_SWDIO_OE_PORT] = 1U << PIN_SWDIO_OE_BIT;
+  DBGIF_TMS_SWDIO_TXEN_GPIO->CLR[DBGIF_TMS_SWDIO_TXEN_PORT] = (1U << DBGIF_TMS_SWDIO_TXEN_PIN);
+  DBGIF_TMS_SWDIO_GPIO->DIRCLR[DBGIF_TMS_SWDIO_PORT]        = (1U << DBGIF_TMS_SWDIO_PIN);
 }
 
 
@@ -478,14 +482,14 @@ __STATIC_FORCEINLINE void     PIN_SWDIO_OUT_DISABLE (void) {
 \return Current status of the TDI DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_TDI_IN  (void) {
-  return ((LPC_GPIO_PORT->PIN [PIN_TDI_PORT] >> PIN_TDI_BIT) & 1U);
+  return (DBGIF_TDI_GPIO->B[DBGIF_TDI_PORT][DBGIF_TDI_PIN]);
 }
 
 /** TDI I/O pin: Set Output.
 \param bit Output value for the TDI DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE void     PIN_TDI_OUT (uint32_t bit) {
-  LPC_GPIO_PORT->MPIN[PIN_TDI_PORT] = bit << PIN_TDI_BIT;
+  DBGIF_TDI_GPIO->B[DBGIF_TDI_PORT][DBGIF_TDI_PIN] = bit;
 }
 
 
@@ -495,7 +499,8 @@ __STATIC_FORCEINLINE void     PIN_TDI_OUT (uint32_t bit) {
 \return Current status of the TDO DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_TDO_IN  (void) {
-  return ((LPC_GPIO_PORT->PIN[PIN_TDO_PORT] >> PIN_TDO_BIT) & 1U);
+  return (GPIO->B[PIN_SWO_TDO_PORT][PIN_SWO_TDO_PIN]);
+
 }
 
 
@@ -524,7 +529,7 @@ __STATIC_FORCEINLINE void     PIN_nTRST_OUT  (uint32_t bit) {
 \return Current status of the nRESET DAP hardware I/O pin.
 */
 __STATIC_FORCEINLINE uint32_t PIN_nRESET_IN  (void) {
-  return ((LPC_GPIO_PORT->PIN[PIN_nRESET_PORT] >> PIN_nRESET_BIT) & 1U);
+  return ((DBGIF_RESET_GPIO->PIN[DBGIF_RESET_PORT] >> DBGIF_RESET_PIN) & 1U);
 }
 
 /** nRESET I/O pin: Set Output.
@@ -534,11 +539,13 @@ __STATIC_FORCEINLINE uint32_t PIN_nRESET_IN  (void) {
 */
 __STATIC_FORCEINLINE void     PIN_nRESET_OUT (uint32_t bit) {
   if (bit) {
-    LPC_GPIO_PORT->DIR[PIN_nRESET_PORT]    &= ~(1U << PIN_nRESET_BIT);
-    LPC_GPIO_PORT->CLR[PIN_nRESET_OE_PORT]  =  (1U << PIN_nRESET_OE_BIT);
+    DBGIF_RESET_GPIO->SET[DBGIF_RESET_PORT]           = (1U << DBGIF_RESET_PIN);
+    DBGIF_RESET_TXEN_GPIO->CLR[DBGIF_RESET_TXEN_PORT] = (1U << DBGIF_RESET_TXEN_PIN);
+    DBGIF_RESET_GPIO->DIRCLR[DBGIF_RESET_PORT]        = (1U << DBGIF_RESET_PIN);
   } else {
-    LPC_GPIO_PORT->SET[PIN_nRESET_OE_PORT]  =  (1U << PIN_nRESET_OE_BIT);
-    LPC_GPIO_PORT->DIR[PIN_nRESET_PORT]    |=  (1U << PIN_nRESET_BIT);
+    DBGIF_RESET_GPIO->CLR[DBGIF_RESET_PORT]           = (1U << DBGIF_RESET_PIN);
+    DBGIF_RESET_GPIO->DIRSET[DBGIF_RESET_PORT]        = (1U << DBGIF_RESET_PIN);
+    DBGIF_RESET_TXEN_GPIO->SET[DBGIF_RESET_TXEN_PORT] = (1U << DBGIF_RESET_TXEN_PIN);
   }
 }
 
@@ -564,7 +571,11 @@ It is recommended to provide the following LEDs for status indication:
            - 0: Connect LED OFF: debugger is not connected to CMSIS-DAP Debug Unit.
 */
 __STATIC_INLINE void LED_CONNECTED_OUT (uint32_t bit) {
-  LPC_GPIO_PORT->B[32*LED_CONNECTED_PORT + LED_CONNECTED_BIT] = (uint8_t)bit;
+  if (bit) {
+    LED1_GPIO->CLR[LED1_PORT] = (1U << LED1_PIN);
+  } else {
+    LED1_GPIO->SET[LED1_PORT] = (1U << LED1_PIN);
+  }
 }
 
 /** Debug Unit: Set status Target Running LED.
@@ -581,13 +592,13 @@ __STATIC_INLINE void LED_RUNNING_OUT (uint32_t bit) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Timestamp_gr CMSIS-DAP Timestamp
 \ingroup DAP_ConfigIO_gr
 @{
 Access function for Test Domain Timer.
 
-The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By 
+The value of the Test Domain Timer in the Debug Unit is returned by the function \ref TIMESTAMP_GET. By
 default, the DWT timer is used.  The frequency of this timer is configured with \ref TIMESTAMP_CLOCK.
 
 */
@@ -603,7 +614,7 @@ __STATIC_INLINE uint32_t TIMESTAMP_GET (void) {
 
 
 //**************************************************************************************************
-/** 
+/**
 \defgroup DAP_Config_Initialization_gr CMSIS-DAP Initialization
 \ingroup DAP_ConfigIO_gr
 @{
@@ -612,7 +623,7 @@ CMSIS-DAP Hardware I/O and LED Pins are initialized with the function \ref DAP_S
 */
 
 /** Setup of the Debug Unit I/O pins and LEDs (called when Debug Unit is initialized).
-This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the 
+This function performs the initialization of the CMSIS-DAP Hardware I/O Pins and the
 Status LEDs. In detail the operation of Hardware I/O and LED pins are enabled and set:
  - I/O clock system enabled.
  - all I/O pins: input buffer enabled, output pins are set to HighZ mode.
@@ -620,60 +631,12 @@ Status LEDs. In detail the operation of Hardware I/O and LED pins are enabled an
  - LED output pins are enabled and LEDs are turned off.
 */
 __STATIC_INLINE void DAP_SETUP (void) {
-
-  /* Enable clock and init GPIO outputs */
-  LPC_CCU1->CLK_M4_GPIO_CFG = CCU_CLK_CFG_AUTO | CCU_CLK_CFG_RUN;
-  while (!(LPC_CCU1->CLK_M4_GPIO_STAT & CCU_CLK_STAT_RUN));
-
-  /* Configure I/O pins: function number, input buffer enabled,  */
-  /*                     no pull-up/down except nRESET (pull-up) */
-  LPC_SCU->SFSP1_17 = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* SWCLK/TCK: GPIO0[12] */
-  LPC_SCU->SFSP1_6  = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* SWDIO/TMS: GPIO1[9]  */
-  LPC_SCU->SFSP1_5  = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* SWDIO_OE:  GPIO1[8]  */
-  LPC_SCU->SFSP1_18 = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* TDI:       GPIO0[13] */
-  LPC_SCU->SFSP1_14 = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* TDO:       GPIO1[7]  */
-  LPC_SCU->SFSP2_5  = 4U |              SCU_SFS_EZI;  /* nRESET:    GPIO5[5]  */
-  LPC_SCU->SFSP2_6  = 4U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* nRESET_OE: GPIO5[6]  */
-  LPC_SCU->SFSP1_1  = 0U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* LED:       GPIO0[8]  */
-#ifdef TARGET_POWER_EN
-  LPC_SCU->SFSP3_1  = 4U | SCU_SFS_EPUN|SCU_SFS_EZI;  /* Target Power enable P3_1 GPIO5[8] */
-#endif
-
-  /* Configure: SWCLK/TCK, SWDIO/TMS, SWDIO_OE, TDI as outputs (high level)   */
-  /*            TDO as input                                                  */
-  /*            nRESET as input with output latch set to low level            */
-  /*            nRESET_OE as output (low level)                               */
-  LPC_GPIO_PORT->SET[PIN_SWCLK_TCK_PORT]  =  (1U << PIN_SWCLK_TCK_BIT);
-  LPC_GPIO_PORT->SET[PIN_SWDIO_TMS_PORT]  =  (1U << PIN_SWDIO_TMS_BIT);
-  LPC_GPIO_PORT->SET[PIN_SWDIO_OE_PORT]   =  (1U << PIN_SWDIO_OE_BIT);
-  LPC_GPIO_PORT->SET[PIN_TDI_PORT]        =  (1U << PIN_TDI_BIT);
-  LPC_GPIO_PORT->CLR[PIN_nRESET_PORT]     =  (1U << PIN_nRESET_BIT);
-  LPC_GPIO_PORT->CLR[PIN_nRESET_OE_PORT]  =  (1U << PIN_nRESET_OE_BIT);
-  LPC_GPIO_PORT->DIR[PIN_SWCLK_TCK_PORT] |=  (1U << PIN_SWCLK_TCK_BIT);
-  LPC_GPIO_PORT->DIR[PIN_SWDIO_TMS_PORT] |=  (1U << PIN_SWDIO_TMS_BIT);
-  LPC_GPIO_PORT->DIR[PIN_SWDIO_OE_PORT]  |=  (1U << PIN_SWDIO_OE_BIT);
-  LPC_GPIO_PORT->DIR[PIN_TDI_PORT]       |=  (1U << PIN_TDI_BIT);
-  LPC_GPIO_PORT->DIR[PIN_TDO_PORT]       &= ~(1U << PIN_TDO_BIT);
-  LPC_GPIO_PORT->DIR[PIN_nRESET_PORT]    &= ~(1U << PIN_nRESET_BIT);
-  LPC_GPIO_PORT->DIR[PIN_nRESET_OE_PORT] |=  (1U << PIN_nRESET_OE_BIT);
-
-#ifdef TARGET_POWER_EN
-  /* Target Power enable as output (turned on)  */
-  LPC_GPIO_PORT->SET[5]  = (1U << 8);
-  LPC_GPIO_PORT->DIR[5] |= (1U << 8);
-#endif
-
-  /* Configure: LED as output (turned off) */
-  LPC_GPIO_PORT->CLR[LED_CONNECTED_PORT]  =  (1U << LED_CONNECTED_BIT);
-  LPC_GPIO_PORT->DIR[LED_CONNECTED_PORT] |=  (1U << LED_CONNECTED_BIT);
-
-  /* Configure Peripheral Interrupt Priorities */
-  NVIC_SetPriority(USB0_IRQn, 1U);
+  BOARD_InitBootPins();
 }
 
 /** Reset Target Device with custom specific I/O pin or command sequence.
 This function allows the optional implementation of a device specific reset sequence.
-It is called when the command \ref DAP_ResetTarget and is for example required 
+It is called when the command \ref DAP_ResetTarget and is for example required
 when a device needs a time-critical unlock sequence that enables the debug port.
 \return 0 = no device specific reset sequence is implemented.\n
         1 = a device specific reset sequence is implemented.

+ 18 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/DebugConfig/MCU-Link_LPC55S69JBD64_cm33_core0.dbgconf

@@ -0,0 +1,18 @@
+// <<< Use Configuration Wizard in Context Menu >>>
+
+// <o0> SWO pin
+// <i> The SWO (Serial Wire Output) pin optionally provides data from the ITM
+// <i> for an external debug tool to evaluate.
+//      <0=> PIO0_10
+//      <1=> PIO0_8
+SWO_Pin = 0;
+// 
+
+// <h>Debug Configuration
+//   <o.0>    StopAfterBootloader       <i> Stop after Bootloader
+// </h>
+Dbg_CR = 0x00000001;
+//
+
+
+// <<< end of configuration section >>>

+ 743 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/MCU-Link.mex

@@ -0,0 +1,743 @@
+<?xml version="1.0" encoding= "UTF-8" ?>
+<configuration name="MCU-LINK" xsi:schemaLocation="http://mcuxpresso.nxp.com/XSD/mex_configuration_1.9 http://mcuxpresso.nxp.com/XSD/mex_configuration_1.9.xsd" uuid="ec487fd8-754b-47b3-bbcd-ee484cc22247" version="1.9" xmlns="http://mcuxpresso.nxp.com/XSD/mex_configuration_1.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <common>
+      <processor>LPC55S69</processor>
+      <package>LPC55S69JBD64</package>
+      <mcu_data>ksdk2_0</mcu_data>
+      <cores selected="cm33_core0">
+         <core name="Cortex-M33 (Core #0)" id="cm33_core0" description=""/>
+         <core name="Cortex-M33 (Core #1)" id="cm33_core1" description=""/>
+      </cores>
+      <description></description>
+   </common>
+   <preferences>
+      <validate_boot_init_only>true</validate_boot_init_only>
+      <generate_extended_information>false</generate_extended_information>
+      <generate_code_modified_registers_only>false</generate_code_modified_registers_only>
+   </preferences>
+   <tools>
+      <pins name="Pins" version="9.0" enabled="true" update_project_code="true">
+         <generated_project_files>
+            <file path="board/pin_mux.c" update_enabled="true"/>
+            <file path="board/pin_mux.h" update_enabled="true"/>
+         </generated_project_files>
+         <pins_profile>
+            <processor_version>9.0.3</processor_version>
+            <pin_labels>
+               <pin_label pin_num="36" pin_signal="PIO0_0/FC3_SCK/CTIMER0_MAT0/SCT_GPI0/SD1_CARD_INT_N/SECURE_GPIO0_0/ACMP0_A" label="_DBGIF_TCK_SWCLK" identifier="DBGIF_TCK_SWCLK"/>
+               <pin_label pin_num="2" pin_signal="PIO0_1/FC3_CTS_SDA_SSEL0/CT_INP0/SCT_GPI1/SD1_CLK/CMP0_OUT/SECURE_GPIO0_1" label="_DBGIF_TDI" identifier="DBGIF_TDI"/>
+               <pin_label pin_num="52" pin_signal="PIO0_2/FC3_TXD_SCL_MISO_WS/CT_INP1/SCT0_OUT0/SCT_GPI2/SECURE_GPIO0_2" label="_DBGIF_TMS_SWDIO" identifier="DBGIF_TMS_SWDIO"/>
+               <pin_label pin_num="44" pin_signal="PIO0_28/FC0_SCK/SD1_CMD/CT_INP11/SCT0_OUT7/USB0_OVERCURRENTN/PLU_OUT1/SECURE_GPIO0_28" label="_DBGIF_TMS_SWDIO_TXEN" identifier="DBGIF_TMS_SWDIO_TXEN"/>
+               <pin_label pin_num="58" pin_signal="PIO0_19/FC4_RTS_SCL_SSEL1/UTICK_CAP0/CTIMER0_MAT2/SCT0_OUT2/FC7_TXD_SCL_MISO_WS/PLU_IN4/SECURE_GPIO0_19" label="_DBGIF_RESET" identifier="DBG_IF_RESET;DBGIF_RESET"/>
+               <pin_label pin_num="46" pin_signal="PIO0_13/FC1_CTS_SDA_SSEL0/UTICK_CAP0/CT_INP0/SCT_GPI0/FC1_RXD_SDA_MOSI_DATA/PLU_IN0/SECURE_GPIO0_13" label="_DBGIF_RESET_TXEN" identifier="DBG_IF_RESET_TXEN;DBGIF_RESET_TXEN"/>
+               <pin_label pin_num="53" pin_signal="PIO0_3/FC3_RXD_SDA_MOSI_DATA/CTIMER0_MAT1/SCT0_OUT1/SCT_GPI3/SECURE_GPIO0_3" label="_DBGIF_TDO_SWO" identifier="DBG_IF_TDO_SWO;DBGIF_TDO_SWO"/>
+               <pin_label pin_num="45" pin_signal="PIO0_24/FC0_RXD_SDA_MOSI_DATA/SD0_D0/CT_INP8/SCT_GPI0/SECURE_GPIO0_24" label="_FC0_TARGET_RXD" identifier="FC0_TARGET_RXD"/>
+               <pin_label pin_num="51" pin_signal="PIO0_25/FC0_TXD_SCL_MISO_WS/SD0_D1/CT_INP9/SCT_GPI1/SECURE_GPIO0_25" label="_FC0_TARGET_TXD" identifier="FC0_TARGET_TXD"/>
+               <pin_label pin_num="56" pin_signal="PIO0_5/FC4_RXD_SDA_MOSI_DATA/CTIMER3_MAT0/SCT_GPI5/FC3_RTS_SCL_SSEL1/MCLK/SECURE_GPIO0_5" label="_LED1" identifier="LED1"/>
+            </pin_labels>
+         </pins_profile>
+         <functions_list>
+            <function name="MCU_LINK_InitPins">
+               <description>Configures pin routing and optionally pin electrical features.</description>
+               <options>
+                  <callFromInitBoot>true</callFromInitBoot>
+                  <prefix></prefix>
+                  <coreID>cm33_core0</coreID>
+                  <enableClock>true</enableClock>
+               </options>
+               <dependencies>
+                  <dependency resourceType="Peripheral" resourceId="FLEXCOMM3" description="Peripheral FLEXCOMM3 is not initialized" problem_level="1" source="Pins:MCU_LINK_InitPins">
+                     <feature name="initialized" evaluation="equal">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="Peripheral" resourceId="FLEXCOMM0" description="Peripheral FLEXCOMM0 is not initialized" problem_level="1" source="Pins:MCU_LINK_InitPins">
+                     <feature name="initialized" evaluation="equal">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="Peripheral" resourceId="USBHSH" description="Peripheral USBHSH is not initialized" problem_level="1" source="Pins:MCU_LINK_InitPins">
+                     <feature name="initialized" evaluation="equal">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.common" description="Pins initialization requires the COMMON Driver in the project." problem_level="2" source="Pins:MCU_LINK_InitPins">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core1">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.lpc_gpio" description="Pins initialization requires the LPC_GPIO Driver in the project." problem_level="2" source="Pins:MCU_LINK_InitPins">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core1">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+               </dependencies>
+               <pins>
+                  <pin peripheral="GPIO" signal="PIO0, 0" pin_num="36" pin_signal="PIO0_0/FC3_SCK/CTIMER0_MAT0/SCT_GPI0/SD1_CARD_INT_N/SECURE_GPIO0_0/ACMP0_A">
+                     <pin_features>
+                        <pin_feature name="direction" value="INPUT"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="GPIO" signal="PIO0, 1" pin_num="2" pin_signal="PIO0_1/FC3_CTS_SDA_SSEL0/CT_INP0/SCT_GPI1/SD1_CLK/CMP0_OUT/SECURE_GPIO0_1">
+                     <pin_features>
+                        <pin_feature name="direction" value="INPUT"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="GPIO" signal="PIO0, 2" pin_num="52" pin_signal="PIO0_2/FC3_TXD_SCL_MISO_WS/CT_INP1/SCT0_OUT0/SCT_GPI2/SECURE_GPIO0_2">
+                     <pin_features>
+                        <pin_feature name="direction" value="INPUT"/>
+                        <pin_feature name="mode" value="inactive"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="GPIO" signal="PIO0, 28" pin_num="44" pin_signal="PIO0_28/FC0_SCK/SD1_CMD/CT_INP11/SCT0_OUT7/USB0_OVERCURRENTN/PLU_OUT1/SECURE_GPIO0_28">
+                     <pin_features>
+                        <pin_feature name="direction" value="OUTPUT"/>
+                        <pin_feature name="gpio_init_state" value="false"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="GPIO" signal="PIO0, 19" pin_num="58" pin_signal="PIO0_19/FC4_RTS_SCL_SSEL1/UTICK_CAP0/CTIMER0_MAT2/SCT0_OUT2/FC7_TXD_SCL_MISO_WS/PLU_IN4/SECURE_GPIO0_19">
+                     <pin_features>
+                        <pin_feature name="identifier" value="DBGIF_RESET"/>
+                        <pin_feature name="direction" value="INPUT"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="GPIO" signal="PIO0, 13" pin_num="46" pin_signal="PIO0_13/FC1_CTS_SDA_SSEL0/UTICK_CAP0/CT_INP0/SCT_GPI0/FC1_RXD_SDA_MOSI_DATA/PLU_IN0/SECURE_GPIO0_13">
+                     <pin_features>
+                        <pin_feature name="identifier" value="DBGIF_RESET_TXEN"/>
+                        <pin_feature name="direction" value="OUTPUT"/>
+                        <pin_feature name="gpio_init_state" value="false"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="FLEXCOMM3" signal="RXD_SDA_MOSI_DATA" pin_num="53" pin_signal="PIO0_3/FC3_RXD_SDA_MOSI_DATA/CTIMER0_MAT1/SCT0_OUT1/SCT_GPI3/SECURE_GPIO0_3">
+                     <pin_features>
+                        <pin_feature name="identifier" value="DBGIF_TDO_SWO"/>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="FLEXCOMM0" signal="RXD_SDA_MOSI_DATA" pin_num="45" pin_signal="PIO0_24/FC0_RXD_SDA_MOSI_DATA/SD0_D0/CT_INP8/SCT_GPI0/SECURE_GPIO0_24">
+                     <pin_features>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="FLEXCOMM0" signal="TXD_SCL_MISO_WS" pin_num="51" pin_signal="PIO0_25/FC0_TXD_SCL_MISO_WS/SD0_D1/CT_INP9/SCT_GPI1/SECURE_GPIO0_25">
+                     <pin_features>
+                        <pin_feature name="slew_rate" value="fast"/>
+                     </pin_features>
+                  </pin>
+                  <pin peripheral="USBHSH" signal="USB_DP" pin_num="23" pin_signal="USB1_DP"/>
+                  <pin peripheral="USBHSH" signal="USB_DM" pin_num="24" pin_signal="USB1_DM"/>
+                  <pin peripheral="USBHSH" signal="USB_VBUS" pin_num="25" pin_signal="USB1_VBUS"/>
+                  <pin peripheral="USBHSH" signal="USB_VSS" pin_num="22" pin_signal="USB1_VSS22"/>
+                  <pin peripheral="USBHSH" signal="USB_VSS" pin_num="26" pin_signal="USB1_VSS26"/>
+                  <pin peripheral="USBHSH" signal="USB_PORTPWRN" pin_num="41" pin_signal="PIO1_2/CTIMER0_MAT3/SCT_GPI6/HS_SPI_SCK/USB1_PORTPWRN/PLU_OUT5"/>
+                  <pin peripheral="GPIO" signal="PIO0, 5" pin_num="56" pin_signal="PIO0_5/FC4_RXD_SDA_MOSI_DATA/CTIMER3_MAT0/SCT_GPI5/FC3_RTS_SCL_SSEL1/MCLK/SECURE_GPIO0_5">
+                     <pin_features>
+                        <pin_feature name="direction" value="OUTPUT"/>
+                        <pin_feature name="gpio_init_state" value="true"/>
+                        <pin_feature name="mode" value="pullUp"/>
+                     </pin_features>
+                  </pin>
+               </pins>
+            </function>
+         </functions_list>
+      </pins>
+      <clocks name="Clocks" version="7.0" enabled="true" update_project_code="true">
+         <generated_project_files>
+            <file path="board/clock_config.c" update_enabled="true"/>
+            <file path="board/clock_config.h" update_enabled="true"/>
+         </generated_project_files>
+         <clocks_profile>
+            <processor_version>9.0.3</processor_version>
+         </clocks_profile>
+         <clock_configurations>
+            <clock_configuration name="BOARD_BootClockRUN">
+               <description></description>
+               <options/>
+               <dependencies>
+                  <dependency resourceType="PinSignal" resourceId="SYSCON.XTALIN" description="&apos;XTALIN&apos; (Pins tool id: SYSCON.XTALIN, Clocks tool id: SYSCON.XTALIN) needs to be routed" problem_level="1" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="routed" evaluation="">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="PinSignal" resourceId="SYSCON.XTALIN" description="&apos;XTALIN&apos; (Pins tool id: SYSCON.XTALIN, Clocks tool id: SYSCON.XTALIN) needs to have &apos;INPUT&apos; direction" problem_level="1" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="direction" evaluation="">
+                        <data>INPUT</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="PinSignal" resourceId="SYSCON.XTALOUT" description="&apos;XTALOUT&apos; (Pins tool id: SYSCON.XTALOUT, Clocks tool id: SYSCON.XTALOUT) needs to be routed" problem_level="1" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="routed" evaluation="">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="PinSignal" resourceId="SYSCON.XTALOUT" description="&apos;XTALOUT&apos; (Pins tool id: SYSCON.XTALOUT, Clocks tool id: SYSCON.XTALOUT) needs to have &apos;OUTPUT&apos; direction" problem_level="1" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="direction" evaluation="">
+                        <data>OUTPUT</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.common" description="Clocks initialization requires the COMMON Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core1">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.common" description="Clocks initialization requires the COMMON Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core0">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.power" description="Clocks initialization requires the POWER Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core1">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.power" description="Clocks initialization requires the POWER Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core0">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.clock" description="Clocks initialization requires the CLOCK Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core1">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+                  <dependency resourceType="SWComponent" resourceId="platform.drivers.clock" description="Clocks initialization requires the CLOCK Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
+                     <feature name="enabled" evaluation="equal" configuration="cm33_core0">
+                        <data>true</data>
+                     </feature>
+                  </dependency>
+               </dependencies>
+               <clock_sources>
+                  <clock_source id="ANACTRL.fro_hf.outFreq" value="96 MHz" locked="false" enabled="false"/>
+                  <clock_source id="SYSCON.XTAL32M.outFreq" value="16 MHz" locked="false" enabled="true"/>
+               </clock_sources>
+               <clock_outputs>
+                  <clock_output id="FXCOM0_clock.outFreq" value="48 MHz" locked="false" accuracy=""/>
+                  <clock_output id="FXCOM3_clock.outFreq" value="48 MHz" locked="false" accuracy=""/>
+                  <clock_output id="System_clock.outFreq" value="150 MHz" locked="true" accuracy="0.001"/>
+                  <clock_output id="USB1_PHY_clock.outFreq" value="16 MHz" locked="false" accuracy=""/>
+               </clock_outputs>
+               <clock_settings>
+                  <setting id="PLL0_Mode" value="Normal" locked="false"/>
+                  <setting id="ANALOG_CONTROL_FRO192M_CTRL_ENDI_FRO_96M_CFG" value="Enable" locked="false"/>
+                  <setting id="ENABLE_CLKIN_ENA" value="Enabled" locked="false"/>
+                  <setting id="ENABLE_PLL_USB_OUT" value="Enabled" locked="false"/>
+                  <setting id="ENABLE_SYSTEM_CLK_OUT" value="Enabled" locked="false"/>
+                  <setting id="SYSCON.FCCLKSEL0.sel" value="SYSCON.FROHFDIV" locked="false"/>
+                  <setting id="SYSCON.FCCLKSEL3.sel" value="SYSCON.FROHFDIV" locked="false"/>
+                  <setting id="SYSCON.FRGCTRL3_DIV.scale" value="256" locked="true"/>
+                  <setting id="SYSCON.FROHFDIV.scale" value="2" locked="true"/>
+                  <setting id="SYSCON.MAINCLKSELB.sel" value="SYSCON.PLL0_BYPASS" locked="false"/>
+                  <setting id="SYSCON.PLL0CLKSEL.sel" value="SYSCON.CLK_IN_EN" locked="false"/>
+                  <setting id="SYSCON.PLL0M_MULT.scale" value="150" locked="true"/>
+                  <setting id="SYSCON.PLL0N_DIV.scale" value="8" locked="true"/>
+                  <setting id="SYSCON.PLL0_PDEC.scale" value="2" locked="false"/>
+               </clock_settings>
+               <called_from_default_init>true</called_from_default_init>
+            </clock_configuration>
+         </clock_configurations>
+      </clocks>
+      <dcdx name="DCDx" version="2.0" enabled="false" update_project_code="true">
+         <generated_project_files/>
+         <dcdx_profile>
+            <processor_version>0.0.0</processor_version>
+         </dcdx_profile>
+         <dcdx_configurations/>
+      </dcdx>
+      <periphs name="Peripherals" version="9.0" enabled="true" update_project_code="true">
+         <generated_project_files>
+            <file path="board/peripherals.c" update_enabled="true"/>
+            <file path="board/peripherals.h" update_enabled="true"/>
+         </generated_project_files>
+         <peripherals_profile>
+            <processor_version>9.0.3</processor_version>
+         </peripherals_profile>
+         <functional_groups>
+            <functional_group name="BOARD_InitPeripherals" uuid="85f4cd0c-3b58-4e23-a413-239f6952f139" called_from_default_init="true" id_prefix="" core="cm33_core0">
+               <description></description>
+               <options/>
+               <dependencies/>
+               <instances>
+                  <instance name="NVIC" uuid="96d19cd9-5329-408b-ab68-cd8a2e493850" type="nvic" type_id="nvic_57b5eef3774cc60acaede6f5b8bddc67" mode="general" peripheral="NVIC" enabled="true" comment="" custom_name_enabled="false" editing_lock="false">
+                     <config_set name="nvic">
+                        <array name="interrupt_table"/>
+                        <array name="interrupts"/>
+                     </config_set>
+                  </instance>
+                  <instance name="FLEXCOMM3" uuid="878079cb-696c-4271-a7b1-8f9fbc96ca99" type="flexcomm_usart_cmsis" type_id="flexcomm_usart_cmsis_adab49614496eb4b6311b98863269f48" mode="interrupt" peripheral="FLEXCOMM3" enabled="false" comment="" custom_name_enabled="false" editing_lock="false">
+                     <config_set name="general" quick_selection="default">
+                        <struct name="main_config">
+                           <setting name="operationMode" value="ARM_USART_MODE_ASYNCHRONOUS"/>
+                           <setting name="clockSource" value="FXCOMFunctionClock"/>
+                           <setting name="clockSourceFreq" value="BOARD_BootClockRUN"/>
+                           <setting name="power_state" value="ARM_POWER_FULL"/>
+                           <setting name="baudRate_Bps" value="500000"/>
+                           <setting name="dataBits" value="ARM_USART_DATA_BITS_8"/>
+                           <setting name="parityBit" value="ARM_USART_PARITY_NONE"/>
+                           <setting name="stopBit" value="ARM_USART_STOP_BITS_1"/>
+                           <setting name="enableRX" value="false"/>
+                           <setting name="enableTX" value="false"/>
+                           <setting name="signalEventFunctionId" value="USART_SignalEvent"/>
+                           <setting name="enableGetFreqFnCustomName" value="false"/>
+                           <setting name="getFreqFunctionCustomID" value="USART_GetFreq"/>
+                           <setting name="enableInitPinsFnCustomName" value="false"/>
+                           <setting name="initPinFunctionCustomID" value="USART_InitPins"/>
+                           <setting name="enableDeinitPinsFnCustomName" value="false"/>
+                           <setting name="deinitPinFunctionCustomID" value="USART_DeinitPins"/>
+                        </struct>
+                     </config_set>
+                     <config_set name="fsl_cmsis_uart">
+                        <struct name="interrupt">
+                           <setting name="IRQn" value="FLEXCOMM3_IRQn"/>
+                           <setting name="enable_priority" value="false"/>
+                           <setting name="priority" value="0"/>
+                        </struct>
+                     </config_set>
+                  </instance>
+                  <instance name="FLEXCOMM0" uuid="700bce49-bf21-46fe-8618-062c52fe30f6" type="flexcomm_usart_cmsis" type_id="flexcomm_usart_cmsis_adab49614496eb4b6311b98863269f48" mode="interrupt" peripheral="FLEXCOMM0" enabled="false" comment="" custom_name_enabled="false" editing_lock="false">
+                     <config_set name="general" quick_selection="default">
+                        <struct name="main_config">
+                           <setting name="operationMode" value="ARM_USART_MODE_ASYNCHRONOUS"/>
+                           <setting name="clockSource" value="FXCOMFunctionClock"/>
+                           <setting name="clockSourceFreq" value="BOARD_BootClockRUN"/>
+                           <setting name="power_state" value="ARM_POWER_FULL"/>
+                           <setting name="baudRate_Bps" value="500000"/>
+                           <setting name="dataBits" value="ARM_USART_DATA_BITS_8"/>
+                           <setting name="parityBit" value="ARM_USART_PARITY_NONE"/>
+                           <setting name="stopBit" value="ARM_USART_STOP_BITS_1"/>
+                           <setting name="enableRX" value="false"/>
+                           <setting name="enableTX" value="false"/>
+                           <setting name="signalEventFunctionId" value="USART_SignalEvent"/>
+                           <setting name="enableGetFreqFnCustomName" value="false"/>
+                           <setting name="getFreqFunctionCustomID" value="USART_GetFreq"/>
+                           <setting name="enableInitPinsFnCustomName" value="false"/>
+                           <setting name="initPinFunctionCustomID" value="USART_InitPins"/>
+                           <setting name="enableDeinitPinsFnCustomName" value="false"/>
+                           <setting name="deinitPinFunctionCustomID" value="USART_DeinitPins"/>
+                        </struct>
+                     </config_set>
+                     <config_set name="fsl_cmsis_uart">
+                        <struct name="interrupt">
+                           <setting name="IRQn" value="FLEXCOMM0_IRQn"/>
+                           <setting name="enable_priority" value="false"/>
+                           <setting name="priority" value="0"/>
+                        </struct>
+                     </config_set>
+                  </instance>
+                  <instance name="USBHSH" uuid="953a3f80-8155-4308-af14-b0c8598e9b55" type="usb" type_id="usb_49b3e4c7d25fbcd298641994d1b911e9" mode="host" peripheral="USBHSH" enabled="false" comment="" custom_name_enabled="false" editing_lock="false">
+                     <config_set name="hostSettings" quick_selection="QS_HOST_DEFAULT">
+                        <setting name="max_power" value="500"/>
+                        <setting name="hub_support" value="true"/>
+                        <array name="interfaces"/>
+                     </config_set>
+                  </instance>
+                  <instance name="DMA0" uuid="883b2846-ab3c-4241-941c-366bc6b8da44" type="lpc_dma" type_id="lpc_dma_c13ca997a68f2ca6c666916ba13db7d7" mode="basic" peripheral="DMA0" enabled="false" comment="" custom_name_enabled="false" editing_lock="false">
+                     <config_set name="fsl_dma">
+                        <array name="dma_table"/>
+                        <array name="dma_channels">
+                           <struct name="0">
+                              <setting name="apiMode" value="trans"/>
+                              <struct name="dma_channel">
+                                 <setting name="channel_prefix_id" value="CH0"/>
+                                 <setting name="DMA_source" value="kDma0RequestFlexcomm3Rx"/>
+                                 <setting name="init_channel_priority" value="true"/>
+                                 <setting name="dma_priority" value="kDMA_ChannelPriority0"/>
+                                 <setting name="enable_custom_name" value="false"/>
+                              </struct>
+                              <setting name="peripheral_request" value="true"/>
+                              <setting name="init_trigger_config" value="false"/>
+                              <struct name="trigger_config">
+                                 <setting name="type" value="kDMA_NoTrigger"/>
+                                 <setting name="burst" value="kDMA_SingleTransfer"/>
+                                 <setting name="wrap" value="kDMA_NoWrap"/>
+                              </struct>
+                              <struct name="trans_config">
+                                 <setting name="init_callback" value="false"/>
+                                 <setting name="callback_function" value=""/>
+                                 <setting name="callback_user_data" value=""/>
+                              </struct>
+                              <array name="tcd_config"/>
+                              <setting name="allocateTCD" value="noncache"/>
+                              <setting name="initTCD" value="noTCDInit"/>
+                           </struct>
+                        </array>
+                        <struct name="dma_interrupt_trans">
+                           <setting name="IRQn" value="DMA0_IRQn"/>
+                           <setting name="enable_priority" value="false"/>
+                           <setting name="priority" value="0"/>
+                        </struct>
+                     </config_set>
+                  </instance>
+               </instances>
+            </functional_group>
+         </functional_groups>
+         <components>
+            <component name="system" uuid="9cbd66be-7ac1-4104-b28d-2bebba2e4e11" type_id="system_54b53072540eeeb8f8e9343e71f28176">
+               <config_set_global name="global_system_definitions">
+                  <setting name="user_definitions" value=""/>
+                  <setting name="user_includes" value=""/>
+               </config_set_global>
+            </component>
+            <component name="msg" uuid="617d74e2-0b6d-4083-802c-350abaf71755" type_id="msg_6e2baaf3b97dbeef01c0043275f9a0e7">
+               <config_set_global name="global_messages"/>
+            </component>
+            <component name="generic_uart" uuid="7f9addee-5c8c-4ce3-8089-19751347aba2" type_id="generic_uart_8cae00565451cf2346eb1b8c624e73a6">
+               <config_set_global name="global_uart"/>
+            </component>
+            <component name="generic_can" uuid="1282bde3-0821-45b7-8df8-cde69f421f03" type_id="generic_can_1bfdd78b1af214566c1f23cf6a582d80">
+               <config_set_global name="global_can"/>
+            </component>
+         </components>
+      </periphs>
+      <tee name="TEE" version="2.0" enabled="false" update_project_code="true">
+         <generated_project_files/>
+         <tee_profile>
+            <processor_version>0.0.0</processor_version>
+         </tee_profile>
+         <ahb>
+            <relative_region start="0" size="655360" security="ns_user" memory="PROGRAM_FLASH"/>
+            <relative_region start="0" size="131072" security="ns_user" memory="BootROM"/>
+            <relative_region start="0" size="32768" security="ns_user" memory="SRAMX"/>
+            <relative_region start="0" size="65536" security="ns_user" memory="SRAM0"/>
+            <relative_region start="0" size="65536" security="ns_user" memory="SRAM1"/>
+            <relative_region start="0" size="65536" security="ns_user" memory="SRAM2"/>
+            <relative_region start="0" size="65536" security="ns_user" memory="SRAM3"/>
+            <relative_region start="0" size="16384" security="ns_user" memory="SRAM4"/>
+            <relative_region start="0" size="16384" security="ns_user" memory="USB_RAM"/>
+            <masters>
+               <master id="HASH" security="ns_user"/>
+               <master id="MCM33C" security="ns_user"/>
+               <master id="MCM33S" security="ns_user"/>
+               <master id="PQ" security="ns_user"/>
+               <master id="SDIO" security="ns_user"/>
+               <master id="SDMA0" security="ns_user"/>
+               <master id="SDMA1" security="ns_user"/>
+               <master id="USBFSD" security="ns_user"/>
+               <master id="USBFSH" security="ns_user"/>
+            </masters>
+            <peripherals>
+               <peripheral id="ADC0" security="ns_user"/>
+               <peripheral id="AHB_SECURE_CTRL" security="ns_user"/>
+               <peripheral id="ANACTRL" security="ns_user"/>
+               <peripheral id="CASPER" security="ns_user"/>
+               <peripheral id="CRC_ENGINE" security="ns_user"/>
+               <peripheral id="CTIMER0" security="ns_user"/>
+               <peripheral id="CTIMER1" security="ns_user"/>
+               <peripheral id="CTIMER2" security="ns_user"/>
+               <peripheral id="CTIMER3" security="ns_user"/>
+               <peripheral id="CTIMER4" security="ns_user"/>
+               <peripheral id="DBGMAILBOX" security="ns_user"/>
+               <peripheral id="DMA0" security="ns_user"/>
+               <peripheral id="DMA1" security="ns_user"/>
+               <peripheral id="FLASH" security="ns_user"/>
+               <peripheral id="FLEXCOMM0" security="ns_user"/>
+               <peripheral id="FLEXCOMM1" security="ns_user"/>
+               <peripheral id="FLEXCOMM2" security="ns_user"/>
+               <peripheral id="FLEXCOMM3" security="ns_user"/>
+               <peripheral id="FLEXCOMM4" security="ns_user"/>
+               <peripheral id="FLEXCOMM5" security="ns_user"/>
+               <peripheral id="FLEXCOMM6" security="ns_user"/>
+               <peripheral id="FLEXCOMM7" security="ns_user"/>
+               <peripheral id="GINT0" security="ns_user"/>
+               <peripheral id="GINT1" security="ns_user"/>
+               <peripheral id="GPIO" security="ns_user"/>
+               <peripheral id="HASHCRYPT" security="ns_user"/>
+               <peripheral id="INPUTMUX" security="ns_user"/>
+               <peripheral id="IOCON" security="ns_user"/>
+               <peripheral id="MAILBOX" security="ns_user"/>
+               <peripheral id="MRT0" security="ns_user"/>
+               <peripheral id="OSTIMER" security="ns_user"/>
+               <peripheral id="PINT" security="ns_user"/>
+               <peripheral id="PLU" security="ns_user"/>
+               <peripheral id="PMC" security="ns_user"/>
+               <peripheral id="POWERQUAD" security="ns_user"/>
+               <peripheral id="PRINCE" security="ns_user"/>
+               <peripheral id="PUF" security="ns_user"/>
+               <peripheral id="RNG" security="ns_user"/>
+               <peripheral id="RTC" security="ns_user"/>
+               <peripheral id="SCT0" security="ns_user"/>
+               <peripheral id="SDIF" security="ns_user"/>
+               <peripheral id="SECGPIO" security="ns_user"/>
+               <peripheral id="SECPINT" security="ns_user"/>
+               <peripheral id="SPI8" security="ns_user"/>
+               <peripheral id="SYSCON" security="ns_user"/>
+               <peripheral id="SYSCTL" security="ns_user"/>
+               <peripheral id="USB0" security="ns_user"/>
+               <peripheral id="USBFSH" security="ns_user"/>
+               <peripheral id="USBHSD" security="ns_user"/>
+               <peripheral id="USBHSH" security="ns_user"/>
+               <peripheral id="USBPHY" security="ns_user"/>
+               <peripheral id="UTICK0" security="ns_user"/>
+               <peripheral id="WWDT" security="ns_user"/>
+            </peripherals>
+            <interrupts>
+               <masking>
+                  <interrupt id="acmp_capt_irq" masked="Non-masked"/>
+                  <interrupt id="adc_irq" masked="Non-masked"/>
+                  <interrupt id="casper_irq" masked="Non-masked"/>
+                  <interrupt id="ctimer0_irq" masked="Non-masked"/>
+                  <interrupt id="ctimer1_irq" masked="Non-masked"/>
+                  <interrupt id="ctimer2_irq" masked="Non-masked"/>
+                  <interrupt id="ctimer3_irq" masked="Non-masked"/>
+                  <interrupt id="ctimer4_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm0_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm1_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm2_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm3_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm4_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm5_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm6_irq" masked="Non-masked"/>
+                  <interrupt id="flexcomm7_irq" masked="Non-masked"/>
+                  <interrupt id="global_irq0" masked="Non-masked"/>
+                  <interrupt id="global_irq1" masked="Non-masked"/>
+                  <interrupt id="lspi_hs_irq" masked="Non-masked"/>
+                  <interrupt id="mailbox_irq" masked="Non-masked"/>
+                  <interrupt id="mrt_irq" masked="Non-masked"/>
+                  <interrupt id="os_event_irq" masked="Non-masked"/>
+                  <interrupt id="pin_int4" masked="Non-masked"/>
+                  <interrupt id="pin_int5" masked="Non-masked"/>
+                  <interrupt id="pin_int6" masked="Non-masked"/>
+                  <interrupt id="pin_int7" masked="Non-masked"/>
+                  <interrupt id="pin_irq0" masked="Non-masked"/>
+                  <interrupt id="pin_irq1" masked="Non-masked"/>
+                  <interrupt id="pin_irq2" masked="Non-masked"/>
+                  <interrupt id="pin_irq3" masked="Non-masked"/>
+                  <interrupt id="plu_irq" masked="Non-masked"/>
+                  <interrupt id="pq_irq" masked="Non-masked"/>
+                  <interrupt id="qddkey_irq" masked="Non-masked"/>
+                  <interrupt id="rtc_irq" masked="Non-masked"/>
+                  <interrupt id="sct_irq" masked="Non-masked"/>
+                  <interrupt id="sdio_irq" masked="Non-masked"/>
+                  <interrupt id="sdma0_irq" masked="Non-masked"/>
+                  <interrupt id="sdma1_irq" masked="Non-masked"/>
+                  <interrupt id="sec_hypervisor_call_irq" masked="Non-masked"/>
+                  <interrupt id="sec_int0" masked="Non-masked"/>
+                  <interrupt id="sec_int1" masked="Non-masked"/>
+                  <interrupt id="sec_vio_irq" masked="Non-masked"/>
+                  <interrupt id="sha_irq" masked="Non-masked"/>
+                  <interrupt id="sys_irq" masked="Non-masked"/>
+                  <interrupt id="usb0_irq" masked="Non-masked"/>
+                  <interrupt id="usb0_needclk_irq" masked="Non-masked"/>
+                  <interrupt id="usb1_irq" masked="Non-masked"/>
+                  <interrupt id="usb1_needclk_irq" masked="Non-masked"/>
+                  <interrupt id="usb1_utmi_irq" masked="Non-masked"/>
+                  <interrupt id="utick_irq" masked="Non-masked"/>
+               </masking>
+               <security>
+                  <interrupt id="acmp_capt_irq" secure="Secure"/>
+                  <interrupt id="adc_irq" secure="Secure"/>
+                  <interrupt id="casper_irq" secure="Secure"/>
+                  <interrupt id="ctimer0_irq" secure="Secure"/>
+                  <interrupt id="ctimer1_irq" secure="Secure"/>
+                  <interrupt id="ctimer2_irq" secure="Secure"/>
+                  <interrupt id="ctimer3_irq" secure="Secure"/>
+                  <interrupt id="ctimer4_irq" secure="Secure"/>
+                  <interrupt id="flexcomm0_irq" secure="Secure"/>
+                  <interrupt id="flexcomm1_irq" secure="Secure"/>
+                  <interrupt id="flexcomm2_irq" secure="Secure"/>
+                  <interrupt id="flexcomm3_irq" secure="Secure"/>
+                  <interrupt id="flexcomm4_irq" secure="Secure"/>
+                  <interrupt id="flexcomm5_irq" secure="Secure"/>
+                  <interrupt id="flexcomm6_irq" secure="Secure"/>
+                  <interrupt id="flexcomm7_irq" secure="Secure"/>
+                  <interrupt id="global_irq0" secure="Secure"/>
+                  <interrupt id="global_irq1" secure="Secure"/>
+                  <interrupt id="lspi_hs_irq" secure="Secure"/>
+                  <interrupt id="mailbox_irq" secure="Secure"/>
+                  <interrupt id="mrt_irq" secure="Secure"/>
+                  <interrupt id="os_event_irq" secure="Secure"/>
+                  <interrupt id="pin_int4" secure="Secure"/>
+                  <interrupt id="pin_int5" secure="Secure"/>
+                  <interrupt id="pin_int6" secure="Secure"/>
+                  <interrupt id="pin_int7" secure="Secure"/>
+                  <interrupt id="pin_irq0" secure="Secure"/>
+                  <interrupt id="pin_irq1" secure="Secure"/>
+                  <interrupt id="pin_irq2" secure="Secure"/>
+                  <interrupt id="pin_irq3" secure="Secure"/>
+                  <interrupt id="plu_irq" secure="Secure"/>
+                  <interrupt id="pq_irq" secure="Secure"/>
+                  <interrupt id="qddkey_irq" secure="Secure"/>
+                  <interrupt id="rtc_irq" secure="Secure"/>
+                  <interrupt id="sct_irq" secure="Secure"/>
+                  <interrupt id="sdio_irq" secure="Secure"/>
+                  <interrupt id="sdma0_irq" secure="Secure"/>
+                  <interrupt id="sdma1_irq" secure="Secure"/>
+                  <interrupt id="sec_hypervisor_call_irq" secure="Secure"/>
+                  <interrupt id="sec_int0" secure="Secure"/>
+                  <interrupt id="sec_int1" secure="Secure"/>
+                  <interrupt id="sec_vio_irq" secure="Secure"/>
+                  <interrupt id="sha_irq" secure="Secure"/>
+                  <interrupt id="sys_irq" secure="Secure"/>
+                  <interrupt id="usb0_irq" secure="Secure"/>
+                  <interrupt id="usb0_needclk_irq" secure="Secure"/>
+                  <interrupt id="usb1_irq" secure="Secure"/>
+                  <interrupt id="usb1_needclk_irq" secure="Secure"/>
+                  <interrupt id="usb1_utmi_irq" secure="Secure"/>
+                  <interrupt id="utick_irq" secure="Secure"/>
+               </security>
+            </interrupts>
+            <pins_masks>
+               <port id="pio0">
+                  <pin_mask id="0" masked="Non-masked"/>
+                  <pin_mask id="1" masked="Non-masked"/>
+                  <pin_mask id="10" masked="Non-masked"/>
+                  <pin_mask id="11" masked="Non-masked"/>
+                  <pin_mask id="12" masked="Non-masked"/>
+                  <pin_mask id="13" masked="Non-masked"/>
+                  <pin_mask id="14" masked="Non-masked"/>
+                  <pin_mask id="15" masked="Non-masked"/>
+                  <pin_mask id="16" masked="Non-masked"/>
+                  <pin_mask id="17" masked="Non-masked"/>
+                  <pin_mask id="18" masked="Non-masked"/>
+                  <pin_mask id="19" masked="Non-masked"/>
+                  <pin_mask id="2" masked="Non-masked"/>
+                  <pin_mask id="20" masked="Non-masked"/>
+                  <pin_mask id="21" masked="Non-masked"/>
+                  <pin_mask id="22" masked="Non-masked"/>
+                  <pin_mask id="23" masked="Non-masked"/>
+                  <pin_mask id="24" masked="Non-masked"/>
+                  <pin_mask id="25" masked="Non-masked"/>
+                  <pin_mask id="26" masked="Non-masked"/>
+                  <pin_mask id="27" masked="Non-masked"/>
+                  <pin_mask id="28" masked="Non-masked"/>
+                  <pin_mask id="29" masked="Non-masked"/>
+                  <pin_mask id="3" masked="Non-masked"/>
+                  <pin_mask id="30" masked="Non-masked"/>
+                  <pin_mask id="31" masked="Non-masked"/>
+                  <pin_mask id="4" masked="Non-masked"/>
+                  <pin_mask id="5" masked="Non-masked"/>
+                  <pin_mask id="6" masked="Non-masked"/>
+                  <pin_mask id="7" masked="Non-masked"/>
+                  <pin_mask id="8" masked="Non-masked"/>
+                  <pin_mask id="9" masked="Non-masked"/>
+               </port>
+               <port id="pio1">
+                  <pin_mask id="0" masked="Non-masked"/>
+                  <pin_mask id="1" masked="Non-masked"/>
+                  <pin_mask id="10" masked="Non-masked"/>
+                  <pin_mask id="11" masked="Non-masked"/>
+                  <pin_mask id="12" masked="Non-masked"/>
+                  <pin_mask id="13" masked="Non-masked"/>
+                  <pin_mask id="14" masked="Non-masked"/>
+                  <pin_mask id="15" masked="Non-masked"/>
+                  <pin_mask id="16" masked="Non-masked"/>
+                  <pin_mask id="17" masked="Non-masked"/>
+                  <pin_mask id="18" masked="Non-masked"/>
+                  <pin_mask id="19" masked="Non-masked"/>
+                  <pin_mask id="2" masked="Non-masked"/>
+                  <pin_mask id="20" masked="Non-masked"/>
+                  <pin_mask id="21" masked="Non-masked"/>
+                  <pin_mask id="22" masked="Non-masked"/>
+                  <pin_mask id="23" masked="Non-masked"/>
+                  <pin_mask id="24" masked="Non-masked"/>
+                  <pin_mask id="25" masked="Non-masked"/>
+                  <pin_mask id="26" masked="Non-masked"/>
+                  <pin_mask id="27" masked="Non-masked"/>
+                  <pin_mask id="28" masked="Non-masked"/>
+                  <pin_mask id="29" masked="Non-masked"/>
+                  <pin_mask id="3" masked="Non-masked"/>
+                  <pin_mask id="30" masked="Non-masked"/>
+                  <pin_mask id="31" masked="Non-masked"/>
+                  <pin_mask id="4" masked="Non-masked"/>
+                  <pin_mask id="5" masked="Non-masked"/>
+                  <pin_mask id="6" masked="Non-masked"/>
+                  <pin_mask id="7" masked="Non-masked"/>
+                  <pin_mask id="8" masked="Non-masked"/>
+                  <pin_mask id="9" masked="Non-masked"/>
+               </port>
+            </pins_masks>
+         </ahb>
+         <sau enabled="true" all_non_secure="false" generate_code_for_disabled_regions="false">
+            <region start="0" size="268435456" security="ns" enabled="true" index="0"/>
+            <region start="536870912" size="3489660928" security="ns" enabled="true" index="1"/>
+            <region start="0" size="32" security="ns" enabled="false" index="2"/>
+            <region start="0" size="32" security="ns" enabled="false" index="3"/>
+            <region start="0" size="32" security="ns" enabled="false" index="4"/>
+            <region start="0" size="32" security="ns" enabled="false" index="5"/>
+            <region start="0" size="32" security="ns" enabled="false" index="6"/>
+            <region start="0" size="32" security="ns" enabled="false" index="7"/>
+         </sau>
+         <global_options>
+            <option id="AIRCR_PRIS" value="no"/>
+            <option id="AIRCR_BFHFNMINS" value="no"/>
+            <option id="AIRCR_SYSRESETREQS" value="no"/>
+            <option id="SCR_SLEEPDEEPS" value="no"/>
+            <option id="SHCSR_SECUREFAULTENA" value="no"/>
+            <option id="NSACR_CP0" value="yes"/>
+            <option id="NSACR_CP1" value="yes"/>
+            <option id="NSACR_CP2" value="no"/>
+            <option id="NSACR_CP3" value="no"/>
+            <option id="NSACR_CP4" value="no"/>
+            <option id="NSACR_CP5" value="no"/>
+            <option id="NSACR_CP6" value="no"/>
+            <option id="NSACR_CP7" value="no"/>
+            <option id="NSACR_CP10" value="yes"/>
+            <option id="NSACR_CP11" value="yes"/>
+            <option id="CPPWR_SU0" value="no"/>
+            <option id="CPPWR_SUS0" value="no"/>
+            <option id="CPPWR_SU1" value="no"/>
+            <option id="CPPWR_SUS1" value="no"/>
+            <option id="CPPWR_SU2" value="no"/>
+            <option id="CPPWR_SUS2" value="no"/>
+            <option id="CPPWR_SU3" value="no"/>
+            <option id="CPPWR_SUS3" value="no"/>
+            <option id="CPPWR_SU4" value="no"/>
+            <option id="CPPWR_SUS4" value="no"/>
+            <option id="CPPWR_SU5" value="no"/>
+            <option id="CPPWR_SUS5" value="no"/>
+            <option id="CPPWR_SU6" value="no"/>
+            <option id="CPPWR_SUS6" value="no"/>
+            <option id="CPPWR_SU7" value="no"/>
+            <option id="CPPWR_SUS7" value="no"/>
+            <option id="CPPWR_SU10" value="no"/>
+            <option id="CPPWR_SUS10" value="no"/>
+            <option id="CPPWR_SU11" value="no"/>
+            <option id="CPPWR_SUS11" value="no"/>
+            <option id="SEC_GPIO_MASK0_LOCK" value="no"/>
+            <option id="SEC_GPIO_MASK1_LOCK" value="no"/>
+            <option id="SEC_CPU1_INT_MASK0_LOCK" value="no"/>
+            <option id="SEC_CPU1_INT_MASK1_LOCK" value="no"/>
+            <option id="MASTER_SEC_LEVEL_LOCK" value="no"/>
+            <option id="CPU0_LOCK_NS_VTOR" value="no"/>
+            <option id="CPU0_LOCK_NS_MPU" value="no"/>
+            <option id="CPU0_LOCK_S_VTAIRCR" value="no"/>
+            <option id="CPU0_LOCK_S_MPU" value="no"/>
+            <option id="CPU0_LOCK_SAU" value="no"/>
+            <option id="CPU0_LOCK_REG_LOCK" value="no"/>
+            <option id="CPU1_LOCK_NS_VTOR" value="no"/>
+            <option id="CPU1_LOCK_NS_MPU" value="no"/>
+            <option id="CPU1_LOCK_REG_LOCK" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_ENABLE_SECURE_CHECKING" value="yes"/>
+            <option id="AHB_MISC_CTRL_REG_ENABLE_S_PRIV_CHECK" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_ENABLE_NS_PRIV_CHECK" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_DISABLE_VIOLATION_ABORT" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_DISABLE_SIMPLE_MASTER_STRICT_MODE" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_DISABLE_SMART_MASTER_STRICT_MODE" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_IDAU_ALL_NS" value="no"/>
+            <option id="AHB_MISC_CTRL_REG_WRITE_LOCK" value="yes"/>
+         </global_options>
+         <user_memory_regions/>
+         <mpus>
+            <mpu enabled="false" priv_default_map="false" handler_enabled="false" id="s" generate_code_for_disabled_regions="false">
+               <attributes>
+                  <group index="0" id="Code" memory_type="normal" device="nGnRE"/>
+                  <group index="1" id="RAM" memory_type="normal" device="nGnRE"/>
+                  <group index="2" id="Peripheral" memory_type="device" device="nGnRE"/>
+               </attributes>
+               <regions/>
+            </mpu>
+            <mpu enabled="false" priv_default_map="false" handler_enabled="false" id="ns" generate_code_for_disabled_regions="false">
+               <attributes>
+                  <group index="0" id="Code" memory_type="normal" device="nGnRE"/>
+                  <group index="1" id="RAM" memory_type="normal" device="nGnRE"/>
+                  <group index="2" id="Peripheral" memory_type="device" device="nGnRE"/>
+               </attributes>
+               <regions/>
+            </mpu>
+         </mpus>
+      </tee>
+   </tools>
+</configuration>

+ 4356 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/Objects/CMSIS_DAP.hex

@@ -0,0 +1,4356 @@
+:020000040000FA
+:1000000000300320150200004D02000051020000E4
+:1000100049020000490200004902000049020000B4
+:100020000000000000000000000000005504000077
+:100030004902000000000000F50400000505000072
+:100040006102000065020000690200006D0200000C
+:100050007102000075020000790200007D020000BC
+:100060008102000085020000890200008D0200006C
+:100070009102000095020000990200009D0200001C
+:10008000A1020000A5020000A9020000AD020000CC
+:10009000B1020000B5020000B9020000BD0200007C
+:1000A000C1020000C5020000C9020000CD0200002C
+:1000B000D1020000D5020000D9020000DD020000DC
+:1000C000E1020000E5020000E9020000ED0200008C
+:1000D000F1020000F5020000F9020000FD0200003C
+:1000E0000103000005030000090300000D030000E8
+:1000F00011030000150300001903000051950000D2
+:100100002103000025030000290300002D03000047
+:100110003103000035030000390300003D030000F7
+:100120004103000045030000490300004D030000A7
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:10015000000000000000000000000000000000009F
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000000000000000005F
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D000000000000000000000000000000000001F
+:1001E000000000000000000000000000000000000F
+:1001F00000000000000000000000000000000000FF
+:10020000DFF80CD000F026FA0048004741AB0000B0
+:100210000030032072B60748074901600A6882F37C
+:100220000888064880F30A880548804762B6054872
+:10023000004700BF08ED00E000000000002C032094
+:10024000817B000001020000FFF7FEBF404800472D
+:100250004048004740480047404800474048004762
+:100260004048004740480047404800474048004752
+:100270004048004740480047404800474048004742
+:100280004048004740480047404800474048004732
+:100290004048004740480047404800474048004722
+:1002A0004048004740480047404800474048004712
+:1002B0004048004740480047404800474048004702
+:1002C00040480047404800474048004740480047F2
+:1002D00040480047404800474048004740480047E2
+:1002E00040480047404800474048004740480047D2
+:1002F00040480047404800474048004740480047C2
+:1003000040480047404800474048004740480047B1
+:1003100040480047404800474048004740480047A1
+:100320004048004740480047404800474048004791
+:100330004048004740480047404800474048004781
+:100340004048004740480047404800474048004771
+:100350004D0200005102000055040000F5040000A9
+:100360000505000049020000D52E000049020000EA
+:100370004902000049020000490200004902000051
+:100380004902000049020000490200004902000041
+:10039000490200004902000049020000F139000052
+:1003A000213A0000513A0000813A0000B13A0000C1
+:1003B000E13A0000113B0000413B0000490200000F
+:1003C0004902000049020000490200004902000001
+:1003D00049020000490200004902000049020000F1
+:1003E00049020000490200004902000049020000E1
+:1003F00049020000490200004902000049020000D1
+:1004000049020000490200004902000049020000C0
+:1004100049020000490200004902000049020000B0
+:1004200049020000490200004902000049020000A0
+:100430004902000049020000490200004902000090
+:10044000490200004902000049020000E12E0000BC
+:10045000713B00001EF0040F0CBFEFF30880EFF3B8
+:100460000980816911F8021C002935D101B590E895
+:100470000F10E047BDE800508CE80300254B93E8DF
+:100480000600914208BF70471A6041B91EF0100F74
+:1004900010D1214B186820F0010018600AE02CE907
+:1004A000F00F1EF0100F08BF2CED108AC1F838C0F5
+:1004B00081F822E0906B116B81F30B8892F8221087
+:1004C00061F0FF0E1EF0100F08BFB0EC108AB0E80C
+:1004D000F00F80F309887047104A13689942FAD8E0
+:1004E00001B552F821C00FC8E047BDE80050CCF874
+:1004F0000000704701B50AF0CFFDBDE80140EFF301
+:10050000098CBBE701B50BF02DF8BDE80140EFF316
+:10051000098CB3E74400002034EF00E0F8FF00004E
+:100520002DE9F05F0546002092469B468846064628
+:10053000814640241BE0284641464746224600F0BB
+:1005400079F853465A46C01A914110D311461846BD
+:10055000224600F060F82D1A67EB01084F4622464C
+:100560000120002100F057F817EB00094E41201E32
+:10057000A4F10104DFDC484631462A464346BDE883
+:10058000F09F40EA01039B0703D009E008C9121F4E
+:1005900008C0042AFAD203E011F8013B00F8013B3D
+:1005A000521EF9D27047D2B201E000F8012B491E69
+:1005B000FBD270470022F6E710B513460A46044600
+:1005C0001946FFF7F0FF204610BD421C10F8011B32
+:1005D0000029FBD1801A7047034611F8012B00F85F
+:1005E000012B002AF9D11846704720F00040C20DB7
+:1005F000C0F3160040F400007F2A02DA0020014612
+:1006000070470021962A03DCC2F19602D040704761
+:10061000963AAFF30080202A04DB203A00FA02F178
+:10062000002070479140C2F1200320FA03F31943E0
+:1006300090407047202A04DB203A21FA02F0002182
+:10064000704721FA02F3D040C2F1200291400843E2
+:1006500019467047064C074D06E0E06840F001037C
+:1006600094E8070098471034AC42F6D3FFF7CCFD6E
+:10067000740D0100940D010030B58C1810F8012B99
+:1006800012F00F0301D110F8013B120906D110F846
+:10069000012B03E010F8015B01F8015B5B1EF9D14F
+:1006A00001E001F8013B521EFBD1A142E6D300203C
+:1006B00030BD00002DE9F04389B0C826C4F202061F
+:1006C0002020306041F60030C0F2B70000F09CFC02
+:1006D00049F20818C0F21008404600F02BF94DF618
+:1006E0000000C0F2B85000F08FFC4FF48070306012
+:1006F0004FF48010306042F20040C0F2F40000F08D
+:1007000063FC40F61820C4F2000001684DF2801925
+:1007100041F02001016043F22000C4F201000168B1
+:10072000C0F6F00941F080710160016841F40001F8
+:100730000160484604F0E0FE484600F0EDFA4FF450
+:10074000037000F0F7F84FF4007030604FF40000D1
+:1007500030604FF6FC50C0F2000090E84E00D0E947
+:100760000447D0E906500DF1040C8CE84E00CDE9A9
+:100770000547CDE9075001A800F060FB08200021E3
+:10078000002200F0ADFA0B200021002200F0A8FAB0
+:1007900020200121002200F0A3FA222000210122C2
+:1007A00000F09EFA22200221002200F099FA08F5BA
+:1007B000801000F0BFF840F2144000F0BBF840F2A7
+:1007C000174000F0B7F840F22800C2F20000C0F86D
+:1007D000009009B0BDE8F083FFF76CBF04F038BDAE
+:1007E0004FF6EC40C0F20000446AC56A40F22C2685
+:1007F00047F67058C2F20006C2F2000803E000BFDC
+:100800000A200AF0B1F9A8478007F9D5F768A04790
+:1008100031693844421AB2F5F07F07DBF0684FF4D3
+:10082000F072A0F5F070306102E000BF012AE7DB52
+:10083000306931696FF35F20C0F500706FF35F219D
+:100840008242C8BF0246414400200BF08FFE0128BF
+:10085000D6DB316908443061D2E70000F0B581B0E1
+:100860004FF6EC46C0F20006B76A04461820002195
+:100870000025B84719200021B84715200021B847A6
+:1008800016200021B84794F90400022819D894F9D9
+:100890000510022918D8A279053AD3B2032B13D830
+:1008A0001AA353F820001CA352B253F821101DA321
+:1008B00053F82220084321681043B8474FF0000541
+:1008C00030B1284601B0F0BD0025284601B0F0BD8A
+:1008D000D4F80300216840F22C22C2F20002C2F8D0
+:1008E0001700516115200121D56015610125B84718
+:1008F00016200121B847B26947F67050C2F20000D5
+:100900004FF400719047284601B0F0BD0000000090
+:1009100000800000004000000000000000200000F7
+:1009200000100000010500000106000001070000A2
+:100930000100000040F00041B1F1004F08BF7047D6
+:10094000010513D0C0F30321C2B201393F2AC9B255
+:1009500006D19822C4F2020213681943116005E01F
+:1009600040F26023C4F2000343F822100021B1EBEF
+:10097000103F1EBF4FF20001C0F2FF0111EA00015B
+:1009800000D17047C0F30351000B4A1EC1B23F298A
+:10099000D0B207D19821C4F202010A68104308605E
+:1009A000704700BF40F26022C4F2000242F821000A
+:1009B0007047000040F22820C4F20000402101608E
+:1009C00020210160D0F8F01741F02001C0F8F017A5
+:1009D00043F22001C4F20101086840F40002012042
+:1009E0000A60704781B0C822C4F202024FF48070DE
+:1009F00010604FF4801010604020106080204FF491
+:100A00008053106013604FF48023136048F2A0629B
+:100A1000C0F20102009200BF009A531E00930AB177
+:100A200000BFF9E740F22822C4F200024FF0006351
+:100A30001360106043F60002C1F69C42B2FBF1F273
+:100A40006FF00E0348F2A40113FA82F24FF0004057
+:100A5000C4F2030141F86C0C192A4FF000003FD892
+:100A6000DFE802F0240E3E3E3E123E3E3E16223E9F
+:100A70003E3E3E1A3E3E3E3E3E3E3E3E3E1E00BF97
+:100A80004FF4800012E000BF4FF400000EE000BF02
+:100A90004FF080700AE000BF4FF0C07006E000BF6A
+:100AA0004FF0E07002E000BF4FF0A07051F8042C4E
+:100AB00022F0E072104341F8040C4FF4001008607B
+:100AC0004FF4803048604FF4805008604020086048
+:100AD0004FF0804041F86C0C002041F8A00C012040
+:100AE00001B0704740F28020C4F200004168032941
+:100AF00084BF00207047DFE801F003171D2300BF0B
+:100B0000016889B3016801293CD143F21000C4F2A5
+:100B1000010040F2D4010069C2F200010968C0017D
+:100B200001EAE070704700BF40F2E820C2F2000026
+:100B30008068704740F2E820C2F20000C068704749
+:100B40009820C4F20200016A490605D40168C90769
+:100B500004BF4FF400407047016A09064FBF0020F0
+:100B60000068C00380B2704743F21000C4F2010075
+:100B7000006841F600314004C0F2B70101EAE070BC
+:100B8000704700BF016802290AD1D0F8980744F2E3
+:100B900040214006C0F20F0101EAE070704700BF3B
+:100BA000006803281CBF0020704743F21000C4F205
+:100BB000010000684DF600014000C0F2B85101EAA2
+:100BC000E070704710B5044600F014F840F2203190
+:100BD000C4F2000151F8242051F82410012353FAE3
+:100BE00081F102F47F42B2FBF1F10131B0FBF1F08F
+:100BF00010BD000040F2B021C4F2000151F82020E5
+:100C0000072A61D80FF20A0000EB82030020DFE818
+:100C100002F0050715233741471300BFFFF762BFF6
+:100C200040F2E820C2F200008068D1F814110122DD
+:100C300052FA81F1B0FBF1F0704700BF43F21000AF
+:100C4000C4F20100006841F600314004C0F2B7016F
+:100C500001EAE070704700BF43F21000C4F20100E7
+:100C600000684DF600024000C0F2B852D1F8D8102A
+:100C700002EAE070012252FA81F1B0FBF1F0704714
+:100C8000D1F8680744F240214006C0F20F0101EAA2
+:100C9000E070704740F2E820C2F200004068704700
+:100CA0009820C4F20200016A490605D40168C90708
+:100CB00004BF4FF400407047016A09064FBF00208F
+:100CC0000068C00380B2704740F2112040F2D11199
+:100CD000C0F20100C0F2010140F2493209F0F0FD1A
+:100CE00000F0F803082B40F20033C4F2000305D1F2
+:100CF000FF2261F30F2243F820207047002A1CBF17
+:100D00004FF0005243F820204A1E002908BF4FF040
+:100D1000804243F8202070474DF6C101C0F2A70180
+:100D2000884201D2002157E04BF28111C0F24F11ED
+:100D3000884201D201214FE048F64121C0F2F7116B
+:100D4000884201D2022147E046F20131C0F29F21E0
+:100D5000884201D203213FE043F6C131C0F247315E
+:100D6000884201D2042137E041F28141C0F2EF31E3
+:100D7000884201D205212FE04EF64151C0F2964142
+:100D8000884201D2062127E04CF20161C0F23E51B7
+:100D9000884201D207211FE04EF20111C0F2F55145
+:100DA000884201D2082117E04CF2C121C0F2DA6179
+:100DB000884201D209210FE04AF28141C0F2BF719D
+:100DC000884201D20A2107E04DF28112C0F6F002FA
+:100DD0000C21904238BF0B2144F6E872C4F20302A2
+:100DE0001F2344F6E07013604FF2A002C4F2030028
+:100DF000CFF6FF72835823F00F030B4483504FF25A
+:100E00002002CFF6FF72022383500268520709D4F2
+:100E1000026852075CBF02685FEA427202D402684D
+:100E20005207F2D540F20040C4F20000026822F4FA
+:100E3000704242EA0131016070470000B0B540F2F3
+:100E4000980CC4F2020C4FF4007E4FF40003CCF86F
+:100E500028E0CCF82830D0E90012044640F2845053
+:100E6000C4F20000A56840F8041C42F4807142609E
+:100E7000416045F02001856081602169C160616940
+:100E80000161616941F0806141F002010161CCF8CA
+:100E900030E0CCF83030217F890740F18D80016946
+:100EA0004FF60042C0F2FF32114223D04FF60C51F0
+:100EB000CFF6FF71415801F00703032B54D841F6D8
+:100EC0000032C0F2B702DFE803F045031F2D00BF78
+:100ED00043F22001C4F2010140F2D4020968C2F2D7
+:100EE00000021268C90102EAE17250F8041C090309
+:100EF00034D53EE04DF28011C0F6F00141F2707041
+:100F000004F058FB58E000BFD0F8941444F240229B
+:100F10004906C0F20F0202EAE17250F8041C09030C
+:100F20001CD526E0DCF8201049060BD4DCF80010B4
+:100F3000C90707D14FF4004250F8041C09030DD52E
+:100F400017E000BFDCF8201009060DD4DCF8001013
+:100F5000C9038AB250F8041C09030AD44168C9B213
+:100F6000002908BF012105E0002250F8041C0903F4
+:100F7000F4D50121B2FBF1F14AF26062A1F5C03172
+:100F8000A1F5D461C0F22F1291420DD80168C907B2
+:100F900012D10168C90704BF01685FEAC1710BD1B2
+:100FA0000168C907F2D007E04DF28011C0F6F001E8
+:100FB00041F2707004F0FEFAA16940F2E822C2F238
+:100FC000000200209160B0BD44F60001C0F2E811BB
+:100FD000884284BF01207047C821C4F202014FF447
+:100FE00080720A604FF480120A6040F61821C4F241
+:100FF00000010A6842F020020A6040F2D401C2F205
+:10100000000108600020704741F60031C0F2B701CE
+:101010004DF6000C8842C0F2B85C18BF604507D09E
+:1010200046F60042C0F2DC2290421CBF012070470D
+:1010300040F24812C4F200024FF000631360C2F89D
+:10104000E030C822C4F202022023136043F21002EF
+:10105000C4F2010213684FF48041604508BF4FF0AD
+:10106000804143EA0100106000207047F0B581B074
+:1010700002787F2A18D17F220A7047784F70CFB14B
+:101080008D1C861C4FF0021430462946013F00F0AB
+:1010900017F806EB104615FA80F5002F0444F3D13B
+:1010A000204601B0F0BD00BF01B0BDE8F04000F047
+:1010B00007B800BF4FF00214204601B0F0BD000099
+:1010C0002DE9F04F89B0814690F900000D46B0F14E
+:1010D000FF3FC0B208DC9F2806D84846294609B021
+:1010E000BDE8F04F01F050BEAA460AF8010B4E468B
+:1010F00016F8010B232800F2AD82DFE810F025007E
+:1011000045005B006F009900A9005702AB02B302D3
+:10111000D102E502AB02AB02AB02AB02AB02EF02C3
+:101120002D0341035D036B03A303BB03DF03E9034B
+:10113000F303FD03070411041B046D047704810409
+:101140008B0495049F0400BF3078AC1CA0F1F00222
+:101150000F2A4FF0000101F21780DFE812F04F096B
+:101160005309720B720B720B720B720B720B720BB8
+:10117000720B720B1100110059095F09630900BF5E
+:101180004FF4806001F046B93078012800F08F827A
+:10119000002840F0778499F802002021C0074EF221
+:1011A0000010C4F208000CBFC0F80011C0F8801194
+:1011B0007DE200BF3078002808BF0120022800F03F
+:1011C0006384012840F08E8440F26021C2F2000165
+:1011D00001200871022100F067BC00BF40F26020CE
+:1011E000C2F20000002101714EF20010C4F20800AA
+:1011F00001264FF08052C0F80063C0F8802104221D
+:10120000C0F800234FF40052C0F880214FF40022B0
+:10121000C0F800230222C0F800230822C0F80023EF
+:101220008AF8001006F1011009B0BDE8F08F00BF88
+:1012300099F8010040F26021C2F200010874B9F887
+:1012400002008882B9F80400C882002001F05FB86B
+:1012500040F2602BC2F2000B9BF80400022800F061
+:101260004B84012840F038864FF000088BF800804E
+:1012700099F80230E81C0790002B09F103074FF0A2
+:10128000000001F0448504904FF0000E0020002182
+:101290009846B9460691059319F8014BA10713D456
+:1012A000BEF1000F52D00397BBF814700E2008A9AE
+:1012B00004F010FAC7B3022836D19BF80000013FB2
+:1012C0000028F3D001F0BAB8BEF1000F2AD003977E
+:1012D000BBF8147004F011000128029010D10137FE
+:1012E000204608A904F0F6F902285FD1013F01F079
+:1012F000A5809BF800000028F2D001F09FB800BF45
+:101300000E2008A904F0E6F9002F4FF0000E4FD090
+:1013100002284DD19BF80000013F0028F0D001F0D9
+:1013200073B900BF002368E0012841F00585DDE9BD
+:10133000071008700898000A4870BDF822008870ED
+:101340009DF82300C870081D0790039FD7F801007F
+:10135000A10607F10509089010D4BBF814702046C7
+:1013600008A904F0B7F97FB102280DD19BF800005D
+:10137000013F0028F3D001F047B900BFCBF81800B7
+:101380004FF0000E0120EAE0012841F0D984200648
+:1013900005D5DBF80C00079941F8040B07914FF0D5
+:1013A000000E012001210491D9E000BF4FF0010E91
+:1013B000012841F02C81DDE90710029B039F0A1DE3
+:1013C00008700898012B4FEA10204870BDF82200E1
+:1013D00088709DF82300C8700CD1200604D5DBF876
+:1013E0000C0001F10802486000210120012307924E
+:1013F00004E000BF0023012007920121E2060393CD
+:1014000014D45F46BBF814B0E2072BD1204608A9DC
+:1014100004F060F9BBF1000F38D0022836D13878DB
+:10142000ABF1010B0028F1D001F084BAD7F801002C
+:1014300007F105090290BBF816000190E0074ED0B5
+:10144000BBF814702046002104F044F9002F41D06D
+:1014500002283FD19BF80000013F0028F2D001F0A4
+:101460000FBB00BF002975D02046002104F032F9DF
+:10147000BBF1000F00F08480022840F081803878B2
+:10148000ABF1010B0028EFD001F054BA012841F074
+:10149000528207992006BB46DDF80CE044BFDBF81A
+:1014A0000C0041F8040B0898059B01F8040B089800
+:1014B0000A46000A01F8030CBDF82200079101F862
+:1014C000020C9DF8230001F8010C0020049001207B
+:1014D00046E000BFDDF80CE0012841F09880BBF841
+:1014E0001470204608A904F0F5F83FB1022805D190
+:1014F0009BF80000013F0028F3D017E0012816D127
+:10150000019BDDF80CE04FF0010093B10899DBF886
+:1015100018201140029A91420BD09BF80000013B29
+:1015200000280193DBD0012001E000BF0220DDF89C
+:101530000CE00899DBF818201140029A914218BF7C
+:1015400040F01000012841F062800020049001204A
+:1015500005E000BF002104914FF0010EBB46059B42
+:101560009BF800100029069901F10101069141F054
+:101570004E80B8F101084F467FF48EAE01F0C2BB39
+:10158000012841F0D881200604D4002004900120D5
+:10159000E2E700BFF8680799BB4641F8040B00205A
+:1015A0000791049001204FF0010ED8E740F2602728
+:1015B000C2F200073879022800F0AE84012840F01A
+:1015C000078500223A70B9F8021005F1040B0029D2
+:1015D00000F0D68599F80440A00700F1FB860020B2
+:1015E0000DF12008CDF814B00790049156F8040FBF
+:1015F000BB46BF8A0139069108902046414604F057
+:1016000069F84FB1022807D19BF80000013F00287C
+:10161000F3D000F00DBF00BF0699012840F0098704
+:101620000798002900F101005F460790DED1B88AD3
+:10163000441C0E20002104F04DF8022841F085835F
+:10164000013C01F08183387800284FF00200F0D08F
+:1016500001F07BBBFF2028704FF0011009B0BDE8FE
+:10166000F08F00BF40F26020C2F200000179022931
+:1016700000F0B684012940F0C384D9F802000126A5
+:10168000089008A90020C0F20506002404F022F802
+:101690008AF8004006F1011009B0BDE8F08F00BFE4
+:1016A000B9F80100322100FB01F0401EFDD10020FD
+:1016B0008AF800000120C0F20500A0F5403606F1CE
+:1016C000011009B0BDE8F08F0020A5F80100022646
+:1016D00006F1011009B0BDE8F08F00BF99F80230A3
+:1016E00099F80160D9F803104EF2001B13F00100C5
+:1016F000C4F2080B07D0F2074FF001020CBFCBF881
+:101700008021CBF8002113F0020907D0B7074FF072
+:10171000040754BFCBF88071CBF8007113F00405B7
+:101720004CF2010CC4F2080C1CBFB7088CF8007016
+:1017300013F08002079200F04785370600F13A85E2
+:101740004FF40027CBF88071CBF880724FF400572C
+:10175000CBF8007100F038BDD9F80100002800F086
+:10176000798143F26041C0F23C218842C0F04A8452
+:1017700040F26021C2F200010120487100F059BC22
+:1017800099F8014009F10201002C08BF4FF4807460
+:10179000204605F03DF94FF4604101EB4431002053
+:1017A0008AF800003FFA81F000F1011606F10110FD
+:1017B00009B0BDE8F08F00BF307840F2602200F041
+:1017C0000301C0F380000131C2F2000211775077AB
+:1017D000002088E100208AF8000096F800A0BAF105
+:1017E000000F00F0398109F1020402354FF00108C1
+:1017F0004FF0010914F8016B2A4616F03F0000F182
+:1018000007004FEAD007304608BF08272146AAF153
+:10181000010A02F0AFFE09EB070016F080011CBFC1
+:101820003D44B8443C44BAF1000F00F10109E1D154
+:101830004FEA094048EA000606F1011009B0BDE888
+:10184000F08F00BF96F8008040F2602BC2F2000BD0
+:10185000B8F1000F8BF81E8000F08684A8F1010C0F
+:10186000BCF1030F08F0030E80F0F6830024002380
+:1018700000F016BC40F26020C2F20000017902299B
+:1018800040F0E6803178827FC177914280F0E0803D
+:101890000E2002F039FC02F0EDFD00216970010A12
+:1018A000A870E970010C000E052629716871C0F25C
+:1018B000010606F1011009B0BDE8F08F304651462F
+:1018C00005F0B4FC064606F1011009B0BDE8F08F42
+:1018D0003046514605F052FB064606F1011009B0AC
+:1018E000BDE8F08F3046514605F0C4F8064606F1D3
+:1018F000011009B0BDE8F08F3046514605F02CF9D3
+:10190000064606F1011009B0BDE8F08F504605F01B
+:1019100097FB064606F1011009B0BDE8F08F00BF45
+:101920003046514605F09AF9064606F1011009B015
+:10193000BDE8F08F00208AF800003678002E00F015
+:1019400097804EF2001B09F1020402354FF00108A6
+:10195000C4F2080B012705E007EB09004C44471CC3
+:10196000013E31D014F8010B10F03F0101F10701E5
+:101970004FEAD10908BF4FF0080910F0800A07D1DB
+:101980000421CBF880124FF08051CBF8001106E013
+:101990004FF08051CBF880110421CBF80013214681
+:1019A0002A4603F031FE012E06D10420CBF8800236
+:1019B0004FF08050CBF80001BAF1000FCCD00137C6
+:1019C0004D44C844013ECDD148EA074606F1011016
+:1019D00009B0BDE8F08F00BF3046514605F01CFA53
+:1019E000064606F1011009B0BDE8F08F30465146B9
+:1019F00006F0EAFB064606F1011009B0BDE8F08FDB
+:101A00003046514606F06EF9064606F1011009B05F
+:101A1000BDE8F08F3046514606F0E0FA064606F182
+:101A2000011009B0BDE8F08F3046514606F0A8F924
+:101A3000064606F1011009B0BDE8F08F504606F0E9
+:101A40006DFA064606F1011009B0BDE8F08F00BF3F
+:101A5000FF2048E0FF20F2E24FF001084FF4803011
+:101A600048EA000606F1011009B0BDE8F08F00BF9A
+:101A700001274FF0010848EA074606F1011009B0B6
+:101A8000BDE8F08FFF2013E640F26021C2F20001B2
+:101A9000022008714EF20011C4F208010122C1F8BF
+:101AA0000021C1F8802208214EF20012C4F208027F
+:101AB0000423C2F80001C2F88002C2F80031C2F863
+:101AC00080324FF08053C2F800314FF40023C2F847
+:101AD0000031C2F880324FF40053C2F80031C2F82E
+:101AE000001300E000208AF800004FF0011606F114
+:101AF000011009B0BDE8F08F00248BF8004099F880
+:101B000001009BF81E1005F1030E88428BF81F00A0
+:101B100080F0F68399F8021009F10307002900F01C
+:101B20006B850020079005224FF0000C00208946AD
+:101B300005900291BB461BF8014B2346A00762F3B8
+:101B40005F0323D4BCF1000F6BD00397CDF818E0EE
+:101B5000079898460A281CBF0A2002F0D5FA40F2DE
+:101B60006020C2F20000878A0E2008A902F07AFDE8
+:101B7000E7B302283AD140F26020C2F200000078B8
+:101B8000013F0028F0D000F065BE00BFBCF1000F9F
+:101B9000049327D040F260200799C2F20000B0F809
+:101BA000148081EA030004F01002104300920190B7
+:101BB000CDF818E060D1039708F10107204608A985
+:101BC00002F050FD022840F08380013F00F044867F
+:101BD00040F26020C2F2000000780028EED000F051
+:101BE0003BBE00BF04F010009EE000BF012841F0A2
+:101BF000AF8043460898DDF818800A2188F8000075
+:101C000008980791000A88F80100BDF82200039F98
+:101C100088F802009DF8230088F8030008F104000A
+:101C20008646D7F8010040F26028A10607F10507B3
+:101C3000C2F20008089019D4CDF818E00493079870
+:101C4000BB46984202D0049802F05EFAB8F81470CD
+:101C5000204608A902F006FD57B3022828D198F8BB
+:101C60000000013F0028F3D000F004BFC8F81800BE
+:101C70004FF0000C1AE100BF0A291CBF0A2002F035
+:101C800043FA0E2008A902F0EDFC0A22B8F1000F79
+:101C90004FF0000C20D002281ED140F26020C2F28A
+:101CA00000000078A8F101080028EAD000F0F4BE96
+:101CB000012841F05980DDF818E02006049944BF5E
+:101CC000D8F80C004EF8040B5F464FF0000CECE027
+:101CD000039F079A4FF0010C0128079240F0E78616
+:101CE0000898DDF818C001998CF800000898B1FA3E
+:101CF00081F1000A8CF80100BDF8220049098CF836
+:101D000002009DF82310049B0CF104008CF80310D2
+:101D100008D0210600F1AE804FF0010C86465F46E8
+:101D2000A2E000BF86460098CDF818E040B3D7F88F
+:101D30000100B846039040F26020C2F20000B0F803
+:101D400016B00798984202D0049802F0DDF940F2EC
+:101D50006020C2F20000878A08F1050820460021B1
+:101D600002F080FC57B3022828D140F26020C2F272
+:101D700000000078013F0028F0D000F085BE00BFD1
+:101D80000798984698421CBF404602F0BDF940F2C1
+:101D90006020C2F20000878A2046002102F062FC27
+:101DA000002F55D0022853D140F26020C2F200002B
+:101DB0000078013F0028EFD000F074BE012840F009
+:101DC000D78740F26023C2F200039F8A204608A909
+:101DD00002F048FC57B1022808D140F26020C2F25C
+:101DE00000000078013F0028F0D019E0012818D148
+:101DF000BBF1000F4FF00100474667D040F260236F
+:101E0000C2F2000308999A691140039A91420DD0D9
+:101E10001878ABF1010B0028D7D0012005E000BFF6
+:101E2000022040F26023C2F20003474608999A69F3
+:101E30004FF0000C1140039A914218BF40F010007F
+:101E4000DDF818E00499012840F0968798462CE0C8
+:101E5000012840F09587DDF818E02006414619D4A6
+:101E60004FF0010C5F46079140F26028C2F2000873
+:101E70001CE000BF40F26028C2F20008D8F80C0055
+:101E80005F46CCF804000CF108004FF0010C8646C8
+:101E90000CE000BF40F26028C2F20008D8F80C0045
+:101EA0004FF0010C4EF8040B5F460791059998F826
+:101EB000000001310028059140F03887B9F101098F
+:101EC0004FF005027FF436AE00F034BF40F26023DD
+:101ED000C2F20003AAE700BF99F8020009F103016A
+:101EE000002800F0A18410F00303A0F1010C00F021
+:101EF0005B8499F8037009F10804F906214658BF7C
+:101F000009F10401BF0758BF2146012B40F064834B
+:101F1000604600F049BC00BF00223A703078B97FBB
+:101F200005F1040B8842F87780F02A81B9F80200A5
+:101F30000028069000F0648399F8048008F00100FE
+:101F400004900A3002F0E0F85FEA887000F17883CC
+:101F50000020CDF80CB00790069908AC56F8040F95
+:101F6000BB46BF8A0139059108904046214602F0E0
+:101F700079FB3FB1022805D19BF80000013F002802
+:101F8000F3D06FE30599012840F06D83079800298D
+:101F900000F101005F460790E0D1049800281CBFC3
+:101FA0000A2002F0B1F8BBF81400441C0E200021F6
+:101FB00002F058FB022840F0D286013C00F0CE86A9
+:101FC0009BF8000000284FF00200EFD000F0C7BEE1
+:101FD0000020A5F80100E870032000F076BE00BFE5
+:101FE0003178827FC177914280F09081082002F0A1
+:101FF0008BF8D9F8020003F04BF8FFF726B900BFC1
+:10200000FF2084E146F6BF01C0F278410144B1FBF4
+:10201000F0F140F26020C2F20000002242714AF664
+:10202000AB20CAF6AA20A1FB00020120022988BF2A
+:10203000500840F26021C2F20001886000208AF856
+:1020400000000120C0F20500A0F5803606F1011065
+:1020500009B0BDE8F08F00BF08F0FC0700240023A2
+:1020600009EB0406B5780BEB44000BEB040181F897
+:1020700020500385F2782B4481F82120438535795F
+:102080001A4481F82250828573792A44043481F8F5
+:102090002330A7421344C285E2D109EB0400461C59
+:1020A000BEF1000F1ED00BF11E07707807EB440243
+:1020B000391988705381BEF1010F034412D0601C9E
+:1020C000B1783A1807EB400091704381BEF1020FDE
+:1020D0000B4407D0A01CF1783A1807EB4000917030
+:1020E00043810B44BCF1030F02D200271CE000BF68
+:1020F00008F0FC0600270BEB070090F820100BEB14
+:102100004702591A118790F821300437C91A5187AC
+:1021100090F82230BE42A1EB0301918790F8230092
+:10212000A1EB0003D387E6D1BEF1000F1CD00BF169
+:102130001E02D0198078BEF1010FA3EB000302EB61
+:102140004700438310D0781C1118897802EB4000B7
+:102150005B1ABEF1020F438306D0B81C11188978B0
+:1021600002EB4000591A418300204FF0011101EBAE
+:1021700008468AF8000006F1011009B0BDE8F08FAA
+:10218000002000F09CBD00BF042800F05B81032804
+:1021900040F0578301F0E8FE002800F05183054627
+:1021A00020462946FEF718FA2846FEF70EFA411C8B
+:1021B00047E300BF4FF4002E4FF40057CBF800E187
+:1021C000CBF88071CBF800E3002900F0BD8203F06A
+:1021D0002003B3FA83F34FEA531C4CF2C063C0F2FE
+:1021E0002D0341F2040206F0E00E994238BF0B467F
+:1021F0009621CEF20002BEFA8EF403FB01F31768BB
+:102200006409F20971084FEA9608002844EA0C04B0
+:1022100046D1B9F1000F40F08580002D4CF2010C41
+:1022200041F20405C4F2080CCEF2000540F014811E
+:10223000002C00F02F820798002800F08582DBF840
+:102240000010C1F3C0418A4200F07E822968C91B98
+:10225000994280F07982DBF80010C1F3C0418A42D4
+:1022600000F072822968C91B994280F06D82DBF808
+:102270000010C1F3C0418A4200F066822968C91B80
+:10228000994280F06182DBF80010C1F3C0418A42BC
+:1022900000F05A822968C91B9942D0D354E200BF8A
+:1022A0004CF2010CC4F2080CB9F1000F62D141F2FA
+:1022B0000400CEF2000004E00168C91B994280F0DE
+:1022C0004382DBF8001001F00101B142F4D11DB9E5
+:1022D000002CF1D009E000BF9CF80010A8EB010130
+:1022E000B1FA81F149090C42E6D00799002900F0C2
+:1022F0002B82DBF80010C1F3C0418A42DCD123E21B
+:1023000009F10207002000F08EBC00BFFF2001266B
+:10231000C0F205068AF8000006F1011009B0BDE818
+:10232000F08F00BF002D4CF2010C41F20405C4F205
+:10233000080C9646CEF2000540F0FC80079884F029
+:10234000010204E02E68F61B9E4280F0FD81DBF85E
+:102350000060C6F380068E1B18BF01261643F1D11C
+:10236000002800F0F181DBF80060C6F3C046B645F6
+:10237000E8D1E9E141F204009646CEF2000004E023
+:102380000268D21B9A4280F0DF81DBF8002002F065
+:102390000102B242F4D1DBF80020C2F38002914284
+:1023A000EED11DB9002CEBD009E000BF9CF8002055
+:1023B000A8EB0202B2FA82F252091442E0D0079A64
+:1023C000002A00F0C181DBF80020C2F3C04296452C
+:1023D000D6D1B9E1E00700F04682BE8A88462046A1
+:1023E000002103F077F9002E00F03A82022840F035
+:1023F00037823878013E0028F1D030E140F2F71002
+:1024000012E000BF4DF28010C0F6F00002E000BF05
+:102410004FF40050C5F80200042112E20820012107
+:1024200020700EE24FF400706880022109E200BFC4
+:102430000220DDF814B0079A00F041BC4FF0010E05
+:10244000E4E000BF3020A08042F63260C2F6316086
+:1024500020600621F5E100BF002C00F041810798C3
+:1024600068BB9CF80010884500F06E812968C91B84
+:10247000994280F069819CF80010884500F06481E1
+:102480002968C91B994280F05F819CF8001088453B
+:1024900000F05A812968C91B994280F055819CF847
+:1024A0000010884500F050812968C91B9942D8D393
+:1024B0004AE100BF2968C91B994280F045819CF818
+:1024C0000010884506D1DBF80010C1F3C0418A42F4
+:1024D00000F03A812968C91B994280F035819CF847
+:1024E0000010884506D1DBF80010C1F3C0418A42D4
+:1024F00000F02A812968C91B994280F025819CF847
+:102500000010884506D1DBF80010C1F3C0418A42B3
+:1025100000F01A812968C91B994280F015819CF846
+:1025200000108845C6D1DBF80010C1F3C0418A42D3
+:10253000C0D109E1E4B1079805E000BF2A68D21BC9
+:102540009A4280F00181DBF80020C2F380029142C0
+:10255000F4D19CF800209045F0D1002800F0F480E0
+:10256000DBF80020C2F3C0429645E7D1ECE000BFA3
+:10257000DBF80020C2F38002914208BF9CF80020E3
+:102580002A68D21B9A4280F0DF80DBF80020C2F379
+:102590008002914208BF9CF800202A68D21B9A4210
+:1025A00080F0D280DBF80020C2F38002914208BFA5
+:1025B0009CF800202A68D21B9A4280F0C580DBF884
+:1025C0000020C2F38002914208BF9CF800202A68D4
+:1025D000D21B9A42CCD3B7E00F4617F8014B4A1DE5
+:1025E000E10648BF1746A107394658BF1146022BDE
+:1025F00040F0CE800238D7E00024002013E300BF73
+:10260000002200205BE300BF4FF0000E0220B8F173
+:10261000000F00F0E98118F00302A8F1010C00F0AE
+:102620009D8109F1050319F8017BF90648BF994618
+:10263000B90758BF9946012A1AD1E0468EE100BF7A
+:10264000BC8A4046002102F00DF8002C00F03E81CB
+:10265000022840F03B813878013C0028F1D002206C
+:1026600000222CE30220DDF80CB0079A27E300BF1C
+:10267000494611F8013B09F10507DC0648BF394618
+:102680009B07894658BFB946022A40F05981A8F1F4
+:10269000020863E1079888B92968C91B994253D297
+:1026A0002968C91B99424FD22968C91B99424BD24C
+:1026B0002968C91B9942EFD346E000BF2968C91BAE
+:1026C000994241D22968C91B99423DD22968C91B48
+:1026D000994239D22968C91B9942EFD334E000BF2F
+:1026E0000798C8B99CF800102968C91B99422BD2D9
+:1026F0009CF800102968C91B994225D29CF800104B
+:102700002968C91B99421FD29CF800102968C91B6F
+:102710009942E7D318E000BF9CF800102968C91B54
+:10272000994211D29CF800102968C91B99420BD21A
+:102730009CF800102968C91B994205D29CF800102A
+:102740002968C91B9942E7D3DBF80010DBF80020A9
+:10275000022303EA520201F001019CF80030114407
+:1027600041EA83019CF80220DBF8000041EAC20143
+:10277000802202EA103008438AF800000120C0F2EB
+:10278000050000F5803606F1011009B0BDE8F08FB4
+:102790000A4612F8013B0531DF0648BF0A469B078F
+:1027A00058BF0A4603381146BCF1030F3CD30A78E0
+:1027B0004C1D02F0020312F010024FF005022746F2
+:1027C00004BF01224F1C002B08BF0522895C08BFF3
+:1027D00027467C1D01F0020211F010014FF00501A7
+:1027E000234604BF01217B1C002A08BF0521795C18
+:1027F00008BF23465C1D01F0020211F010014FF0EA
+:102800000501274604BF01215F1C002A04BF0521E2
+:1028100027465A5C7B1DD106194658BF791C920782
+:1028200058BF19460438C2D10020A5F80100881B02
+:102830000004861C06F1011009B0BDE8F08F00BF4E
+:1028400000214FF0021050FA81F08AF8001009B010
+:10285000BDE8F08F0A2007904FF0010C022026E11E
+:102860000128414664D1002008AE07900491E0079A
+:10287000204618BF0E20B7F81480013906910029B0
+:1028800008BF04462046314602F024FFB8F1000F8D
+:1028900008D0022806D13878A8F101080028F1D024
+:1028A00010E000BF012840F0098208984BF8040BA3
+:1028B000079801300790069901200029D7D1049A82
+:1028C000FDE100BF079A0220F9E100BF01282FD1E6
+:1028D000049800280698A0F101014FF0000040F094
+:1028E000C3810790BC8A46460591002908BF0E2681
+:1028F000304608A901F0B6FE44B1022806D1387866
+:10290000013C00284FF00200F2D0D7E1012840F04E
+:10291000D58108984BF8040B07980130079005986B
+:102920000028A0F101014FF00100DBD1C3E100BF9D
+:102930000022C4E10220DDF80CE0BB4667E600BFE0
+:10294000494611F8012B09F10503D70648BF19467E
+:10295000920758BF1946A8F103088946BCF1030F36
+:1029600042D399F8001009F1050701F0020211F0B5
+:1029700010014FF005013B4604BF012109F101039D
+:10298000002A08BF052119F8011008BF3B465C1D4D
+:1029900001F0020211F010014FF00501274604BFBB
+:1029A00001215F1C002A08BF0521595C08BF27468A
+:1029B0007C1D01F0020211F010014FF005012346C9
+:1029C00004BF01217B1C002A04BF052123465A1D98
+:1029D000795C9146CF0658BF03F10109890758BFBA
+:1029E0009146B8F10408BCD1DDF818804F460128A3
+:1029F00040F08D81BEF1000F12D0B946BBF81470C3
+:102A000008AC0E20214602F065FEFFB102281DD160
+:102A10009BF80000013F0028F3D002204F4676E1EA
+:102A2000049858B3BBF81400441C0E20002102F097
+:102A300051FE022840F06B81013C00F013819BF8AD
+:102A4000000000284FF00200EFD060E101284F465F
+:102A500040F05D81DDE9071008700898000A4870B1
+:102A6000BDF8220088709DF82300C8700431012051
+:102A700007914CE14FF0000C022009E0012046E1F3
+:102A8000DDF80CE0C2E500BF4FF0000C0220C346A9
+:102A9000049907910BE000BF0A2007904FF0000C4B
+:102AA000022004E04FF0000C0220CDF81C80DDF87D
+:102AB00018E0B9F1000F7AD0E04619F00302A9F14D
+:102AC000010C2DD00BF105031BF8017BF90648BF63
+:102AD0009B46B90758BF9B46012A01D1E1461FE03A
+:102AE000594611F8013B0BF10507DC0648BF394692
+:102AF0009B078B4658BFBB46022A03D1A9F10209A6
+:102B00000EE000BF594611F8012B0BF10503D70663
+:102B100048BF1946920758BF1946A9F103098B46C9
+:102B2000BCF1030FC44642D39BF800100BF105071C
+:102B300001F0020211F010014FF005013B4604BF05
+:102B400001210BF10103002A08BF05211BF8011028
+:102B500008BF3B465C1D01F0020211F010014FF06E
+:102B60000501274604BF01215F1C002A08BF05217B
+:102B7000595C08BF27467C1D01F0020211F01001CC
+:102B80004FF00501234604BF01217B1C002A04BF2E
+:102B9000052123465A1D795C9346CF0658BF03F1A1
+:102BA000010B890758BF9346B9F10409BCD1059CB4
+:102BB00001285F4637D1CDF818E00798B9460A28B2
+:102BC00004D00A20674601F09FFABC4640F2602814
+:102BD000C2F20008B8F81470A346BCF1000F0FD081
+:102BE00008AC0E20214601F03DFD0FB302281FD195
+:102BF00098F80000013F0028F3D002200FE000BF4A
+:102C00007C1C0E20002101F02DFD022807D1013C83
+:102C1000F3D098F8000000284FF00200F1D0DDF862
+:102C200018E05C464F46B91BAEEB0A026C7074E0CC
+:102C300001285C464F4611D10898DDF81890A9F894
+:102C40000000BDF8220009F1040189F802009DF896
+:102C500023008E4689F803000120E4E7DDF818E040
+:102C6000E1E700BF022052E008AC0790059121B9CE
+:102C70000A2001F049FA4FF00E08BE8A404621466C
+:102C800001F0F0FC46B1022806D13878013E002858
+:102C90004FF00200F2D011E001280FD108984BF854
+:102CA000040B07980130079005980028A0F1010156
+:102CB0004FF00100DAD1069A01E000BF079A110A2D
+:102CC0006A70A970E870ABEB0A0099F804108907E4
+:102CD00010D499F8031099F80220890641EA82413C
+:102CE00001F5802141EA000606F1011009B0BDE8B6
+:102CF000F08F00BF40F4802606F1011009B0BDE856
+:102D0000F08F00BF98464F4601283FF473AE079AF4
+:102D100085F80180B91BA2EB0A0242EA0146A870BD
+:102D200006F1011009B0BDE8F08F00BF0120BB46DD
+:102D3000BFE600BF029C3EE74FF0010EFFF767BC05
+:102D40004FF0000EFFF763BC0220DDE9042BB6E76D
+:102D50000A2107914FF0010CA9E600BF0220069A54
+:102D6000DDF80CB0ABE700BF4FF0000C90E600BF01
+:102D70004FF0000C8BE600BFBB46079199E600BF01
+:102D80004FF0000C91E60000FF224FF001100A7096
+:102D90007047000040F26020C2F20000492200218A
+:102DA00082606422C0E9052101228180017482834E
+:102DB0008177FDF713BD000040F2082542F264461A
+:102DC00043F264484FF00009C2F20005C2F2000667
+:102DD0007F27C2F2000800BF812000214FF0FF32A0
+:102DE00008F0FAFCE88829898842F5D0AC886002AE
+:102DF000305C7E281AD106EB442005E06002315C8D
+:102E000006EB44207E2911D10770601C6988B0F15F
+:102E1000080418BF04468C42F0D1812000214FF0F5
+:102E2000FF3208F0D9FC0006E8D500BFA888698900
+:102E300006EB402008EB4121FEF718F9698905EB04
+:102E400041014882A8880130A880A888082808BFC6
+:102E5000A5F80490288901302881287880B1E88875
+:102E60002989401A80B208280AD085F8009068881D
+:102E7000012106EB402200204FF400730BF094FE7A
+:102E80006889013068816889082808BFA5F80A9018
+:102E9000E8890130E88168780028A3D0E889298A88
+:102EA00088429FD0A889411CA981A98908EB4022AA
+:102EB000082908BFA5F80C90298A0131298205EB61
+:102EC000400185F801904B8A002081210BF08EFE95
+:102ED00088E7000042F20000C4F2080000F0FEB9EA
+:102EE00047F20000C4F20A0000F0F8B910B588B348
+:102EF00090F80CE0BEF1170F38D280680123816A88
+:102F000003FA0EFC41EA0C010EF01F04816200F18D
+:102F100038024FEA5E11A34052F821401C420BD008
+:102F200052F821401C4207D052F821401C4203D0E5
+:102F300052F821401C42EFD1CEF3421100F12002A1
+:102F400002EB81018A6D1A438A65016A41EA0C012C
+:102F5000016210BD40F25A5040F21C51C0F2010013
+:102F6000C0F2010140F2CF1207F0AAFC40F2F900D2
+:102F7000C0F2010002A14FF4D67207F0A1FC00BF1D
+:102F8000433A2F4B65696C5F76352F41524D2F5078
+:102F900041434B2F4E58502F4C5043353553363903
+:102FA0005F4446502F31332E312E302F64726976B4
+:102FB0006572732F66736C5F646D612E680000002C
+:102FC0002DE9F047DDF820C05FEA0C7740F0B880CB
+:102FD000002A00F091808C79B2FBF4F707FB1427EC
+:102FE000002F40F08980002B00F09280B3FBF4F7B3
+:102FF00007FB1437002F40F08B80CD79042D00F2B1
+:1030000093800F7A052F80F08F80052C80F0A480AC
+:10301000B1F80AE0BEF5806F00F2A6804FF440766A
+:1030200006EB0426042C06F440764FF4405408BF07
+:103030004FF4007604EA0538042D08BF4FF44058D9
+:10304000BD03042F4FF00107ADB207EB162708BFF1
+:103050004FF44045B6F5007F08BF0427B2FBF7F4F4
+:1030600004FB172424B9B3FBF7F404FB17342CB189
+:1030700000210160C0E90111BDE8F08791F80090DE
+:103080004C7891F802A049EA440491F8039044EA8C
+:103090008A0491F804A044EAC904497944EA0A146C
+:1030A00040F20009C0F2FF3944EA411109EB0E4435
+:1030B00046445FFA81FE04EA09012E44C4F3094440
+:1030C00031448E444FEA1836A90BB8F5405F08BF6B
+:1030D000042604FB07F4B5F5404F08BF042114FB98
+:1030E000062214FB0131C0F800E0C0E90121C0F85C
+:1030F0000CC0BDE8F08700BF40F2703040F21C51B8
+:10310000C0F20100C0F2010140F2BB1207F0D8FB8F
+:1031100040F2C33040F21C51C0F20100C0F2010184
+:103120004FF4DE7207F0CCFB40F2164040F21C5127
+:10313000C0F20100C0F20101DD2207F0C1FB00BFB7
+:1031400040F2B34040F21C51C0F20100C0F2010154
+:103150004FF4DD7207F0B4FB40F21C5106A0C0F240
+:103160000101DF2207F0ACFB40F21C5110A0C0F2BD
+:103170000101E12207F0A4FB786665726366672DA2
+:103180003E627974655769647468203C3D202875F7
+:10319000696E74385F74296B444D415F5472616E7F
+:1031A00073666572333242697457696474680000EB
+:1031B000786665726366672D3E7472616E736665CC
+:1031C00072436F756E74203C3D20444D415F4D410C
+:1031D000585F5452414E534645525F434F554E54EB
+:1031E0000000000010B5C8B3172A37D247F2000319
+:1031F000C4F20A0399424FF0010C09D042F20003D5
+:10320000C4F20803994235D14FF0000E002302E0CA
+:1032100017234FF0010E0024C0E9021499181BA3D4
+:10322000C0E9004447F6000413F90E30C2F200046E
+:1032300044F8210003F01F014EF2001402730CFA4F
+:1032400001F15B09CEF2000444F823100CFA02F2FB
+:103250008068816C1143816410BD00BF40F25C2026
+:1032600040F21C51C0F20100C0F2010140F2E7122D
+:1032700007F026FB40F2914040F21C51C0F20100E1
+:10328000C0F20101612207F01BFB00BF013A000000
+:10329000172917D2026BCA40D2070BD100EB0112DB
+:1032A0000023D2F80824C0F2FF331A409A4204BF28
+:1032B0000020704700EB0110D0F80804C0F309406B
+:1032C0000130704740F2F90040F21C51C0F2010099
+:1032D000C0F20101C12207F0F3FA00002DE9F0432A
+:1032E00081B042F20001C4F20801884208D047F2DE
+:1032F0000001C4F20A01884254D1172001E000BF46
+:10330000002047F60001C2F2000101EB800900260F
+:103310004FF0010806E000BF0136172E04BF01B0D0
+:10332000BDE8F08359F82640002CF5D0207BA16839
+:1033300000F01F0301F15802400952F8205008FA2A
+:1033400003F72F420BD042F8207025683DB1616829
+:10335000204601220023A847207BA168400901F1F3
+:10336000600252F820303B420BD042F820702568B2
+:103370003DB16168204601220123A847207BA16856
+:103380004009403151F820203A42C5D041F8207020
+:103390002768002FC0D06168204600220223B8476A
+:1033A000BAE700BF40F2914040F21C51C0F2010068
+:1033B000C0F20101612207F083FA0000B0B50446B3
+:1033C00047F20000C4F20A0084420FD042F200002B
+:1033D000C4F20800844221D140F22020C4F200004F
+:1033E0004FF480110160002507E000BF40F220206B
+:1033F000C4F200000221012581600EA050F82500D2
+:1034000002F090F840F25C00C0F2010050F8250094
+:10341000A060206840F001002060B0BD40F2914003
+:1034200040F21C51C0F20100C0F20101612207F01C
+:1034300047FA00BF14000000010002002DE9F0412E
+:10344000002855D0002953D0002A51D05F1E022FEA
+:1034500001D3042B62D1DDF820C05FEA0C7751D193
+:10346000069CB4FBF3FEBEF5806F35D80EFB13440B
+:1034700094BB079E0025022E4FF00108C0E90055BD
+:10348000C0E90255C0E9045585610DD840F2001429
+:10349000F7004FF0011540F20116C0F20104FD40A3
+:1034A000FE4024FA07F701E000260127C5740675DF
+:1034B000077680E80610A0F816E0837480F8108084
+:1034C000BCF1000F18BF4FF0010C80F80DC080F860
+:1034D0000C80BDE8F08100BF40F2233040F21C5167
+:1034E000C0F20100C0F2010140F22B2207F0E8F91E
+:1034F00040F21C510EA0C0F2010140F2252207F05B
+:10350000DFF900BF40F2B34040F21C51C0F20100AD
+:10351000C0F2010140F2272207F0D2F940F21C511B
+:1035200012A0C0F2010140F2262207F0C9F900BF43
+:10353000284E554C4C20213D20636F6E66696729EB
+:1035400020262620284E554C4C20213D20737263A6
+:10355000416464722920262620284E554C4C202197
+:103560003D20647374416464722900002862797498
+:10357000655769647468203D3D2031554C29207C95
+:103580007C2028627974655769647468203D3D2009
+:1035900032554C29207C7C202862797465576964F7
+:1035A0007468203D3D2034554C29000000281CBF84
+:1035B000C0E90012704740F21C5103A0C0F20101A3
+:1035C00040F2052207F07CF968616E646C65202189
+:1035D0003D204E554C4C0000B0B1017B17291FD245
+:1035E00082680120136A8840034302EB01101362D2
+:1035F000D0F80014890748BF7047D0F8081441F08C
+:103600000401C0F80814704740F25A5040F21C51AF
+:10361000C0F20100C0F2010140F2CB3207F050F9D4
+:1036200040F2B82040F21C51C0F20100C0F201018A
+:1036300040F2CE3207F044F9B0B582B0002843D052
+:10364000002941D00446007B172849D2A26842F2E3
+:103650000003C4F208039A4208D047F20003C4F200
+:103660000A039A4248D1012301E000BF0023156BF1
+:10367000C540ED071EBF41F2883002B0B0BD40F238
+:103680005C0502EB0012C0F2010555F8235091F8D9
+:1036900018C0D2F8003405EB001523F0010040EA11
+:1036A0000C00C2F80004B1E80C102846CDF800C0A8
+:1036B000FFF786FC2868A168227B01EB0211C1F8A4
+:1036C0000804002002B0B0BD40F2FE2040F21C51C0
+:1036D000C0F20100C0F201014FF4697207F0F0F886
+:1036E00040F2B02040F21C51C0F20100C0F20101D2
+:1036F00040F2A53207F0E4F840F2914040F21C514C
+:10370000C0F20100C0F20101612207F0D9F8000007
+:103710002DE9F04381B0012B43DB16460A681C46B5
+:103720000D460746E0B140F29439C2F2000909F1B2
+:10373000200808E000222A60BE542868013C00F1FD
+:1037400001022A602DD0501C7F28F5D9D9F8040039
+:103750000028EFD04046394603F096FDEAE700BF67
+:10376000C4F1000CA4F1010E0023D7187E1C802E9A
+:103770001AD29E452E6014D0B81C7F2814D80CEBAA
+:103780000306B11C28600CD0F81C7F280CD8F11C53
+:10379000286006D004377F2F06D804339C422F6060
+:1037A000E3D101B0BDE8F083FEE7000083B0B0B51F
+:1037B000A1B0044625A80EC068468021FCF7FAFE99
+:1037C00040F29435C2F20005686808B343F2117301
+:1037D00025A96A462046C0F20003209103F076FD39
+:1037E000044600284FF000000CD0696851B105F183
+:1037F00020006946224603F047FD002818BF4FF01D
+:10380000FF34204621B0BDE8B04003B0704700BF90
+:10381000002021B0BDE8B04003B070474CF25031F9
+:1038200000FB01F0401EFDD17047000041F2001284
+:10383000C1F2003212F80A3C032B03D112682AB1FC
+:10384000526B104712686AB1926A104740F27A6070
+:1038500040F29261C0F20100C0F201014FF4F17236
+:1038600007F02EF840F2626040F29261C0F201006F
+:10387000C0F2010140F2DD1207F022F870B5ADF59B
+:10388000007D41F20015C1F2003515F80A1C04460E
+:10389000032913D1286800287AD0816A20468847F6
+:1038A00000285AD10120606215F80A0C032819D1AA
+:1038B0002868002800F08480C66C17E0286800287B
+:1038C00072D0C16920468847002846D10120606235
+:1038D00015F80A0C03281DD12868002870D0C66C82
+:1038E0001CE000BF2868002876D0066C6946204698
+:1038F00000224FF40073B04778BB0220606215F8D5
+:103900000A0C019E03281DD12868002858D0C56CD8
+:103910001CE000BF286800285ED0066C694620467F
+:1039200000224FF40073B047B8B90220606215F866
+:103930000A0C019E032813D12868002840D0C56CCA
+:1039400011E000BF2868002846D0056C6946204673
+:1039500000224FF40073A84768B10DF5007D70BDDB
+:103960002868C8B3056C6946204600224FF40073EE
+:10397000A8470028F1D101980221864288BF30462D
+:1039800088BF0121C4E9080100200DF5007D70BD4C
+:1039900040F27A6040F29261C0F20100C0F201018F
+:1039A00040F2A91206F08CFF40F2626040F2926190
+:1039B000C0F20100C0F2010140F29F1206F080FF48
+:1039C00040F27A6040F29261C0F20100C0F201015F
+:1039D0004FF4127206F074FF40F2626040F292619E
+:1039E000C0F20100C0F2010140F2432206F068FF7C
+:1039F00040F24C30C2F2000002682AB1416A46F23D
+:103A00000000C4F20800104740F2695040F2BD5176
+:103A1000C0F20100C0F20101B72206F051FF000020
+:103A200040F24C30C2F2000042682AB1816A47F28B
+:103A30000000C4F20800104740F2695040F2BD5146
+:103A4000C0F20100C0F20101C52206F039FF0000FA
+:103A500040F24C30C2F2000082682AB1C16A48F2DA
+:103A60000000C4F20800104740F2695040F2BD5116
+:103A7000C0F20100C0F20101D32206F021FF0000D4
+:103A800040F24C30C2F20000C2682AB1016B49F228
+:103A90000000C4F20800104740F2695040F2BD51E6
+:103AA000C0F20100C0F20101E12206F009FF0000AE
+:103AB00040F24C30C2F2000002692AB1416B4AF276
+:103AC0000000C4F20800104740F2695040F2BD51B6
+:103AD000C0F20100C0F20101EF2206F0F1FE000089
+:103AE00040F24C30C2F2000042692AB1816B46F2CA
+:103AF0000000C4F20900104740F2695040F2BD5185
+:103B0000C0F20100C0F20101FE2206F0D9FE000061
+:103B100040F24C30C2F2000082692AB1C16B47F218
+:103B20000000C4F20900104740F2695040F2BD5154
+:103B3000C0F20100C0F201014FF4867206F0C0FE2F
+:103B400040F24C30C2F20000C2692AB1016C48F266
+:103B50000000C4F20900104740F2695040F2BD5124
+:103B6000C0F20100C0F201014FF48D7206F0A8FE10
+:103B700040F24C30C2F20000026A2AB1416C4FF2AE
+:103B80000000C4F20900104740F2695040F2BD51F4
+:103B9000C0F20100C0F201014FF4947206F090FEF1
+:103BA00049F6FF71C4F2080188421FDD46F6FF7135
+:103BB000C4F2090188423BDD47F20001C4F2090169
+:103BC000884204BF0620704748F20001C4F2090190
+:103BD000884204BF072070474FF20001C4F2090178
+:103BE000884204BF0820704716E000BF47F6FF7107
+:103BF000C4F2080188422DDC46F20001C4F208013B
+:103C0000884204BF0020704747F20001C4F2080157
+:103C1000884204BF0120704740F2905040F2BD51ED
+:103C2000C0F20100C0F201016A2206F049FE00BFA5
+:103C30004AF20001C4F20801884204BF0420704720
+:103C400046F20001C4F20901884204BF0520704712
+:103C5000E2E700BF48F20001C4F20801884204BF55
+:103C60000220704749F20001C4F20801884204BFF3
+:103C700003207047D0E70000B0B5044649F6FF7056
+:103C8000C4F2080084420D461ADD46F6FF70C4F205
+:103C90000900844228DD47F20000C4F20900844292
+:103CA0003ED048F20000C4F2090084423AD04FF2FC
+:103CB0000000C4F20900844274D1082039E000BF3A
+:103CC00047F6FF70C4F2080084421BDC46F2000095
+:103CD000C4F20800844227D047F20000C4F2080072
+:103CE00084425FD1012024E04AF20000C4F20800BF
+:103CF00084421BD046F20000C4F20900844251D134
+:103D0000052016E048F20000C4F2080084420FD0FB
+:103D100049F20000C4F20800844243D1032008E0C5
+:103D2000062006E0072004E0002002E0042000E076
+:103D3000022040F26401C0F2010131F810100123A9
+:103D40000A0AC9B203FA01F11CA353F8200040F299
+:103D50002023C4F2000343F8221001F0E3FB8DB1ED
+:103D6000042D07D8D4F8F80FE84000075CBF032003
+:103D7000B0BD07E0052D03D1D4F8F80F000601D43B
+:103D80000320B0BDD4F8F80F000707D5D4F8F80F1A
+:103D900000F00700A8421CBF0120B0BD0020C4F8FD
+:103DA000F85FB0BD40F2905040F2BD51C0F201004A
+:103DB000C0F201016A2206F083FD00BF0B00010082
+:103DC0000C0001000D0001000E0001000F000100B9
+:103DD0001000010011000100120001001C0002008F
+:103DE00049F6FF73C4F2080398421BDD46F6FF73E1
+:103DF000C4F2090398422BDD47F20003C4F2090321
+:103E0000984245D048F20003C4F20903984243D0D7
+:103E10004FF20003C4F20903984255D14FF0080C49
+:103E200048E000BF47F6FF73C4F2080398421FDC66
+:103E300046F20003C4F20803984231D047F200036F
+:103E4000C4F2080398423FD14FF0010C32E000BFAA
+:103E50004AF20003C4F20803984225D046F2000358
+:103E6000C4F2090398422FD14FF0050C22E000BFA5
+:103E700048F20003C4F20803984219D049F2000343
+:103E8000C4F2080398421FD14FF0030C12E000BFA8
+:103E90004FF0060C0EE000BF4FF0070C0AE000BF29
+:103EA0004FF0000C06E000BF4FF0040C02E000BF32
+:103EB0004FF0020C40F24C33C2F2000303EB8C00D3
+:103EC00043F82C104262704740F2905040F2BD51CE
+:103ED000C0F20100C0F201016A2206F0F1FC00000C
+:103EE000B0B5042934D24FF63C6CC0F2000C3CF85B
+:103EF00011C040F220254FEA1C2E5FFA8CF44FF0DF
+:103F0000010C0CFA04F4C4F2000545F82E401D78AB
+:103F100095B100EB81005B780CFA02F100F50852D4
+:103F2000002B08BF00F50A5211604FF4005283586D
+:103F300019438150B0BD00BF00EB81004FF4005128
+:103F400043580CFA02F223EA02024250B0BD00BF0D
+:103F500040F2006040F22361C0F20100C0F20101B2
+:103F60002D2206F0ADFC0000B0B594B005A8FFF717
+:103F700085FC18B10025284614B0B0BD01AC05A8D9
+:103F80002146FFF753FC18B10025284614B0B0BDF8
+:103F900041F6B752A01E1021C0F2C1424FF0FF34CB
+:103FA00010F8023F84EA036382EA4305B3F1FF3F5E
+:103FB000C8BF5D0082EA4503B5F1FF3FC8BF6B0093
+:103FC00082EA4305B3F1FF3FC8BF5D0082EA4503C3
+:103FD000B5F1FF3FC8BF6B0082EA4305B3F1FF3F75
+:103FE000C8BF5D0082EA4503B5F1FF3FC8BF6B0063
+:103FF00082EA4305B3F1FF3FC8BF5D0082EA450393
+:104000004478B5F1FF3FC8BF6B0083EA046382EADE
+:104010004305B3F1FF3FC8BF5D0082EA4503B5F138
+:10402000FF3FC8BF6B0082EA4305B3F1FF3FC8BF43
+:104030005D0082EA4503B5F1FF3FC8BF6B0082EA2D
+:104040004305B3F1FF3FC8BF5D0082EA4503B5F108
+:10405000FF3FC8BF6B0082EA4305B3F1FF3FC8BF13
+:104060005D0082EA4504B5F1FF3FC8BF6C0002392C
+:1040700096D140F2C435C2F2000505A206A3284637
+:10408000202100940BF040FB284614B0B0BD00BFC7
+:1040900025732530385800003030413100000000D1
+:1040A00080B568B1C1B11AB300784FF61C63C0F295
+:1040B000000353F8200005F06FF9002080BD00BF19
+:1040C00040F2625040F27A11C0F20100C0F20101E8
+:1040D0004FF4C87206F0F4FB40F2751040F27A110A
+:1040E000C0F20100C0F2010140F2911206F0E8FBBB
+:1040F00040F2CA1040F27A11C0F20100C0F2010190
+:104100004FF4C97206F0DCFBF0B540F26423C2F252
+:1041100000035F784EF200224CF2010EC4F2080256
+:1041200004250121C4F2080E1560C2F880107FB387
+:104130001160C2F880101160C2F88050C2F880107F
+:104140001160C2F8801011608EF8001093F81BC047
+:1041500003EB4C018D8C002D00F0AA8015F00306B6
+:10416000A5F1010400F092800127012E2146C2F83A
+:104170008070176000F08B80022EC2F8807017608C
+:1041800040F0F080A91E032C80F0838090E000BFF7
+:104190005C68641EFDD111605C68641EFDD1C2F8CC
+:1041A00080105C68641EFDD111605C68641EFDD1E6
+:1041B000C2F88050C2F880105C68641EFDD11160A6
+:1041C0005C68641EFDD1C2F880105C68641EFDD17D
+:1041D00011605C68641EFDD18EF80010D97E03EB7F
+:1041E0004107BD8C65B10121C2F880105C68641E76
+:1041F000FDD111605C68641EFDD1013DF4D1D97E12
+:104200005F183F7F012F12D0794201258EF8000000
+:10421000C2F880505C68641EFDD115605C68641E45
+:10422000FDD101314F1C4FEA5000EFD1D97E03EB95
+:104230004101898E002900F05D808EF80000012088
+:10424000C2F880005C68641EFDD110605C68641E6A
+:10425000FDD18EF8000001290CD04942C2F880003F
+:104260005C68641EFDD110605C68641EFDD1013184
+:104270004F1CF3D104211160C2F880005968491E17
+:10428000FDD110605868401EFDD141E02946032C45
+:104290000ED301240439C2F880401460C2F8804073
+:1042A0001460C2F880401460C2F880401460F1D1FC
+:1042B00003EB0C010D7F6C1E00F08A8014F00306E6
+:1042C000A5F1020C10D00124012E4FEA50018EF806
+:1042D0000000C2F88040146034D164460846BCF146
+:1042E000030F80F0558070E0BCF1030F80F0508028
+:1042F0006BE000BF042111608EF800000120C2F8BD
+:1043000080005968491EFDD110605868401EFDD1DB
+:104310000120C2F880005968491EFDD1106059681B
+:104320000427491EFDD1C2F88070C2F88000596888
+:10433000491EFDD110605868401EFDD101208EF845
+:104340000000F0BD8EF80010022E4FEA9001C2F876
+:104350008040146010D1EC1E0846BCF1030F17D248
+:1043600033E000BF0121C2F880101160E91E032C68
+:10437000BFF48FAF9CE700BF8EF800100121C2F898
+:1043800080101160C1082C1F0846BCF1030F1CD31C
+:104390000125014648088EF80010C2F880501560CB
+:1043A0008EF800008808C2F8805015608EF8000072
+:1043B000C808043C4FEA1111C2F8805015608EF80D
+:1043C0000000C2F880501560E4D193F81BC0084685
+:1043D00003EB4C01898EE9B18EF800000123481EE1
+:1043E000C2F8803013608EF800302FD010F0030632
+:1043F000A1F1020319D00127012E1846C2F88070DE
+:10440000176012D0022EC2F88070176008D1C81E43
+:104410000BE000BF042111608EF8000018E000BF1F
+:104420000120C2F880001060081F032B0ED3012169
+:104430000438C2F880101160C2F880101160C2F810
+:1044400080101160C2F880101160F1D1042010605A
+:1044500001200421C2F880001060C2F880001060C2
+:10446000C2F88010C2F88000106001208EF80000B1
+:10447000F0BD0000B0B54EF2002EC4F2080E0421CB
+:10448000012040F26422CEF80010CEF88000C2F283
+:10449000000253685B1EFDD1CEF8000053685B1E1E
+:1044A000FDD1CEF88010CEF880005168491EFDD1B4
+:1044B000CEF800005168491EFDD1CEF88000516849
+:1044C000491EFDD1CEF800005168491EFDD1D17EB4
+:1044D00061B100BFCEF8800053685B1EFDD1CEF8FD
+:1044E000000053685B1EFDD10139F3D14CF2030C7F
+:1044F00000236FF01E01C4F2080C00BFCEF880004C
+:104500005468641EFDD19CF80040CEF80000556848
+:1045100043EAC4736D1EFDD101314FEA5303EDD35D
+:1045200004200121CEF80000CEF880105468641EEB
+:10453000FDD19CF80050CEF800105468641EFDD1E7
+:10454000CEF880105468641EFDD1CEF80010546877
+:10455000641EFDD1CEF88000CEF88010546843EA86
+:10456000C570641EFDD1CEF800105168491EFDD102
+:10457000B0BD00002DE9F04710F03F0C08BF4FF030
+:10458000400C43064EF200294CF2010AC4F208091D
+:104590004FF0040354BFC9F88030C9F8003000065A
+:1045A000C4F2080A26D440F264240122C2F20004B4
+:1045B00003E000BFBCEB030C52D011F8017BACF15F
+:1045C000010600258AF80070C9F8802063685B1E28
+:1045D000FDD19AF80230C9F8002063685B1EFDD156
+:1045E000AE4205F10103E5D07F08072D1D46E9D154
+:1045F000E0E700BF40F264284FF0010EC2F200086D
+:104600000BE000BFC3F1080027FA00F0BCEB030C7D
+:1046100002F8010B08BFBDE8F08711F8015BACF1AF
+:1046200001060024002700BF8AF80050C9F880E086
+:10463000D8F804305B1EFDD19AF80230C9F800E0CA
+:10464000D8F80400DB01401EFDD143EA5707A6421B
+:1046500004F10103D6D06D08072C1C46E4D1D1E744
+:10466000BDE8F0872DE9F04F9FB040F2642BC2F215
+:10467000000B9BF801504EF200224CF2010CC4F2E8
+:10468000080204260127C4F2080C1660C2F88070E4
+:1046900055B31760C2F88060C2F880701760C2F826
+:1046A000807017609BF81B50002D00F0F78015F00C
+:1046B0000304A5F1010600F0DF804FF0010E012C8C
+:1046C0003746C2F880E0C2F800E000F0D680022C45
+:1046D000C2F880E0C2F800E040F03C83AF1E032E39
+:1046E00080F0CD80DAE000BFDBF80440641EFDD12D
+:1046F0001760DBF80440641EFDD1C2F88060C2F888
+:104700008070DBF80440641EFDD11760DBF80440C4
+:10471000641EFDD1C2F88070DBF80440641EFDD138
+:104720001760DBF80440641EFDD19BF81B7077B165
+:10473000012600BFC2F88060DBF80440641EFDD192
+:104740001660DBF80440641EFDD1013FF2D147083A
+:1047500001248CF80070C2F88040DBF804506D1E14
+:10476000FDD19CF802E01460DBF8045086086D1E51
+:10477000FDD18CF80060C2F88040DBF804506D1E5B
+:10478000FDD19CF802601460DBF80450C7086D1E70
+:10479000FDD18CF80070C2F88040DBF8045046EA86
+:1047A0004E076D1EFDD19CF802601460DBF80450CA
+:1047B00047EA860E6D1EFDD1BEF1010F40F04E801E
+:1047C000840700F1758209686FF01E04012500BF9F
+:1047D0008CF80010C2F88050DBF804305B1EFDD16D
+:1047E0001560DBF804305B1EFDD149080134EFD3BE
+:1047F0009BF81B409BF81A50E3435E1900F0C682F9
+:104800008CF800100121C2F88010DBF804305B1E28
+:10481000FDD11160DBF804305B1EFDD1012E0ED0FE
+:10482000631B9C1CC2F88010DBF804305B1EFDD1BA
+:104830001160DBF804305B1EFDD10134F2D3042398
+:104840001360C2F88010DBF804305B1EFDD11160EC
+:10485000DBF80410491EFDD1BEE200BF0421116047
+:10486000C2F88040DBF80410491EFDD11460DBF86B
+:104870000410491EFDD1AFE22F46032E0ED30126B0
+:10488000043FC2F880601660C2F880601660C2F80B
+:1048900080601660C2F880601660F1D1470801247C
+:1048A0008CF80070C2F8804086089CF80270146092
+:1048B0008CF80060C2F880409CF80260146046EA00
+:1048C0004707C6088CF80060C2F880409CF8026078
+:1048D000146047EA860EBEF1010F40F0E1808407C4
+:1048E00000F1E4800C68012165088CF80040C2F8F2
+:1048F000801011608CF80050A508C2F8801011607B
+:104900008CF80050E508C2F8801011608CF8005057
+:104910002509C2F8801011608CF800506509C2F8B2
+:10492000801011608CF80050A509C2F88010116049
+:104930008CF80050E509C2F8801011608CF8005026
+:10494000250AC2F8801011608CF80050650AC2F880
+:10495000801011608CF80050A50AC2F88010116018
+:104960008CF80050E50AC2F8801011608CF80050F5
+:10497000250BC2F8801011608CF80050650BC2F84E
+:10498000801011608CF80050A50BC2F880101160E7
+:104990008CF80050E50BC2F8801011608CF80050C4
+:1049A000250CC2F8801011608CF80050650CC2F81C
+:1049B000801011608CF80050A50CC2F880101160B6
+:1049C0008CF80050E50CC2F8801011608CF8005093
+:1049D000250DC2F8801011608CF80050650DC2F8EA
+:1049E000801011608CF80050A50DC2F88010116085
+:1049F0008CF80050E50DC2F8801011608CF8005062
+:104A0000250EC2F8801011608CF80050650EC2F8B7
+:104A1000801011608CF80050A50EC2F88010116053
+:104A20008CF80050E50EC2F8801011608CF8005030
+:104A3000250FC2F8801011608CF80050650FC2F885
+:104A4000801011608CF80050A50FC2F88010116022
+:104A50008CF80050C2F8801011609BF81B609BF826
+:104A60001A70F543ED194FEAD47400F07D818CF88B
+:104A700000406C1EC2F88010116000F00F82B91B5C
+:104A80008E1C16F00306A1F1030100F0F68101244B
+:104A9000012EC2F88040146040F0DA81AC1EECE1D7
+:104AA00004211160C2F880401460A4E24FF00108B4
+:104AB000C2F880809CF802301E93C2F80080C2F8D1
+:104AC00080809CF802301D93C2F80080C2F880807C
+:104AD0009CF80290C2F80080C2F880809CF80270B6
+:104AE000C2F80080C2F880809CF80260C2F80080A2
+:104AF000C2F880809CF802301C93C2F80080C2F893
+:104B000080809CF802301B93C2F80080C2F880803D
+:104B10009CF802301A93C2F80080C2F880809CF89A
+:104B200002301993C2F80080C2F880809CF80230ED
+:104B30001893C2F80080C2F880809CF80230179366
+:104B4000C2F80080C2F880809CF802301693C2F848
+:104B50000080C2F880809CF802301593C2F8008073
+:104B6000C2F880809CF802301493C2F80080C2F82A
+:104B700080809CF802301393C2F80080C2F88080D5
+:104B80009CF802301293C2F80080C2F880809CF832
+:104B900002301193C2F80080C2F880809CF8023085
+:104BA0001093C2F80080C2F880809CF802300F9306
+:104BB000C2F80080C2F880809CF802300E93C2F8E0
+:104BC0000080C2F880809CF802300D93C2F800800B
+:104BD000C2F880809CF802300C93C2F80080C2F8C2
+:104BE00080809CF802300B93C2F80080C2F880806D
+:104BF0009CF802300A93C2F80080C2F880809CF8CA
+:104C000002300993C2F80080C2F880809CF802301C
+:104C10000893C2F80080C2F880809CF802300793A5
+:104C2000C2F80080C2F880809CF802300693C2F877
+:104C30000080C2F880809CF802300593C2F80080A2
+:104C4000C2F880809CF802300493C2F80080C2F859
+:104C500080809CF802300393C2F800809BF81B40D0
+:104C60009BF81AA0E54315EB0A0300F08380CDE919
+:104C70000167C2F880809CF802504F46B3F10109E9
+:104C80000095C2F8008000F02A81AAEB0404A51C5C
+:104C900015F00305A4F1030400F00E810126012D97
+:104CA000C2F88060166040F0DB80A3F1020903E1E6
+:104CB00000246FF01E050126C2F88060DBF8047046
+:104CC0007F1EFDD19CF802701660DBF804305B1E7D
+:104CD000FDD144EAC77301354FEA5304ECD39BF886
+:104CE0001B709BF81A50FB4313EB050900F0608022
+:104CF0000126C2F88060DBF804305B1EFDD19CF811
+:104D000002801660DBF804305B1EFDD1B9F1010FA3
+:104D10000FD07B1B9D1C00BFC2F88060DBF8043005
+:104D20005B1EFDD11660DBF804305B1EFDD1013542
+:104D3000F2D304231360C2F88060DBF804305B1EFA
+:104D4000FDD11660DBF804305B1EFDD1002940D197
+:104D500042E000BF0123C2F880301360EF1E032E33
+:104D6000BFF48DAD9AE500BF042515608CF80040B6
+:104D700097E000BF04241460C2F880809CF8028091
+:104D800001240029146040F0B78034E1042313604B
+:104D90008CF800100121C2F88010DBF804305B1E93
+:104DA000FDD11160DBF80410491EFDD114E000BFF5
+:104DB000042313600123C2F88030DBF804506D1E19
+:104DC000FDD19CF802801360DBF804305B1EFDD13E
+:104DD00011B144EAC8730B600121C2F88010DBF8FE
+:104DE00004305B1EFDD11160DBF8043004245B1E2F
+:104DF000FDD1C2F88040C2F88010DBF804305B1EA1
+:104E0000FDD11160DBF804305B1EFDD18CF8001081
+:104E1000000606D541F20400CEF200000068CBF88F
+:104E200008009BF80C00002800F02481012100BF3D
+:104E3000C2F88010DBF804305B1EFDD11160DBF896
+:104E4000043001385B1EFDD10028F1D112E100BF12
+:104E5000022EC2F8804014600AD1EC1E0DE000BFA3
+:104E6000022DC2F88060166020D1A3F1030923E06F
+:104E70000123C2F8803013602C1F03290ED30121B7
+:104E8000043CC2F880101160C2F880101160C2F8B2
+:104E900080101160C2F880101160F1D104211160FE
+:104EA0000121C2F880101160A5E000BF0125C2F801
+:104EB00080501560A3F10409032C10D3012400BF16
+:104EC000B9F10409C2F880401460C2F8804014604F
+:104ED000C2F880401460C2F880401460F0D104240D
+:104EE00014600124C2F88040B946029FDDE90086C3
+:104EF0000124002914607ED01E9B4FF0804404EAF8
+:104F000083741D9B4FEAC97544EAC3741C9B45EA30
+:104F10005404FD0745EA5404F50745EA5404DD0747
+:104F20001B9B45EA5404DD071A9B45EA5404DD0740
+:104F3000199B45EA5404DD07189B45EA5404DD0734
+:104F4000179B45EA5404DD07169B45EA5404DD0728
+:104F5000159B45EA5404DD07149B45EA5404DD071C
+:104F6000139B45EA5404DD07129B45EA5404DD0710
+:104F7000119B45EA5404DD07109B45EA5404DD0704
+:104F80000F9B45EA5404DD070E9B45EA5404DD07F8
+:104F90000D9B45EA5404DD070C9B45EA5404DD07EC
+:104FA0000B9B45EA5404DD070A9B45EA5404DD07E0
+:104FB000099B45EA5404DD07089B45EA5404DD07D4
+:104FC000079B45EA5404DD07069B45EA5404DD07C8
+:104FD000059B45EA5404DD07049B45EA5404DD07BC
+:104FE000039B45EA5404DD0745EA54044FEAC875BB
+:104FF00045EA54040C60012104240006C2F8801024
+:105000001160C2F88040C2F8801011608CF8001066
+:1050100006D541F20400CEF200000068CBF808008B
+:105020009BF80C3033B313F00307A3F101010FD049
+:105030000126012F0846C2F88060166009D0022FB1
+:10504000C2F8806016601BD1981E032912D302E0BB
+:10505000184603290ED301210438C2F880101160CC
+:10506000C2F880101160C2F880101160C2F8801080
+:105070001160F1D15FFA8EF01FB0BDE8F08F00BF74
+:10508000D81E0123C2F8803013600329F2D3E2E76F
+:10509000B0B54EF2002EC4F2080E0421012340F2F6
+:1050A0006422CEF80010CEF88030C2F200025468BC
+:1050B000641EFDD1CEF800305468641EFDD1CEF8D8
+:1050C0008010CEF880305168491EFDD1CEF80030F6
+:1050D0005168491EFDD1CEF880305168491EFDD17E
+:1050E000CEF800305168491EFDD1D17E61B100BFBC
+:1050F000CEF880305468641EFDD1CEF8003054687C
+:10510000641EFDD10139F3D14CF2010CC4F2080C3C
+:1051100000218CF80010CEF880305168491EFDD176
+:10512000CEF800305168491EFDD1CEF8803051686C
+:10513000491EFDD1CEF800305168491EFDD1CEF890
+:1051400080305168491EFDD1CEF800305168491EAB
+:10515000FDD16FF01E0100BF8CF80000CEF880304A
+:105160005468641EFDD1CEF800305468641EFDD131
+:1051700040080131F0D3D17E937ECC43E4182BD08C
+:105180008CF800000120CEF8800055686D1EFDD11E
+:10519000CEF8000055686D1EFDD1012C0ED0C91A45
+:1051A000023100BFCEF8800053685B1EFDD1CEF8FF
+:1051B000000053685B1EFDD10131F3D30421CEF80A
+:1051C0000010CEF880005168491EFDD1CEF80000D5
+:1051D0005068401EFDD10FE00421CEF800108CF87D
+:1051E00000000120CEF880005168491EFDD1CEF8A4
+:1051F00000005068401EFDD10120CEF880005168AB
+:10520000491EFDD1CEF8000051680423491EFDD18E
+:10521000CEF88030CEF880005168491EFDD1CEF81E
+:1052200000005168491EFDD18CF80000B0BD00009F
+:10523000002B08BF704741F24660101AB0FA80F0A8
+:10524000400941F247618A4208BF02201847000026
+:10525000F0B585B040F22025C4F200054FF40050AF
+:105260004CF2000428604FF48040C4F20804286027
+:1052700000260DF11203204600210022ADF8126035
+:10528000FEF72EFE04AB204600210122ADF810608F
+:105290000127FEF725FE0DF10E0320460021022214
+:1052A000ADF80E60FEF71CFE40F20110ADF80C00E8
+:1052B00003AB204600210522FEF712FE0DF10A0382
+:1052C000204600210D22ADF80A70FEF709FE02AB60
+:1052D000204600211322ADF80860FEF701FE0DF113
+:1052E0000603204600211C22ADF80670FEF7F8FDEB
+:1052F000D5F8E00D40F2411240F4A07020F00F000C
+:10530000C5F8E00D41F20400C4F20000016841F468
+:10531000A07121F00F010160016B41F4807121F057
+:105320000F010163816C41F4A07121F00F018164D0
+:10533000416841F4A07121F03F014160C16D11430A
+:1053400021F00E01C165016E114321F00E010166CD
+:10535000C16E41F4A07121F00F01C1668168114353
+:1053600021F00E018160016940F2071241F4907151
+:1053700021F01F010161D0F88410114321F00801D0
+:10538000C0F8841005B0F0BD10B500F1280151E857
+:10539000002F12B9BFF32F8F04E0531E41E80034F1
+:1053A00004B1F4E772B12C300121006850B1821CC5
+:1053B000D2E84F3FC2E8441F04B1F9E71A0602D011
+:1053C0000830F2E7002010BD70B5024652F8305F99
+:1053D0004DB1CC7800235DB12E46ED78A5420DD2BB
+:1053E00075683346F7E70023C162C1E901330DE078
+:1053F0000024C1E9014300F12C0403E0C1E9016389
+:1054000006F108042160002B18BF1A1D1160283016
+:1054100050E8001F4A1C40E8002303B1F8E770BDC4
+:10542000D1E9012312B193608B6800E0C362191DBA
+:10543000002B08BF00F130010A6070471A4800686D
+:10544000704700BF19480178012905D105494FF07F
+:1054500080620A60002101701348016841F0010177
+:105460000160704704ED00E04FF0FF30704700002E
+:1054700040B10B490968B1FBF0F0411E0020B0EBD0
+:10548000116F02D04FF0FF307047064AFF231370B0
+:105490000623054A13605160044908709060704704
+:1054A0002800002023ED00E010E000E0D85D00209F
+:1054B00021682046D4E9022305F024BD6FF00500E1
+:1054C0007047002100220646002706F033B86FF02F
+:1054D000050070476FF0030010BD4DF808ED204641
+:1054E00005F09EFF20465DF808EB05F0C5BE0446BA
+:1054F0000078F1287047000010B50849022488425E
+:1055000038BF01240649884238BF0024204605F0F0
+:1055100043FA2046BDE8104005F0C8BA81A4BF0791
+:1055200001E1F50580B582B2202A37D240F20011A0
+:10553000000CC4F200014FF0010C01EB800E0CFADC
+:1055400002F2CEF8202000BF51F8203013420BD1D8
+:1055500051F82030134207D151F82030134203D1C3
+:1055600051F820301342EFD0CEF840200BE000BFBE
+:1055700051F8203013409A4218BF80BD51F82030B6
+:1055800013409A4209D151F8203013409A4204D175
+:1055900051F8203013409A42EAD080BD40F210709A
+:1055A00040F2D061C0F20100C0F20101302205F0EA
+:1055B00087F9000080B5002808BF80BD44F2402272
+:1055C000A1FB0001C0F20F0291420BD240F6001283
+:1055D000C0F23D020023FAF7A3FF0046401E002858
+:1055E000FCD180BD40F2172102A0C0F20101C5220A
+:1055F00005F066F9636F756E74203C3D2055494E89
+:105600005433325F4D4158002DE9F04110F03F0C0A
+:1056100008BF4FF0400C00064EF200204CF2020E84
+:10562000C4F20800C4F2080E24D440F2642301221C
+:10563000C2F2000305E000BFBCEB070C08BFBDE8E9
+:10564000F08111F8014BACF1010500268EF8004005
+:10565000C0F880205F687F1EFDD102605F687F1EFA
+:10566000FDD1B54206F10107E6D06408072E3E469B
+:10567000ECD1E1E740F264234FF00108C2F20003ED
+:1056800009E000BFC7F1080125FA01F102F8011B8A
+:10569000BCEB070C1CD0ACF101040026002500BFB8
+:1056A000C0F880805F687F1EFDD19EF80070C0F852
+:1056B00000805968FF01491EFDD147EA5505B442F3
+:1056C00006F10107DED0072E3E46E9D1DAE700BF3A
+:1056D000BDE8F0812DE9F04740F26429C2F20009EB
+:1056E00099F801704CF2020C4EF2002AC4F2080C38
+:1056F0000124C4F2080A002F8CF80040CAF8804048
+:1057000000F09A804708CAF800408CF80000CAF8F8
+:105710008040CAF800408CF8007000EB5007860803
+:1057200007EB9007CAF8804007EBD007CAF80040A3
+:105730008CF80060C608CAF88040CAF800408CF8AF
+:105740000060CAF88040CAF800408CF8007000275A
+:10575000CAF88040CAF800408CF800704FF08057BB
+:10576000CAF88040CAF800408CF80040CAF880406F
+:10577000CAF80040CAF880700427CAF8007299F885
+:105780001880B8F1000F2BD0A8F1010718F003051D
+:10579000464610D00124012D3E46CAF88040CAF882
+:1057A000004008D0022DCAF88040CAF8004040F0FE
+:1057B0008D85A8F10206032F12D30127043ECAF8F3
+:1057C0008070CAF80070CAF88070CAF80070CAF811
+:1057D0008070CAF80070CAF88070CAF80070EDD105
+:1057E0000124CAF880409CF80070CAF80040CAF84A
+:1057F00080409CF80060CAF80040CAF8804047EA40
+:1058000046079CF80060CAF8004047EA860EBEF1E1
+:10581000040F18BFBEF1020F40F01E8499F8191052
+:1058200010F0020018BF002940F03C84B8F1000FCE
+:1058300040F0C18400F0FABDD9F80420521EFDD119
+:10584000CAF80040D9F80420521EFDD18CF800009F
+:10585000CAF88040D9F80420521EFDD1CAF8004091
+:10586000D9F804204308521EFDD18CF80030CAF844
+:105870008040D9F80420521EFDD1CAF80040D9F862
+:1058800004208308521EFDD18CF80030CAF88040F5
+:10589000D9F8042000EB5003521EFDD1CAF8004095
+:1058A000D9F80420C708521EFDD18CF80070CAF840
+:1058B000804003EB9003D9F80420521EFDD1CAF8B2
+:1058C000004003EBD003D9F80420521EFDD18CF820
+:1058D0000030CAF88040D9F80420521EFDD1CAF821
+:1058E0000040D9F804200023521EFDD18CF800306E
+:1058F000CAF88040D9F80420521EFDD1CAF80040F1
+:10590000D9F80420521EFDD18CF80040CAF880401E
+:10591000D9F80420521EFDD1CAF80040D9F804205D
+:10592000521EFDD14FF080530422CAF88030CAF8CD
+:10593000002299F818707FB1012600BFCAF8806074
+:10594000D9F80420521EFDD1CAF80060D9F804200D
+:10595000521EFDD1013FF1D10122CAF88020D9F8B1
+:1059600004305B1EFDD19CF80030CAF80020D9F845
+:105970000440641EFDD1CAF88020D9F80440641E9A
+:10598000FDD19CF80070CAF80020D9F80440641ECC
+:10599000FDD1CAF88020D9F8044043EA4703641EC9
+:1059A000FDD19CF80070CAF80020D9F8042043EA21
+:1059B000870E521EFDD1BEF1040F18BFBEF1020FBB
+:1059C00040F0148410F0020000F0928199F8191050
+:1059D000002900F08D810121CAF88010D9F8042037
+:1059E000521EFDD1CAF80010D9F80420521EFDD174
+:1059F000CAF88010D9F80420521EFDD1CAF8001050
+:105A0000D9F80420521EFDD1CAF88010D9F804201C
+:105A1000521EFDD1CAF80010D9F80420521EFDD143
+:105A2000CAF88010D9F80420521EFDD1CAF800101F
+:105A3000D9F80420521EFDD1CAF88010D9F80420EC
+:105A4000521EFDD1CAF80010D9F80420521EFDD113
+:105A5000CAF88010D9F80420521EFDD1CAF80010EF
+:105A6000D9F80420521EFDD1CAF88010D9F80420BC
+:105A7000521EFDD1CAF80010D9F80420521EFDD1E3
+:105A8000CAF88010D9F80420521EFDD1CAF80010BF
+:105A9000D9F80420521EFDD1CAF88010D9F804208C
+:105AA000521EFDD1CAF80010D9F80420521EFDD1B3
+:105AB000CAF88010D9F80420521EFDD1CAF800108F
+:105AC000D9F80420521EFDD1CAF88010D9F804205C
+:105AD000521EFDD1CAF80010D9F80420521EFDD183
+:105AE000CAF88010D9F80420521EFDD1CAF800105F
+:105AF000D9F80420521EFDD1CAF88010D9F804202C
+:105B0000521EFDD1CAF80010D9F80420521EFDD152
+:105B1000CAF88010D9F80420521EFDD1CAF800102E
+:105B2000D9F80420521EFDD1CAF88010D9F80420FB
+:105B3000521EFDD1CAF80010D9F80420521EFDD122
+:105B4000CAF88010D9F80420521EFDD1CAF80010FE
+:105B5000D9F80420521EFDD1CAF88010D9F80420CB
+:105B6000521EFDD1CAF80010D9F80420521EFDD1F2
+:105B7000CAF88010D9F80420521EFDD1CAF80010CE
+:105B8000D9F80420521EFDD1CAF88010D9F804209B
+:105B9000521EFDD1CAF80010D9F80420521EFDD1C2
+:105BA000CAF88010D9F80420521EFDD1CAF800109E
+:105BB000D9F80420521EFDD1CAF88010D9F804206B
+:105BC000521EFDD1CAF80010D9F80420521EFDD192
+:105BD000CAF88010D9F80420521EFDD1CAF800106E
+:105BE000D9F80420521EFDD1CAF88010D9F804203B
+:105BF000521EFDD1CAF80010D9F80420521EFDD162
+:105C0000CAF88010D9F80420521EFDD1CAF800103D
+:105C1000D9F80420521EFDD1CAF88010D9F804200A
+:105C2000521EFDD1CAF80010D9F80420521EFDD131
+:105C3000CAF88010D9F80420521EFDD1CAF800100D
+:105C4000D9F80420521EFDD1CAF88010D9F80420DA
+:105C5000521EFDD1CAF80010D9F80420521EFDD101
+:105C6000CAF88010D9F80420521EFDD1CAF80010DD
+:105C7000D9F80420521EFDD1CAF88010D9F80420AA
+:105C8000521EFDD1CAF80010D9F80420521EFDD1D1
+:105C9000CAF88010D9F80420521EFDD1CAF80010AD
+:105CA000D9F80420521EFDD1CAF88010D9F804207A
+:105CB000521EFDD1CAF80010D9F80420521EFDD1A1
+:105CC000CAF88010D9F80420521EFDD1CAF800107D
+:105CD000D9F80420521EFDD1CAF88010D9F804204A
+:105CE000521EFDD1CAF80010D9F80410491EFDD18A
+:105CF00099F8181071B10124CAF88040D9F804202D
+:105D0000521EFDD1CAF80040D9F80420521EFDD120
+:105D10000139F1D10421CAF880114FF080510028D7
+:105D2000CAF8001040F06C8699F81900002800F0BD
+:105D3000678600208CF800000120CAF88000D9F89E
+:105D40000410491EFDD1CAF80000D9F80410491EFC
+:105D5000FDD1CAF88000D9F80410491EFDD1CAF857
+:105D60000000D9F80410491EFDD1CAF88000D9F806
+:105D70000410491EFDD1CAF80000D9F80410491ECC
+:105D8000FDD1CAF88000D9F80410491EFDD1CAF827
+:105D90000000D9F80410491EFDD1CAF88000D9F8D6
+:105DA0000410491EFDD1CAF80000D9F80410491E9C
+:105DB000FDD1CAF88000D9F80410491EFDD1CAF8F7
+:105DC0000000D9F80410491EFDD1CAF88000D9F8A6
+:105DD0000410491EFDD1CAF80000D9F80410491E6C
+:105DE000FDD1CAF88000D9F80410491EFDD1CAF8C7
+:105DF0000000D9F80410491EFDD1CAF88000D9F876
+:105E00000410491EFDD1CAF80000D9F80410491E3B
+:105E1000FDD1CAF88000D9F80410491EFDD1CAF896
+:105E20000000D9F80410491EFDD1CAF88000D9F845
+:105E30000410491EFDD1CAF80000D9F80410491E0B
+:105E4000FDD1CAF88000D9F80410491EFDD1CAF866
+:105E50000000D9F80410491EFDD1CAF88000D9F815
+:105E60000410491EFDD1CAF80000D9F80410491EDB
+:105E7000FDD1CAF88000D9F80410491EFDD1CAF836
+:105E80000000D9F80410491EFDD1CAF88000D9F8E5
+:105E90000410491EFDD1CAF80000D9F80410491EAB
+:105EA000FDD1CAF88000D9F80410491EFDD1CAF806
+:105EB0000000D9F80410491EFDD1CAF88000D9F8B5
+:105EC0000410491EFDD1CAF80000D9F80410491E7B
+:105ED000FDD1CAF88000D9F80410491EFDD1CAF8D6
+:105EE0000000D9F80410491EFDD1CAF88000D9F885
+:105EF0000410491EFDD1CAF80000D9F80410491E4B
+:105F0000FDD1CAF88000D9F80410491EFDD1CAF8A5
+:105F10000000D9F80410491EFDD1CAF88000D9F854
+:105F20000410491EFDD1CAF80000D9F80410491E1A
+:105F3000FDD1CAF88000D9F80410491EFDD1CAF875
+:105F40000000D9F80410491EFDD1CAF88000D9F824
+:105F50000410491EFDD1CAF80000D9F80410491EEA
+:105F6000FDD1CAF88000D9F80410491EFDD1CAF845
+:105F70000000D9F80410491EFDD1CAF88000D9F8F4
+:105F80000410491EFDD1CAF80000D9F80410491EBA
+:105F9000FDD1CAF88000D9F80410491EFDD1CAF815
+:105FA0000000D9F80410491EFDD1CAF88000D9F8C4
+:105FB0000410491EFDD1CAF80000D9F80410491E8A
+:105FC000FDD1CAF88000D9F80410491EFDD1CAF8E5
+:105FD0000000D9F80410491EFDD1CAF88000D9F894
+:105FE0000410491EFDD1CAF80000D9F80410491E5A
+:105FF000FDD1CAF88000D9F80410491EFDD1CAF8B5
+:106000000000D9F80410491EFDD1CAF88000D9F863
+:106010000410491EFDD1CAF80000D9F80410491E29
+:10602000FDD1CAF88000D9F80410491EFDD1CAF884
+:106030000000D9F80410491EFDD1CAF88000D9F833
+:106040000410491EFDD1CAF80000D9F80400401E12
+:10605000FDD100F0D5BC00BFBEF1010F40F01081B2
+:10606000870700F13F81B8F1000F00F03183A8F1FC
+:10607000010618F00305474600F015830124012DA1
+:106080003746CAF88040CAF8004000F00C83022D61
+:10609000CAF88040CAF8004040F0FE82A8F102072A
+:1060A00001E300BF0122CAF88020CAF80020CAF824
+:1060B0008020CAF80020CAF88020CAF80020CAF858
+:1060C0008020CAF80020CAF88020CAF80020CAF848
+:1060D0008020CAF80020CAF88020CAF80020CAF838
+:1060E0008020CAF80020CAF88020CAF80020CAF828
+:1060F0008020CAF80020CAF88020CAF80020CAF818
+:106100008020CAF80020CAF88020CAF80020CAF807
+:106110008020CAF80020CAF88020CAF80020CAF8F7
+:106120008020CAF80020CAF88020CAF80020CAF8E7
+:106130008020CAF80020CAF88020CAF80020CAF8D7
+:106140008020CAF80020CAF88020CAF80020CAF8C7
+:106150008020CAF80020CAF88020CAF80020CAF8B7
+:106160008020CAF80020CAF88020CAF80020CAF8A7
+:106170008020CAF80020CAF88020CAF80020CAF897
+:106180008020CAF80020CAF88020CAF80020CAF887
+:106190008020CAF80020CAF88020CAF80020CAF877
+:1061A0008020CAF80020CAF88020CAF80020B8F180
+:1061B000000F00F03B81A8F1010418F003054246EE
+:1061C00000F01F810126012D2246CAF88060CAF81E
+:1061D000006000F01681022DCAF88060CAF80060E5
+:1061E00040F00881A8F102020BE100BFBEF1010FEF
+:1061F00040F05880820700F1B78199F818707FB19C
+:10620000012600BFCAF88060D9F80420521EFDD1D3
+:10621000CAF80060D9F80420521EFDD1013FF1D127
+:106220000422CAF880214FF08052CAF800200F687B
+:1062300000216FF01F0601258CF80070CAF880500D
+:10624000D9F80420521EFDD1CAF80050D9F8042014
+:10625000521EFDD1394401364FEA5707ECD34FF0B7
+:10626000010E8CF80010CAF880E0D9F80410491E1D
+:10627000FDD1CAF800E0D9F80410491EFDD1C0E1F3
+:1062800008F1210010F0030100F0E581012001294F
+:10629000CAF88000CAF8000040F05C8108F12000D4
+:1062A000D9E100BF99F8180001212130CAF8801007
+:1062B000D9F80420521EFDD1CAF80010D9F80420E4
+:1062C000521EFDD10138F1D1D8E100BF0122CAF838
+:1062D0008020CAF80020A8F10306032FBFF46DAA9E
+:1062E000FFF77EBA00276FF01F040125002600BFCC
+:1062F000CAF880509CF80020CAF800501744D20712
+:10630000CAF8805042EA56029CF80060CAF8005071
+:106310003744F607CAF8805046EA52029CF80060FB
+:10632000CAF800503744F607CAF8805046EA5202CD
+:106330009CF80060CAF800503744F607CAF880504D
+:1063400046EA52029CF80060CAF800503744F6074B
+:10635000CAF8805046EA52029CF80060CAF8005021
+:106360003744F607CAF8805046EA52029CF80060AB
+:10637000CAF80050CAF880503744F6079CF800303D
+:1063800046EA5202DE0746EA520608341F44CAF8BB
+:106390000050ADD10122CAF880209CF800304FF0A7
+:1063A000080E7B40DB0708BF4FF0010E0029CAF83A
+:1063B000002018BF0E60B8F1000F00F0D782A8F1DE
+:1063C000010418F00305414600F0BB820126012DAF
+:1063D0002146CAF88060CAF8006000F0B282022D3F
+:1063E000CAF88060CAF8006040F0A482A8F10201F7
+:1063F000A7E200BF0122CAF88020CAF80020A8F155
+:106400000302032C12D30124043ACAF88040CAF8CC
+:106410000040CAF88040CAF80040CAF88040CAF874
+:106420000040CAF88040CAF80040EDD10422CAF802
+:1064300080214FF080520028CAF8002040F0E0820E
+:10644000002900F0DD8200208CF800000120CAF84D
+:106450008000CAF80000CAF88000CAF80000CAF834
+:106460008000CAF80000CAF88000CAF80000CAF824
+:106470008000CAF80000CAF88000CAF80000CAF814
+:106480008000CAF80000CAF88000CAF80000CAF804
+:106490008000CAF80000CAF88000CAF80000CAF8F4
+:1064A0008000CAF80000CAF88000CAF80000CAF8E4
+:1064B0008000CAF80000CAF88000CAF80000CAF8D4
+:1064C0008000CAF80000CAF88000CAF80000CAF8C4
+:1064D0008000CAF80000CAF88000CAF80000CAF8B4
+:1064E0008000CAF80000CAF88000CAF80000CAF8A4
+:1064F0008000CAF80000CAF88000CAF80000CAF894
+:106500008000CAF80000CAF88000CAF80000CAF883
+:106510008000CAF80000CAF88000CAF80000CAF873
+:106520008000CAF80000CAF88000CAF80000CAF863
+:106530008000CAF80000CAF88000CAF80000CAF853
+:106540008000CAF80000CAF88000CAF80000CAF843
+:10655000800098E00229CAF88000CAF8000040F0E4
+:10656000738008F11F0076E000266FF01F074FF0E0
+:10657000010E0024CAF880E0D9F80420521EFDD193
+:106580009CF80020CAF800E0D9F80430D5075B1E5B
+:10659000FDD145EA540401371644EBD30122CAF871
+:1065A0008020D9F804305B1EFDD14FF0080E9CF816
+:1065B0000030CAF80020D9F80420521EFDD186EA26
+:1065C0000302D20708BF4FF0010E002918BF0C606C
+:1065D00099F8181071B10124CAF88040D9F8042044
+:1065E000521EFDD1CAF80040D9F80420521EFDD138
+:1065F0000139F1D10421CAF880114FF08051CAF855
+:106600000010000606D541F20400CEF2000000683A
+:10661000C9F8080099F80C00002800F0F181002169
+:106620008CF80010012100BFCAF88010D9F80420AE
+:10663000521EFDD1CAF80010D9F80420521EFDD117
+:106640000138F1D1DCE100BF0120CAF88000CAF8AE
+:10665000000008F11E0001210438CAF88010CAF8B1
+:106660000010CAF88010CAF80010CAF88010CAF8E2
+:106670000010CAF88010CAF80010EDD10420CAF842
+:1066800080014FF08050CAF8000001215FFA8EF0BF
+:106690008CF80010BDE8F0870122CAF88020CAF803
+:1066A0000020A8F10307032E12D30126043FCAF8E5
+:1066B0008060CAF80060CAF88060CAF80060CAF852
+:1066C0008060CAF80060CAF88060CAF80060EDD146
+:1066D0000422CAF880214FF08052CAF800200C68CA
+:1066E000012162088CF80040CAF88010CAF8001036
+:1066F0008CF8002004EB5402A30802EB9402CAF8C1
+:10670000801002EBD402CAF8001002EB14128CF8CD
+:10671000003002EB5412E30802EB9412CAF8801026
+:1067200002EBD412CAF8001002EB14228CF80030ED
+:1067300002EB5422230902EB9422CAF8801002EBE8
+:10674000D422CAF8001002EB14328CF8003002EBAD
+:106750005432630902EB9432CAF8801002EBD4324F
+:10676000CAF8001002EB14428CF8003002EB5442DD
+:10677000A30902EB9442CAF8801002EBD442CAF893
+:1067800000108CF80030E309CAF88010CAF8001035
+:106790008CF80030230A02EB1452CAF88010CAF8B1
+:1067A00000108CF80030630ACAF88010CAF8001094
+:1067B0008CF80030A30A02EB5452CAF88010CAF8D1
+:1067C00000108CF80030E30ACAF88010CAF80010F4
+:1067D0008CF80030230B02EB9452CAF88010CAF8F0
+:1067E00000108CF80030630BCAF88010CAF8001053
+:1067F0008CF80030A30B02EBD452CAF88010CAF810
+:1068000000108CF80030E30BCAF88010CAF80010B2
+:106810008CF80030230C02EB1462CAF88010CAF81E
+:1068200000108CF80030630CCAF88010CAF8001011
+:106830008CF80030A30C02EB5462CAF88010CAF83E
+:1068400000108CF80030E30CCAF88010CAF8001071
+:106850008CF80030230D02EB9462CAF88010CAF85D
+:1068600000108CF80030630DCAF88010CAF80010D0
+:106870008CF80030A30D02EBD462CAF88010CAF87D
+:1068800000108CF80030E30DCAF88010CAF8001030
+:106890008CF80030230E02EB1472CAF88010CAF88C
+:1068A00000108CF80030630ECAF88010CAF800108F
+:1068B0008CF80030A30E02EB5472CAF88010CAF8AC
+:1068C00000108CF80030E30ECAF88010CAF80010EF
+:1068D0008CF80030230F02EB9472CAF88010CAF8CB
+:1068E00000108CF80030630FCAF88010CAF800104E
+:1068F0008CF80030A30F02EBD472CAF88010CAF8EB
+:1069000000108CF80030E30F4FF0010ECAF8801031
+:10691000CAF800108CF80030CAF88010CAF80010CD
+:106920008CF80020CAF880100006CAF8001026D49F
+:106930002CE000BF0121CAF88010CAF80010A8F1AD
+:106940000301032C12D301240439CAF88040CAF889
+:106950000040CAF88040CAF80040CAF88040CAF82F
+:106960000040CAF88040CAF80040EDD10421CAF8BE
+:1069700080114FF080510006CAF8001006D541F290
+:106980000400CEF200000068C9F8080099F80C2055
+:10699000B2B300208CF8000012F00304A2F1010051
+:1069A00010D00125012C0146CAF88050CAF80050C9
+:1069B00010D0022CCAF88050CAF8005004D1911EA1
+:1069C00008E000BF114605E00121CAF88010CAF8AE
+:1069D0000010D11E032813D3012000BF0439CAF8C8
+:1069E0008000CAF80000CAF88000CAF80000CAF89F
+:1069F0008000CAF80000CAF88000CAF80000EDD193
+:106A000001215FFA8EF08CF80010BDE8F0870000DD
+:106A100070B5002808BF70BD4EF2002340F2642418
+:106A200000224FF0040CC4F208034FF0010EC2F232
+:106A300000040025002A04BF11F8015B0822EE07BC
+:106A40000CBFC3F880C0C3F800C0C3F880E066681C
+:106A5000761EFDD1C3F800E066680138761EFDD1D0
+:106A60006D080028A2F10102E4D170BD002082214E
+:106A700008F08CB8B0B540F2A825C2F20005EA785B
+:106A80000C46012A08D1006800F00CF8014618B144
+:106A90004FF004102160B0BD002169704FF0041068
+:106AA0002160B0BD2DE9F04145F2404440F2A826F6
+:106AB000C0F28904C2F200064FF62458A04238BF43
+:106AC00004467078C0F20008D8F82850C00710D0EB
+:106AD00016200021A847D8F82C008047800708D549
+:106AE000D8F824008047F1680844F060192000219C
+:106AF000A847012021460127A84728B100242046A5
+:106B00003470BDE8F08100BF70783770C10714D0D1
+:106B100080070FD4F06840F2E43300F03F016FF3D8
+:106B20005F30D8F81820C2F20003C1F140011844C8
+:106B30003161904716200121A8472046BDE8F08129
+:106B40004FF62452C0F20002926940F2A823C2F22A
+:106B5000000319611047000070B540F2A826C2F288
+:106B600000060078727800F0010502F0010085420D
+:106B70000C4605D100214FF00110217070BD00BFFF
+:106B80007DB1B078022805D1707918B1FFF76EFF9A
+:106B90000020707100203072F080F0607061F06150
+:106BA0003062F078012815D1284600F019F888B134
+:106BB000B07875700228DDD140F20420C2F20000E6
+:106BC0000068012104F0DCFD00214FF0011021706C
+:106BD00070BD00BFFF214FF00110217070BD00009B
+:106BE00070B5B8B140F2A820C2F2000001780129C6
+:106BF0000DD14FF624540121C0F20004A2690161B5
+:106C000040F2E430C2F2000001219047E0B10020E0
+:106C100070BD00BF4FF62455C0F20005D5E90A4605
+:106C200016200021A047B047800715D5686A804725
+:106C300040F2A821C2F20001CA681044C8601920BD
+:106C40000021A04708E000BFA26A1620012190475A
+:106C500000281CBF002070BD012070BD2DE9F0434D
+:106C600081B040F2A826C2F200068046B0790C46F8
+:106C700080F0010230447178C379B27143EA0109AE
+:106C800000220129C27113D1F078012824D10120FA
+:106C9000002500BF3571F16872690128A1EB020778
+:106CA00002D100F05BF90744307920B1F078F1E7C8
+:106CB000F0687169471AB0785FFA89F1012828D124
+:106CC000B8F80050B5F5FE7F28BF4FF4FE75AF420F
+:106CD00098BF3D461EE000BF002000BF3071F16844
+:106CE000726933797BB13071F1687269337953B16C
+:106CF0003071F168726933792BB13071F168726962
+:106D00003379002BEAD18F1AB0785FFA89F1012824
+:106D1000D6D000252170290A01286570A17075D18F
+:106D2000D6F81480002D55D040F2E43115F003035D
+:106D3000A5F1010EC2F200010ED040466FF35F30A4
+:106D4000421C085C012BE0700ED104F1040C734668
+:106D5000BEF1030F23D23DE004F1030C42462B4663
+:106D6000BEF1030F1BD235E06FF35F32885C571C16
+:106D7000022B207108D104F1050CAB1E3A46BEF17E
+:106D8000030F0CD226E000BF6FF35F37C85D7A1C9B
+:106D900004F1060C6071EB1EBEF1030F1AD3ACF1C7
+:106DA000040700BF10466FF35F30085C541C07F8FF
+:106DB000040F6FF35F34085D941C78706FF35F34D9
+:106DC000085DD41CB8706FF35F34085D621C043B2F
+:106DD000F870E7D108EB050070617078032815D1D1
+:106DE000F06871690022411AB2EB513F0ED1F1787F
+:106DF00001290BD10121717040F2E4316FF35F3052
+:106E0000C2F2000108440121FFF79AFEE81C40F499
+:106E1000003001B0BDE8F0832DE9F04790F800A004
+:106E200088464FF000095FEACA700E460AD15FEA51
+:106E30008A701ED45FEA4A7060D409F58030BDE8DC
+:106E4000F08700BF40F2A820C2F2000081794278AA
+:106E500081F001030144CF79837147EA020046467D
+:106E600081F8079006F8010B4FF001095FEA8A707C
+:106E7000E0D540F2A824C2F200046078012813D1C2
+:106E8000E078012814D10120002500BF2571E168B8
+:106E900062690128A1EB020702D100F05FF8074404
+:106EA0002079E8B1E078F1E7E0686169471A17E016
+:106EB000002000BF2071E168626923797BB12071F5
+:106EC000E1686269237953B12071E16862692379CD
+:106ED0002BB12071E16862692379002BEAD18F1A06
+:106EE000380A08F809707070380CB070380EF070FD
+:106EF000043609F104095FEA4A709ED540F2A821E0
+:106F0000C2F20001002200BF0A71CB69086A0F7942
+:106F10007FB10A71CB69086A0F7957B10A71CB69E1
+:106F2000086A0F792FB10A71CB69086A0F79002FAF
+:106F3000EAD1190A7170190CB170190EF170010AB9
+:106F400030717171010C000E09F104093370B171D7
+:106F5000F07109F58030BDE8F087000010B54FF6FC
+:106F60002454C0F20004E06A804780075CBF002020
+:106F700010BD606ABDE8104000470000F0B581B068
+:106F800040F2A825C2F20005EA780778012A0C46EB
+:106F900004BF002000F01AF84FF0000667B1012F7F
+:106FA00006D10120012700F011F808B1002105E009
+:106FB000FF21002702E000BF00270021EF706E7064
+:106FC0004FF00110217001B0F0BD000070B540F22B
+:106FD000A8220021C2F200021170C8B14FF6245459
+:106FE000C0F20004A16848F2F960C0F200008847CE
+:106FF00000281CBF002070BD21690220884700289E
+:1070000004BF012070BDE0688047002070BD00BF54
+:107010004FF62450C0F20000866AD0E903451620DE
+:107020000021B04719200021B0470020A847A04701
+:10703000012070BD0B4602460020822107F0D6BD1C
+:107040002DE9F04381B040F2A827C2F200070446C0
+:10705000B87997F8019080F00101384490F80780E2
+:10706000B9710021B9F1010FC17113D1F87801286C
+:1070700014D10120002500BF3D71F9687A6901280B
+:10708000A1EB020602D1FFF769FF06443879E8B1A7
+:10709000F878F1E7F8687969461A17E0002000BF30
+:1070A0003871F9687A693B797BB13871F9687A6926
+:1070B0003B7953B13871F9687A693B792BB13871F2
+:1070C000F9687A693B79002BEAD18E1A48EA0900FF
+:1070D0002070300AA070300C310E6670E070052010
+:1070E000217101B0BDE8F08340F2A82540F2E43AF6
+:1070F0004FF0FF344FF001080027C2F20005C2F242
+:10710000000A15E0696908466FF35F30C0F5005268
+:10711000964288BF164619F1020218BFBBF1000F54
+:1071200048D150443146AE6185F80580FFF782FFB3
+:1071300001200021224604F04FFB69786A7911F0A2
+:10714000010B4FF0320408BF4FF0FF34002AEFD19B
+:107150008146012928D1E87801280FD1012000BFFC
+:107160002F71E9686A690128A1EB020602D1FFF7D5
+:10717000F5FE06442879D0B1E878F1E72F71E86888
+:1071800069692A7992B12F71E86869692A796AB1C7
+:107190002F71E86869692A7942B12F71E8686969D5
+:1071A0002A79002AEAD101E0E8686969461A002EC6
+:1071B000A8D1BDE76FF35F2131B1C1F500718E42F7
+:1071C0000E46B5D3ADE700BF16F47856A9D1AFE7A8
+:1071D00080B540F2A820C2F20000816942691144E2
+:1071E0000022416142714178032914D1C168436989
+:1071F000CB1AB2EB533F0ED1C278012A0BD1012238
+:10720000427040F2E4306FF35F31C2F20000084494
+:107210000121FFF795FC40F20420C2F20000006853
+:107220000121BDE8804004F0ABBA000040F2A82282
+:10723000C2F200025378DB070AD1007802289ABF15
+:1072400090700022FF224FF001100A70704700BFBB
+:10725000FF224FF001100A707047B0B500F10C0129
+:10726000C289D1E85F3F9A4202D8BFF32F8F04E072
+:107270005C1CC1E8554F05B1F3E799B2C289002003
+:10728000914238BF0120B0BD60B169B172B10068F0
+:1072900070B10378012B0ABF0C3043F2215000F08B
+:1072A00009B87047FEE700BFFEE700BFFEE700BF7A
+:1072B000FEE7000030B139B1002A18BFFCF7F0BE7C
+:1072C000FEE700BFFEE700BFFEE700002DE9F04F3C
+:1072D0008BB00C46002101910DF10B019A46154629
+:1072E000013901AF0091461C00F1020916F8012C8A
+:1072F000002A00F08D8200BF252A0BD0284639468F
+:107300000123D047013609F1010916F8012C002AA2
+:10731000F2D17DE2B04618F801094FF0000BA0F160
+:107320003001092948D800BF0BEB8B0100EB41016C
+:1073300099F80000A1F1300BA0F130020A2A2FD2F7
+:107340000BEB8B0100EB410199F80100A1F1300B2F
+:10735000A0F13002092A2BD80BEB8B0100EB410185
+:1073600099F80200A1F1300BA0F13002092A41D8AE
+:107370000BEB8B0100EB410199F80300A1F1300BFD
+:10738000A0F130010A2909F10409CDD3A9F10208BD
+:10739000A9F101060DF10B092E2837D110E000BF2D
+:1073A000A9F101084E460DF10B092E282ED107E058
+:1073B00009F10106C84600BF0DF10B092E2825D1A1
+:1073C000707830380A280FD2B078303809280DD8B4
+:1073D000F0783038092817D816F8040F30380A2802
+:1073E000EED3A6F1010811E0B0460FE006F1010866
+:1073F0000CE000BF09F1010809F102060DF10B09CB
+:107400002E2803D1DCE700BF06F1020898F801201E
+:1074100002F0FB0068281BD198F8022002F0FB0064
+:10742000682813D198F8032002F0FB00682840F088
+:107430005D8018F8042F02F0FB006828E6D0A8F160
+:107440000108A2F14600322807D911E108F101082C
+:10745000A2F14600322800F20B81DFE810F04F0065
+:1074600009010901090109010901090109010901CC
+:1074700009010901090109010901090109010901BC
+:10748000090159000901090109010901090109015D
+:10749000090109010901330007019F0009014F009B
+:1074A000090109019F0009010901090109010901F7
+:1074B00033003300090109010F01090133000901FB
+:1074C0000901590054F8041B702A00F0F5806F2A56
+:1074D00000F03281622A14BF0A20022000294FF0F6
+:1074E00000028DF80B2040F0EE802CE108F102083C
+:1074F000A2F1460032287FF6B0AFB9E0E01D20F0DF
+:10750000070000F1080401AF08F10200EBE600BF3C
+:1075100054F8040B002100288DF80B1000F018819E
+:1075200037270126782A08BF572700BF00F00F022F
+:107530000A2A3B4638BF30231A44102809F806208F
+:10754000C0F03181C0F3031339460A2B38BF302114
+:1075500009EB06021944B0F5807F5170C0F020811C
+:10756000C0F303213B460A2938BF30231944B0F544
+:10757000805F9170C0F01681C0F303313B460A2949
+:1075800038BF3023B0F5803F4FEA1040194406F170
+:107590000406D170CAD2013E05E100BF54F8040BC5
+:1075A000002100288DF80B1000F0D880012600BFC4
+:1075B0004CF6CD41CCF6CC41A0FB0112D10801EB39
+:1075C00081023723524200EB42020A2A38BF30239D
+:1075D0001A440A2809F80620C0F0FF8048F21F521A
+:1075E000C5F2EB12A0FB02235B0903EB83023727F2
+:1075F000524201EB420209EB06010A2A38BF30274A
+:107600003A4464284A70C0F0E58044F6D352C1F28F
+:107610006202A0FB0227BA0902EB82077F4203EB5A
+:10762000470337270A2B38BF30273B44B0F57A7F12
+:107630008B70C0F0D18041F25973CDF2B713A0FB2B
+:1076400003377B0B03EB830704367F4202EB4702D1
+:1076500037270A2A38BF30273A44CA7042F21071DD
+:1076600088421846A4D2013EB7E000BF14F8042BAC
+:1076700001AF284639460123D047C5E054F8046BD2
+:10768000002E3FF440AF3046F8F79FFF01AFABEB61
+:107690000003284639462022D0473078002800F0E1
+:1076A000B380013EC2B2284639460123D047B078A4
+:1076B00001360028F6D1A7E0102000294FF0000283
+:1076C0008DF80B203FD0A446012600BFB1FBF0F39C
+:1076D000372703FB10120A2A38BF30273A44814269
+:1076E00009F8062043D3B3FBF0F1372401FB103730
+:1076F00009EB06020A2F38BF302427448342577013
+:1077000032D3B1FBF0F3372403FB10170A2F38BF35
+:10771000302427448142977028D3B3FBF0F13724FB
+:1077200001FB103704360A2F38BF30242744834228
+:10773000D770CBD2013E1AE0082000294FF000029A
+:107740008DF80B20BFD130208DF80C0001260FE002
+:1077500030208DF80C00012625E000BF30208DF888
+:107760000C00012639E000BF013600E00236644615
+:1077700001AFABEB0603284639462022D04719F863
+:107780000600002840D000990E4400BFC2B228462F
+:1077900039460123D04716F801090028F6D133E015
+:1077A000013600E0023601AFABEB0603284639464E
+:1077B0002022D04719F8060030B300990E4400BFCC
+:1077C000C2B2284639460123D04716F801090028DD
+:1077D000F6D119E0013600E0023601AFABEB06034B
+:1077E000284639462022D04719F8060060B1009992
+:1077F0000E4400BFC2B2284639460123D04716F8CE
+:1078000001090028F6D100BF08F102006BE500BFB6
+:1078100001980BB0BDE8F08F70B540F260554FF69F
+:107820002450C4F20005CFF6FF70285800F007007E
+:1078300003281FD8DFE800F002203C584FF6205004
+:10784000CFF6FF70285800F00700022864D0012806
+:1078500000F06C80002840F0778043F21000C4F202
+:107860000100006841F600314004C0F2B70101EAAE
+:10787000E07073E1002071E14FF63050CFF6FF70F9
+:10788000285800F00700032800F2E280DFE800F04B
+:10789000029A6AA843F21000C4F20100006841F69F
+:1078A00000314004C0F2B70101EAE070D1E000BF4E
+:1078B0004FF63450CFF6FF70285800F00700032829
+:1078C00000F2A480DFE800F00258667043F2100076
+:1078D000C4F20100006841F600314004C0F2B70173
+:1078E00001EAE07093E000BFB820C4F20200016832
+:1078F000490607D450F8201CC90703D14FF40040B3
+:107900002CE100BF0168090604D450F8200CC00324
+:1079100080B223E1002021E1D5F8B80444F24021EF
+:107920004006C0F20F0101EAE07017E143F21000D7
+:10793000C4F20100006942F20041C001C0F2F4014A
+:1079400001EAE0700AE100BF43F21000C4F2010056
+:1079500000684DF600014000C0F2B85101EAE07045
+:10796000FCE000BFD5F8B80444F240214006C0F264
+:107970000F0101EAE0706CE043F21000C4F2010074
+:10798000006942F20041C001C0F2F40101EAE07076
+:107990003DE000BFD5F8B80444F240214006C0F2F3
+:1079A0000F0101EAE07032E0B820C4F20200016881
+:1079B000490623D450F8201CC9071FD14FF40040BA
+:1079C00025E000BF43F21000C4F20100006942F25A
+:1079D0000041C001C0F2F40101EAE07039E000BFEB
+:1079E000B820C4F202000168490629D450F8201CCE
+:1079F000C90725D14FF400402BE000BF01680906FC
+:107A000004D450F8200CC00380B200E000202968A4
+:107A1000090400F1A3802968890240F19F80B82100
+:107A2000C4F202010968490500F198802968090338
+:107A30002AD4A968C9B2002908BF012125E000BFE6
+:107A40000168090604D450F8200CC00380B200E09D
+:107A50000020296A090400F18180296A89027DD504
+:107A6000B821C4F202010A6892055CBF09685FEAA6
+:107A7000012173D4296A090326D4A96AC9B200294D
+:107A800008BF012121E000BF01212A68D2020DD4E4
+:107A90002B682E693E2406F01F02DB0358BF04EA60
+:107AA0004602002A08BF022201E000BF0122EB6863
+:107AB000B0FBF1F09BB2002B08BF0123A3FB000138
+:107AC0000023F8F72DFD49E001212A6AD2020DD4E6
+:107AD0002A6AEB6A3E2603F01F04D20358BF06EA67
+:107AE0004304002C08BF022401E000BF0124B0FBC6
+:107AF000F1F6696B686BC90016D4296B2A6B490EC5
+:107B000022F07E4200EE102A9FED1C1AB8EE400AC9
+:107B100060F3C71120EE010A01EE101AB8EE411A07
+:107B200030EE010A06E000BFC0F38F2000EE100A1D
+:107B3000B8EE400AB5EE400AB7EE001AF1EE10FAC0
+:107B400001FE000A10EE100AF8F74FFDA0FB060236
+:107B500001FB062122460023F8F7E2FC4FF62061E4
+:107B6000CFF6FF716958012252FA81F1B0FBF1F0B2
+:107B700040F22801C2F20001086070BD000000332D
+:107B80004EF68850CEF20000016840F6034241F400
+:107B900070010160016841F00F010160416811430B
+:107BA000416040F20001C0F2000140F8801C40F248
+:107BB0002020C4F200000021C0F8E8107821016004
+:107BC000AFF30080704710B5930712D400F128037B
+:107BD000D00715D153E8000F084203D1BFF32F8F10
+:107BE000002005E020EA010243E8002404B1F1E7A7
+:107BF00010BD806AD20700EA010312D1A3B912E0D6
+:107C000053E8000F00EA01028A4203D0BFF32F8F2E
+:107C1000002005E020EA010243E8002404B1EFE778
+:107C200010BD8B4200D0002010BD0000B0B5104A3E
+:107C30000023443215462C683CB12569A94209D37A
+:107C4000491B04F10C052346F5E700240161C0E956
+:107C5000023406E001612569C0E90234691AA060B6
+:107C60002161002B18BF03F10C021060B0BD00BFF2
+:107C700030000020B0B540F22C25C2F20005297872
+:107C8000002918BFB0BD0446C00715D047F6707173
+:107C9000C2F2000100204FF4007204F0E7FB01285B
+:107CA0000ADB01464FF6EC40C0F20000426947F69D
+:107CB0007070C2F200009047A00701D4B0BD00BFB1
+:107CC000E8684FF4007100F500724FF6EC40C0F226
+:107CD0000000836947F67050C2F20000EA60BDE818
+:107CE000B0401847B0B540F22C02C2F20002127840
+:107CF0000C46022A20D10178D0F801504FF6EC4012
+:107D0000C0F20000826A41F0010029469047B8B1F4
+:107D100000F10B0240F2CC200021C2F20000032A45
+:107D2000017017D80020DFE802F003191D1F00BF03
+:107D30000421284618E000BF0020072114E000BFFE
+:107D400040F2CC20C2F2000001210170002128463F
+:107D50000AE000BF0020072106E000BF02212846FC
+:107D600002E000BF012128462170010AA170010C28
+:107D70006070E170010E4FF005102171B0BD000080
+:107D80002DE9F04381B040F22C02C2F200021278D9
+:107D90008946022A06D10578A80705D4E8071BD131
+:107DA00000263DE0FF2695E040F2CC28C2F2000814
+:107DB00098F803000026012832D14FF6EC40C0F2BB
+:107DC0000000876A16200021B84719200021B84713
+:107DD00088F8036024E000BF40F2CC27C2F200071D
+:107DE000387801281BD1F8780026C8B9BE60FE603B
+:107DF000B8684FF6EC4244F26441C0F200026FF3FF
+:107E00009F20C2F2000193690844966A2021984796
+:107E1000162001214FF00108B04700287AD0FF2634
+:107E200068071ED54FF6EC48C0F20008D8F82820A5
+:107E3000192000210027904740F2CC20C2F2000018
+:107E40008760C760C17801290BD1806844F2644122
+:107E50006FF39F20D8F81820C2F2000108442021B7
+:107E60009047A8061CD4E80632D540F2CC27C2F2CF
+:107E700000073878012811D1387948BB4FF6EC411A
+:107E8000C0F2000100208A6AB87038617861B86178
+:107E9000152001214FF001089047B8B1FF2617E0E7
+:107EA00040F2CC27C2F200073879012810D14FF6F2
+:107EB000EC40C0F20000846A182000214FF0000856
+:107EC000A04715200021A04787F8028087F804808A
+:107ED000680607D44FF0011089F8006001B0BDE8D2
+:107EE000F08300BF4FF6EC40C0F20000826A182019
+:107EF00000210024904740F2CC20C2F200008470A0
+:107F00000461446184614FF0011089F8006001B0A0
+:107F1000BDE8F08387F8038042E700002DE9F041D7
+:107F200040F22C01C2F200010978044602294FF008
+:107F300000083BD140F2CC27C2F200073878012874
+:107F400038D14FF6EC45C0F20005B868F9686A6AA6
+:107F5000461A90470644B6F5707F07D9012078701D
+:107F6000B8684FF47076A0F57070F8603869796978
+:107F70002A6A451A90477A78BB78F978002B18BF9F
+:107F80002D1A002A1EBF002078700231787900284F
+:107F90001EBF002078710431B87900281EBF002070
+:107FA000B8710831387960F3041106E00026002525
+:107FB000002102E0002600250021300AA070280AD6
+:107FC000A071280C2170E071290E09206670A4F8B8
+:107FD000038065712172BDE8F08100002DE9F04F4A
+:107FE00081B040F22C02C2F2000212788946022AC5
+:107FF0003AD140F2CC2AC2F2000A80460588DAF86B
+:108000000800DAF80C104FF6EC4BC0F2000B461AE1
+:10801000DBF82400B5F5FD7F28BF4FF4FD758047E0
+:108020003044B0F5707F0AD901208AF80100DAF8EF
+:108030000800A0F57070CAF80C004FF47070DAF800
+:108040000C10854288BF05466FF39F214819B0F593
+:10805000806F09F105070BD844F26440C2F20000BA
+:10806000014438462A4611E000260025002098E009
+:1080700044F26444C1F58066C2F2000421443846EB
+:108080003246F8F77EFAB819AA1B2146F8F779FAB2
+:10809000DAF80C002844CAF80C00B8F80270DBF8D3
+:1080A0002000DAF81060DAF8144008F10408B7F597
+:1080B000FD7F88BF40F2FB1780479AF802B0A11BF2
+:1080C00001F58066BBF1000F18BF0644DAF8100016
+:1080D000B74298BF3E466FF39F203118B1F5806FCD
+:1080E00008D844F66401C2F2000108444146324611
+:1080F0000FE000BF44F66404C0F58067C2F20004DC
+:10810000204441463A46F8F73CFA08EB0701F21BD7
+:108110002046F8F736FADAF81000BBF1000F3044C9
+:10812000CAF810001FD1DAF81000DAF81410411A5A
+:10813000DAF8140017D06FF39F204218B2F5806F61
+:1081400088BFC0F5806101228AF802204FF6EC4218
+:10815000C0F2000244F664035269C2F200031844FC
+:10816000CAF8181090479AF801109AF803000029ED
+:108170001EBF00218AF8011002309AF8051000296C
+:108180001EBF00218AF8051004309AF80610002955
+:108190001EBF00218AF8061008309AF8041061F317
+:1081A000041089F80000300A89F80200301D691DAA
+:1081B00041EA0040290A89F8016089F8035089F8EA
+:1081C000041001B0BDE8F08F2DE9F04700780C46AF
+:1081D000022817D0012841D0002840F0028140F247
+:1081E0002C06C2F20006307802284BD0012800F09D
+:1081F000818000280CBF0025FF254FF0011025705D
+:10820000BDE8F08740F22C05C2F20005287802286C
+:1082100000F0A180012877D0002840F0E28040F2F1
+:10822000CC204FF6EC46C2F200000021C0F200065E
+:108230000170017141804170417181710161416141
+:108240008160C160B268816148F2A570C0F200002F
+:108250009047002840F0C58076E000BF40F22C0532
+:10826000C2F20005287802287CD0012873D00028AB
+:1082700040F0B7800120012602F0CCFA002840F03F
+:10828000B08067E040F2CC2AC2F2000A9AF80300FC
+:108290004FF6EC480128C0F200080BD1D8F828505E
+:1082A000162000214FF00009A84719200021A847F7
+:1082B0008AF803909AF8040001280DD1D8F82850C4
+:1082C000182000214FF00009A84715200021A847D9
+:1082D0008AF802908AF80490D8E9037100250020FA
+:1082E0008AF800508847B84735704FF00110257064
+:1082F000BDE8F0870020002502F08CFA35704FF0C1
+:1083000001102570BDE8F0870020002702F082FAF6
+:1083100040F2CC204FF6EC46C2F20000C0F200065C
+:108320002F70077007714780477047718771076129
+:1083300047618760C760B168876148F2A570C0F285
+:108340000000884700284CD1316902200226884766
+:10835000002846D12E7000254FF001102570BDE891
+:10836000F08700BF40F2CC29C2F2000999F803005F
+:1083700001280ED14FF6EC40C0F20000876A1620AB
+:1083800000214FF00008B84719200021B84789F8AC
+:10839000038099F80400012810D14FF6EC40C0F298
+:1083A0000000876A182000214FF00008B847152008
+:1083B0000021B84789F8028089F804804FF6EC4024
+:1083C000C0F20000D0E903610027002089F80070A6
+:1083D0008847B04701202F70012602F01BFA0028C1
+:1083E000B8D0FF254FF001102570BDE8F0870000E0
+:1083F00040F23012C2F2000200F05EBAB0B582B0B4
+:1084000040F23015C2F200052868A968006801AC86
+:10841000224600F007FEA968062808BF01F10C04F7
+:10842000206802B0B0BD000080B540F23010C2F24A
+:1084300000000168806809682023896890F81CE0C2
+:1084400090F81DC0102000EA911003EA1123402289
+:1084500002EA112118440844BEF1010F08BF01309F
+:10846000BCF1030F08BF023080BD0000B0B582B080
+:1084700040F23015C2F200052868A968006801AC16
+:10848000224600F007FEA968062808BF01F1100483
+:10849000206802B0B0BD000040F23011C2F200010D
+:1084A0000A7ED20702D14861012008760020704779
+:1084B00040F23011C2F2000100F09ABA80B582B0E9
+:1084C00040F23012C2F200021368D2F808C01B68F2
+:1084D000CDE900016A461846614600F013FE58B126
+:1084E00041F2456188420BD0042814BF4FF0FF30A1
+:1084F0006FF0040002B080BD002002B080BD00BF5C
+:108500006FF0010002B080BD80B582B040F2301241
+:10851000C2F200021368D2F808C01B68CDE900015E
+:108520006A461846614600F097FE58B141F2446130
+:1085300088420BD0042814BF4FF0FF306FF00400C6
+:1085400002B080BD002002B080BD00BF6FF001000E
+:1085500002B080BD4FF0FF307047000040F2301293
+:108560000021C2F200020020117670470020F8F7C7
+:1085700029BB000040F24C12C2F2000200F09CB98C
+:10858000B0B582B040F24C15C2F200052868A96867
+:10859000006801AC224600F045FDA968062808BF26
+:1085A00001F10C04206802B0B0BD000080B540F2BB
+:1085B0004C10C2F2000001688068096820238968B5
+:1085C00090F81CE090F81DC0102000EA911003EA1A
+:1085D0001123402202EA112118440844BEF1010F80
+:1085E00008BF0130BCF1030F08BF023080BD00009E
+:1085F000B0B582B040F24C15C2F200052868A968F7
+:10860000006801AC224600F045FDA968062808BFB5
+:1086100001F11004206802B0B0BD000040F24C111E
+:10862000C2F200010A7ED20702D148610120087619
+:108630000020704740F24C11C2F2000100F0D8B99E
+:1086400080B582B040F24C12C2F200021368D2F838
+:1086500008C01B68CDE900016A461846614600F073
+:1086600051FD58B141F2456188420BD0042814BF36
+:108670004FF0FF306FF0040002B080BD002002B068
+:1086800080BD00BF6FF0010002B080BD80B582B038
+:1086900040F24C12C2F200021368D2F808C01B6804
+:1086A000CDE900016A461846614600F0D5FD58B193
+:1086B00041F2446188420BD0042814BF4FF0FF30D0
+:1086C0006FF0040002B080BD002002B080BD00BF8A
+:1086D0006FF0010002B080BD4FF0FF307047000026
+:1086E00040F24C120021C2F20002002011767047C5
+:1086F0000320F8F767BA0000F0B581B040F2A82572
+:1087000004468007C2F2000539D541F20400CEF2DA
+:108710000000006828626E69E8682969084400F072
+:108720003F01871B01F5FE529742E860E86103D9DB
+:108730000320687010E000BF4FF62452C0F2000220
+:1087400040F2E4336FF35F309269C2F20003C1F18B
+:10875000400118442961904701202871A878022817
+:108760000DD16FF35F26C6F50070874207D340F244
+:108770000420C2F200000068012103F001F8A00605
+:1087800005D5A8792844C17941F08001C17114F45C
+:10879000607F05D0A8792844C17941F04001C171BA
+:1087A00001B0F0BD10B50446C00724D040F2CC2083
+:1087B000C2F2000041698269114441610021817067
+:1087C00001694269891A426915D06FF39F225318D3
+:1087D000B3F5806F88BFC2F580610123816183702A
+:1087E0004FF6EC40C0F20000436944F66400C2F268
+:1087F000000010449847A00714D4A0062AD4E0052E
+:1088000005D540F2CC20C2F2000001214171A00543
+:1088100058BF10BD40F2CC20C2F20000012181718E
+:1088200010BD00BF40F2CC20C2F2000081682031B0
+:1088300081604FF6EC418068C0F200018A6944F221
+:1088400064416FF39F20C2F2000108442021904749
+:10885000A006D4D540F2CC20C2F200000121417024
+:10886000E005D4D5CDE70000D0B18168090709D46F
+:10887000816809075CBF81685FEA017102D4816881
+:108880000907F2D50F21C0F8141ED0F8001E21F4FC
+:108890004051C0F8001E016821F0010101607047DD
+:1088A00040F2EC0040F2E001C0F20100C0F2010130
+:1088B0004FF48C7202F004F82DE9F04186B01446B2
+:1088C000127E0E4691075EBF4FF0FF3006B0BDE846
+:1088D000F081054610F4702F04D06FF0030006B04D
+:1088E000BDE8F081EFB2192F14D0182F26D12068DF
+:1088F000A1680068D0F8002E22F48052C0F8002E43
+:108900004869FAF7F3FAA1680020087706B0BDE8D5
+:10891000F08100BF2068A1680068D0F8002E22F422
+:108920000052C0F8002E8869FAF7E0FAA068022128
+:108930004177002006B0BDE8F08100BFD4F8008088
+:1089400001A800F0E5F8012F04D0162F18BF152F4D
+:10895000EFD0C2E715F4405001960FD0B0F5005F9C
+:108960000AD0B0F5805F1EBF6FF0090006B0BDE809
+:10897000F081022003E000BF032000E0002015F496
+:1089800040418DF8080005D0B1F5804F2AD1012073
+:108990008DF80900207E400707D5D8F80000FFF7C2
+:1089A00063FF207E00F0FB00207640F20110ADF85E
+:1089B0000C00D8E900508047024601A9284600F083
+:1089C000EDF841F25161884202BF6FF0070006B036
+:1089D000BDE8F081207E40F004002076002006B043
+:1089E000BDE8F0816FF00A0006B0BDE8F08100003C
+:1089F000B0B588B002280C4620D0002868D1207E6F
+:108A0000800718D520680068FFF72EFF6068C268ED
+:108A1000172A65D2836801219D6A01FA02F22A436E
+:108A20009A624268172A5BD2006801FA02F2836AEE
+:108A30001A4382622176002008B0B0BD207E002853
+:108A40004AD08007F7D403A800F062F840F2011082
+:108A50006268ADF814005368172B4DD215684FF0BB
+:108A6000010C9168286A0CFA03F318432862D36852
+:108A7000172B41D2086A0CFA03F318430862E06826
+:108A8000D268FAF7AFFB62682069D2E90012FAF700
+:108A9000A9FB2068D0E900508047024603A9284678
+:108AA00000F07CF82068D4E90215D4E904230068BA
+:108AB000009245F23122C0F20002019500F006FA60
+:108AC000207E40F006002076002008B0B0BD00BF38
+:108AD0006FF0030008B0B0BD4FF0FF3008B0B0BD7C
+:108AE00040F2F90040F23711C0F20100C0F201017A
+:108AF0004FF4D67201F0E4FE40F2F90040F2371173
+:108B0000C0F20100C0F201014FF4D07201F0D8FEB2
+:108B100090B100214FF4E132C0E900210122C0E907
+:108B20000211016181808271C0F80710C0F80B103A
+:108B3000A0F80F10704700BF40F2E00103A0C0F2A0
+:108B4000010140F2351201F0BBFE00BF4E554C4C06
+:108B500020213D20636F6E6669670000A0F18040B0
+:108B6000A0F506204FEA303012280CD81F21C0F2A1
+:108B70000701C140C9071FBF4FF67C41C0F2000189
+:108B800051F82000704740F2B60040F2E001C0F218
+:108B90000100C0F20101482201F092FEB0B50028A8
+:108BA00000F094800D46002900F09080002A00F02B
+:108BB0008D8001210446FBF75FF808B1B0BD00BF0E
+:108BC000687AD0B1D4F8000E40F00110C4F8000E5D
+:108BD000D4F8080E20F47060C4F8080E687BD4F84E
+:108BE000081E00F00F0041EA0020C4F8080ED4F877
+:108BF000080E40F00100C4F8080E287AD0B1D4F86D
+:108C0000000E40F00210C4F8000ED4F8080E20F454
+:108C10007020C4F8080EA87BD4F8081E00F00F00DE
+:108C200041EA0040C4F8080ED4F8080E40F00200F3
+:108C3000C4F8080E6979402295F804C0AB7902EABD
+:108C4000811103F0030E6CF30511E87941EA8E01FE
+:108C5000EB7B41EAC03003F0020240EA822003F0DD
+:108C60000103297C40EA833001F00101EA7A40EAFD
+:108C70000130297B40EAC21040EA412040F0010067
+:108C80002060296872B14FF41650B0FBF1F000FB80
+:108C900001F1B1F5165F1CBF41F25160B0BD206219
+:108CA00006E000BF204600F039F8002818BFB0BD2C
+:108CB000A97A606821B140F4807060600020B0BD86
+:108CC00020F4807060600020B0BD00BF40F2E00181
+:108CD00002A0C0F20101CB2201F0F2FD2128284EB2
+:108CE000554C4C203D3D206261736529207C7C20E1
+:108CF000284E554C4C203D3D20636F6E66696729B8
+:108D0000207C7C20283055203D3D20737263436CCD
+:108D10006F636B5F487A2929000000002DE9F0415C
+:108D20000E460446FAF73CFF0546F7F763FF46F6A2
+:108D30000041C0F2DC21884240F0B1800020CCF23A
+:108D4000C0602D2132460023F7F7EAFBB0F5A04FB3
+:108D5000C0F0A5800646000520D0B6F5883F0DD3AB
+:108D6000370C3002310E3A010023F7F7D9FB000B24
+:108D700040EA01524FF0100878E000BF300B40EAA3
+:108D800001583002310E5FFA88F20023F7F7C8FB72
+:108D9000000B40EA0152012768E000BF4FF6F07077
+:108DA000064243D048F68900C8F68800A6FB0002B8
+:108DB000D00802053ED042F293427008C9F249221F
+:108DC000A0FB02029008020538D04EF64F40C4F6D0
+:108DD000C460A6FB00029008020533D04AF6AB201F
+:108DE000CAF6AA20A6FB0002D00802052ED048F63B
+:108DF000A330CBF62E20A6FB0002D008020529D016
+:108E00004CF6CD40CCF6CC40A6FB0002D0080205C3
+:108E100024D048F63960C3F6E300A6FB00025008F0
+:108E200002059AD14FF009081AE000BF30094FF04F
+:108E3000100815E04FF00F0812E000BF4FF00E08C9
+:108E40000EE000BF4FF00D080AE000BF4FF00C0825
+:108E500006E000BF4FF00B0802E000BF4FF00A0829
+:108E60000022B2EB103F3FF478AF070B5FFA88F0B7
+:108E700007FB00F0D1B200FB01F24FF6F073C0F235
+:108E8000FF0303EA021202EB0030321A38BF821BE2
+:108E9000642002FB00F0B0FBF6F0032804D941F295
+:108EA0005160BDE8F08100BF05F10800C0B20022AA
+:108EB0000025F7F715FF4FF0FF3050FA88F0A06259
+:108EC000781E20622846BDE8F08100002DE9F04FB1
+:108ED00081B0002854D00F46002959D0DDE90A9806
+:108EE0009A4693460446FFF739FE47F6B801054611
+:108EF000C2F20001002001EBC506C7E90000C7E986
+:108F00000200C7E90400C7E9060041F83540022124
+:108F10007760797748F6CD713877C0F20001204646
+:108F20003A46C7E901BAC7E90598FAF759FF1CA004
+:108F30004057012200F01F0102FA01F14EF2001227
+:108F40004009CEF2000242F82010B9F1000F07D01C
+:108F500049F25131C0F2000148463246FAF726FB89
+:108F6000B8F1000F07D049F2FD11C0F200014046F0
+:108F70003246FAF71BFB002001B0BDE8F08F00BFBE
+:108F800040F26F710DA0C0F20101812201F098FC46
+:108F900040F26F7104A0C0F20101872201F090FC41
+:108FA0000E0F10111213141521284E554C4C203D54
+:108FB0003D2068616E646C652900000021284E55D3
+:108FC0004C4C203D3D2062617365290070B169B150
+:108FD00000220A7708220261D1F804C0BCF1000F18
+:108FE00008BF70478B6841F24662604740F26F717C
+:108FF00003A0C0F2010140F27B1201F061FC00BF4E
+:10900000284E554C4C20213D206261736529202655
+:109010002620284E554C4C20213D2068616E646C02
+:1090200065290000B0B589B114468A69D2B12CB364
+:10903000487F022804BF0620B0BDCD689068117B30
+:10904000FAF726F9281A20600020B0BD40F25A50E5
+:1090500040F26F71C0F20100C0F201014FF4A7723B
+:1090600001F02EFC40F2B37040F26F71C0F20100CB
+:10907000C0F2010140F24F1201F022FC40F2EB700D
+:1090800040F26F71C0F20100C0F201014FF4A8720A
+:1090900001F016FCB0B589B114464A69D2B12CB3BF
+:1090A000087F002804BF0620B0BD0D699068117BC1
+:1090B000FAF7EEF8281A20600020B0BD40F25A50AE
+:1090C00040F26F71C0F20100C0F201014FF4B572BD
+:1090D00001F0F6FB40F2CF7040F26F71C0F2010078
+:1090E000C0F2010140F26B1201F0EAFB40F2EB70BA
+:1090F00040F26F71C0F20100C0F201014FF4B6728C
+:1091000001F0DEFB70B58AB091B30C468969D9B322
+:10911000002A41D0116800294AD05368002B53D04F
+:10912000617F032904D141F2456528460AB070BD2C
+:1091300003216177E360D0F8001E03AE41F40051D3
+:10914000C0F8001E126800F5636101200025CDE91A
+:109150000030304601230295FAF770F9A0693146D4
+:10916000FAF76AFAA069FAF737FA28460AB070BD2A
+:1091700040F2307040F26F71C0F20100C0F20101A4
+:10918000F72201F09DFB00BF40F26F7114A0C0F206
+:109190000101F82201F094FB40F24D7040F26F7132
+:1091A000C0F20100C0F20101F92201F089FB00BF09
+:1091B00040F21D7040F26F71C0F20100C0F2010177
+:1091C000FA2201F07DFB00BF40F25A7040F26F714D
+:1091D000C0F20100C0F20101FB2201F071FB00BFEF
+:1091E00068616E646C652D3E7278446D6148616E95
+:1091F000646C6520213D204E554C4C00A0B1F9B166
+:10920000D1E90001D0F8002E22F40052C0F8002E5F
+:1092100002224A77D1F804C0BCF1000F08BF7047A2
+:109220008B6841F24762604740F2307040F26F71E4
+:10923000C0F20100C0F201015D2201F041FB00BF5C
+:1092400040F23F7040F26F71C0F20100C0F20101C4
+:109250005E2201F035FB000070B58AB091B30C4678
+:109260004969D9B3002A41D0116800294AD053680E
+:10927000002B53D0217F012904D141F244652846B7
+:109280000AB070BD012121772361D0F8001E03AE22
+:1092900041F48051C0F8001E116800F5626202209E
+:1092A0000025CDE90030304601230295FAF7C6F8D3
+:1092B00060693146FAF7C0F96069FAF78DF9284616
+:1092C0000AB070BD40F2307040F26F71C0F2010020
+:1092D000C0F20101C32201F0F3FA00BF40F26F7146
+:1092E00014A0C0F20101C42201F0EAFA40F24D706C
+:1092F00040F26F71C0F20100C0F20101C52201F01D
+:10930000DFFA00BF40F21D7040F26F71C0F2010041
+:10931000C0F20101C62201F0D3FA00BF40F25A7038
+:1093200040F26F71C0F20100C0F20101C72201F0EA
+:10933000C7FA00BF68616E646C652D3E7478446D39
+:109340006148616E646C6520213D204E554C4C0097
+:1093500050B1A9B10868D0F8001E21F48051C0F8BE
+:10936000001E0821C160704740F2307040F26F71FA
+:10937000C0F20100C0F201014F2201F0A1FA00BFCA
+:1093800040F23F7040F26F71C0F20100C0F2010183
+:10939000502201F095FA000070B5002800F0BE8060
+:1093A000002900F0BB80D0F8003EDB0704BF04209A
+:1093B00070BD002A00F0A58000F6046312F00305DA
+:1093C000A2F101062ED01C68A40609D41C68A406CC
+:1093D0005CBF1C685FEA846402D41C68A406F2D5F2
+:1093E0008C461CF8014B012DB646C0F8204E1BD010
+:1093F0001C68A40609D41C68A4065CBF1C685FEA4C
+:10940000846402D41C68A406F2D54C78022DC0F8FE
+:10941000204E0DD101F1020CA2F1020E032E70D3E9
+:1094200028E000BF96468C46032E6AD322E000BF98
+:109430001D68AD0609D41D68AD065CBF1D685FEAF6
+:10944000856502D41D68AD06F2D58D7801F1030C57
+:10945000C0F8205EA2F1030E032E52D30AE000BF33
+:109460009CF80310BEF1040E0CF1040CC0F8201E91
+:1094700047D000BF196889065FBF19685FEA81613C
+:1094800019685FEA816102D419688906F2D59CF8EF
+:109490000010C0F8201E1968890609D419688906C9
+:1094A0005CBF19685FEA816102D419688906F2D548
+:1094B0009CF80110C0F8201E1968890609D41968A3
+:1094C00089065CBF19685FEA816102D41968890660
+:1094D000F2D59CF80210C0F8201E19688906BFD486
+:1094E000196889065CBF19685FEA8161B8D4196898
+:1094F0008906F2D5B4E700BF8168090744BF0020A0
+:1095000070BD8168090706D4816809075CBF81685E
+:109510005FEA0171F0D5002070BD00BF40F29200FB
+:1095200040F2E001C0F20100C0F2010140F27B22F2
+:1095300001F0C6F9012070470020704740F2042076
+:10954000C0F20220704700006FF003007047000077
+:109550002DE9F04F83B044F20007C4F20907386ADE
+:10956000796A3D6801EA000940F24828B9F1FF3FF5
+:10957000C2F20008C7F8209032DC680120D543F61B
+:109580000040C4F210006021F7F714F80A20C8F870
+:109590000C004FF600013868C0F2FF3101F5086198
+:1095A00008433860D8F8041004208847386800F46D
+:1095B0004000B0F5000F03D1D8F804100820884708
+:1095C000A8030DD5D8F80C00D8F8041020F0080036
+:1095D000C8F80C00386840F4003038601020884724
+:1095E0005FEA095000F0B2814FF64460C0F200001B
+:1095F00000F1080605F480744FF0000A01254FF0D1
+:10960000000BCDE9014922E0401AA04288BF204664
+:10961000E8604FF600023968C0F2FF3202EAC0206B
+:1096200001F0F841B288084440EA9210012500F1A7
+:10963000004038604F46DDE9014900BFBBF1090F2A
+:109640000BF1020B06F120060AF1010A68D205FAB5
+:109650000BF010EA090FF1D03862ACB3BBF1000F88
+:1096600032D143F60045C4F2100595E80F0021F011
+:10967000005120F0005022F0005223F000530FC59B
+:10968000386840F2000240F480703860C4F2100282
+:109690001068526881B2C8E90402B1F5A06F08D120
+:1096A0003968C0F3074021F07F01084340F0800093
+:1096B0003860012588F80050D8F80820002ABDD06D
+:1096C000002001219047B9E7B94656E90271356893
+:1096D0003868C0F3CE22D5E903309C1A2246F6F74B
+:1096E00050FFD5E901022969002C2144296102EBD0
+:1096F0000401A96018BF88420CD14F46DDE9014939
+:10970000D8F808200125002A98D05FFA8AF00221B3
+:10971000904793E72A6894423FF476AFEDE700BFA5
+:1097200001255FEA8970C8F2000536D5022038624B
+:1097300044F66440C2F20000D0E90831D0E90626C0
+:10974000194433449A424162C36107D1D8F80820D2
+:109750001AB38020042190471FE000BFD0F814C046
+:10976000D61A664588BF6646066240F20000C4F21B
+:10977000100040303246F6F704FF43F60042C4F2D0
+:1097800010024FF600019068C0F2FF3101EAC621D5
+:1097900000F0F8400844284390605FEA097039D52A
+:1097A0000820386244F66440C2F20000D0E9123169
+:1097B000D0E91026194433449A42C164436407D166
+:1097C000D8F8082032B381200421904722E000BF5E
+:1097D000D0F83CC0D61A664588BF6646866440F21B
+:1097E0000000C4F2100000F590603246F6F7C9FEA2
+:1097F00043F60042C4F210024FF600019069C0F235
+:10980000FF3101EAC62100F0F840084405F11101DA
+:10981000084390615FEA896038D52020386244F6B9
+:109820006440C2F20000D0E91C31D0E91A26194484
+:1098300033449A424167C36606D1D8F808202AB358
+:1098400082200421904721E0D0F864C0D61A6645F2
+:1098500088BF6646066740F20000C4F2100000F5BB
+:1098600048603246F6F78DFE43F60042C4F210021D
+:109870004FF60001906AC0F2FF3101EAC62100F004
+:10988000F840084405F13101084390625FEA09603D
+:1098900017D58020386244F66440C2F20000D0E957
+:1098A0002631D0E92426194433449A42C0F89C104A
+:1098B000C0F8943024D1D8F8082012B183200421B4
+:1098C00090475FEA895041D54FF40070386244F602
+:1098D0006440C2F20000D0E93031D0E92E271944AB
+:1098E0003B449A42C0F8C410C0F8BC3032D1D8F81A
+:1098F00008205AB38420042103B0BDE8F04F10477C
+:10990000D0F88CC0D61A664588BF6646C0F8986005
+:1099100040F20000C4F2100000F5A4503246F6F701
+:1099200030FE43F60042C4F210024FF60001906B85
+:10993000C0F2FF3101EAC62100F0F840084405F109
+:109940005101084390635FEA8950BDD403B0BDE87C
+:10995000F08F00BFD0F8B470D41ABC4288BF3C4628
+:10996000C0F8C04040F20000C4F2100000F5E4501E
+:109970002246F6F706FE43F60042C4F210024FF606
+:109980000001906CC0F2FF3101EAC42100F0F84000
+:10999000084405F171010843906403B0BDE8F08FFD
+:1099A0000146002005F05ABE0A460146002005F097
+:1099B0005DBE000010B540F22C20C2F2000000781D
+:1099C000E0B94FF6EC44C0F20004E06A8047C007FB
+:1099D00018BF10BD47F67071C2F2000100204FF4AD
+:1099E000007202F043FD012808DB0146626947F678
+:1099F0007070C2F20000BDE81040104710BD0000BA
+:109A00007047000000207047014640F22C20C2F24F
+:109A10000000D0F8172043690120C1F803200B6033
+:109A20007047000010B54FF6EC41C0F200018A68A3
+:109A300047F67540C0F200000C6990470220A0472D
+:109A400040F2E1704FF6C852C0F20000C0F20002CE
+:109A5000002101F0D3FE40F22C21C2F20001486047
+:109A600010BD000010B540F22C20C2F200000078BA
+:109A7000002818BF10BD4FF6EC40C0F20000846A09
+:109A800018200021A047192000212246BDE81040DF
+:109A9000104700000020704701207047B0B540F229
+:109AA0002C25C2F20005A968044621B9002001F066
+:109AB0004BF90146A86008464FF0FF3101F032F93A
+:109AC000287801280CD1D4F803002168C5F81700C4
+:109AD00069610124A86801F049F92046B0BD00BFC2
+:109AE0002046F6F7BBFE0446A86801F03FF9204681
+:109AF000B0BD0000B0B540F22C24C2F20004606892
+:109B000001F08EFE002804BF002060604FF6EC409C
+:109B1000C0F20000826AD0E9035419200021904766
+:109B20000020A0472846BDE8B0400047002070470D
+:109B300000207047002070470020704700207047C9
+:109B400000207047002070470020704770470000D9
+:109B50007047000070470000704700000020704709
+:109B60000020704700207047002070470020704799
+:109B700000207047002070470020704770470000A9
+:109B8000704700007047000010B500281CBF00207F
+:109B900010BD002003F0BEFF0446002002F0E4FFE9
+:109BA000002818BF0446204610BD000010B500284C
+:109BB0001CBF002010BD002003F0FEFF0446002063
+:109BC00003F006FA002818BF0446204610BD000026
+:109BD0000020704700207047704700000020704749
+:109BE00070B540F2082504468007C2F200053AD558
+:109BF0000020012104F0ECFF42F26446C2F20006AC
+:109C0000F8B168884002305C072807D140F2602034
+:109C1000C2F200000121017013E000BF6888012139
+:109C2000013068806888082804BF00206880E888C0
+:109C30000130E88040F20020C2F20000006801F02C
+:109C40009FFDE8882989401A80B2082802D10120A6
+:109C5000287008E06888012106EB402200204FF4BC
+:109C6000007304F0A1FF600758BF70BDE889298A1E
+:109C7000884203D10120687070BD00BFA889A989FE
+:109C800043F2644205EB4101C2F2000202EB4022C2
+:109C90004B8A00208121002404F0A8FFA88901300C
+:109CA000A881A889082808BFAC81288A01302882A9
+:109CB00070BD0000400748BFFDF78ABA704700003A
+:109CC0007047000070470000012818BF704780B53A
+:109CD00040F2082E4FF0000C42F26442C2F2000E35
+:109CE0000020C2F2000201214FF400738EF800C080
+:109CF000BDE8804004F058BF7047000040F20820E3
+:109D0000C2F200000021012241808180C1800181D6
+:109D1000027041818181C1810182427070470000DF
+:109D20007047000070470000B0B540F2BC35C2F289
+:109D300000052968044689B900F040FF44F6D35174
+:109D40008002C1F26201A0FB01014FF600408909C7
+:109D5000CFF6FF70B0FBF1F0C5E90010601C0228DF
+:109D60000CD3B1F5806F09D06868A04231BF6FF0A5
+:109D7000010401FB04F000F2FF30840A2046BDE834
+:109D8000B04000F0F1BE00007047000070470000D6
+:109D900070470000002070470020704770470000A7
+:109DA00000207047704700007047000070470000B7
+:109DB000FFF7F8BF704700007047000070470000D1
+:109DC0007047000040F24820C2F20000407880074F
+:109DD0005CBF4FF0FF30704744F20000C4F209004E
+:109DE000016841F4803101600020704740F2482052
+:109DF000C2F20000407880075CBF4FF0FF30704730
+:109E000044F20000C4F20900016821F480310160CD
+:109E10000020704740F24820C2F200004178C0683C
+:109E2000890700EAE170704740F24820C2F2000062
+:109E3000407880075CBF4FF0FF30704744F200006D
+:109E4000C4F20900016821F400310160002070476C
+:109E500040F24820C2F200004078C0F340000138D0
+:109E600070470000704700000020704700207047D6
+:109E70000020704700207047002070470020704786
+:109E8000002070470020704770B587B0002306930C
+:109E900005930493039300F00F035D00013504065E
+:109EA0000290019158BF4500062B009206D30698F8
+:109EB000013006904FF0FF3007B070BD40F24820EF
+:109EC000C2F200004078800706D405980130059062
+:109ED0004FF0FF3007B070BD4FF644605FFA85FC6D
+:109EE000C0F2000000EB0C1420680568B5F1FF3FDC
+:109EF0000EDDA58BB4F80CE0A5EB0E0595420FDA4C
+:109F00000398013003904FF0FF3007B070BD00BFE1
+:109F10000498013004906FF0010007B070BD00BFDD
+:109F2000A4680025456005602561E560A560656061
+:109F300025600CEB8C0444F664456FF3DF22C2F21B
+:109F4000000545F82420026840F2FF74A24342EA6B
+:109F50009E14046023B34FF6FF32CAF2FF3204EAC4
+:109F6000020505F1A04203290260A3D84FEA9E131F
+:109F7000DFE801F00902080645F0A84202E000BF50
+:109F800044F0B842026022F08041426801604FF61E
+:109F90000001CBF6FF711140194401F1804141608D
+:109FA000012000FA0CF044F224016FF31F30C4F2D8
+:109FB000090141F8040C0A6810430860002007B04A
+:109FC00070BD000000F00F035A0002F1010C020600
+:109FD00058BF4FEA400C052B06D840F24820C2F289
+:109FE00000004078800703D44FF0FF30704700BF77
+:109FF0004FF644624FEA0C10C0F20002105802689B
+:10A00000002A44BF6FF00100704729B142F00051AF
+:10A0100001600020704700BF022161F3DD62026031
+:10A020000020704710B508B110BD00BF0C46802954
+:10A030000EDDA4F18100022814D3832C1CD0842CC3
+:10A0400018BF10BD00208421BDE8104002F03ABBCB
+:10A05000012C07D0042CE7D100200421BDE81040DA
+:10A0600002F030BB0020214603F02CFD832C03D0EE
+:10A07000842CE7D0D8E700BF00208321BDE8104042
+:10A0800002F020BB10B508B110BD00BF0C468029FE
+:10A090000EDDA4F18100022814D3832C1CD0842C63
+:10A0A00018BF10BD00208421BDE8104002F056BB4F
+:10A0B000012C07D0042CE7D100200421BDE810407A
+:10A0C00002F04CBB0020214603F010FD832C03D08E
+:10A0D000842CE7D0D8E700BF00208321BDE81040E2
+:10A0E00002F03CBBF0B581B000F00F077B001446D6
+:10A0F00010F0800203F1010308BF4300052F06D8CA
+:10A1000040F24820C2F200004078800704D44FF0AB
+:10A11000FF3001B0F0BD00BFD8B24FF64463C0F2CB
+:10A12000000303EB00173D682868002824D4BE68AC
+:10A1300030683161A042746038BF04460020B060CE
+:10A140001AB178682246F6F71CFA2968B88940F2F5
+:10A15000FF72914341EA901040F2FF712860F46071
+:10A160002868C7F60041084064F3D92000F1004098
+:10A170002860002001B0F0BD6FF0010001B0F0BD1B
+:10A1800010B500F00F014A00531C020658BF4300EF
+:10A19000052906D840F24820C2F200004078800726
+:10A1A00002D44FF0FF3010BD4FF64461D8B2C0F278
+:10A1B000000101EB001C44F214014FF0010EC4F247
+:10A1C00009010EFA00F208696FF31F3220EA020457
+:10A1D000DCF800000C610468B4F1FF3F14DC0C688B
+:10A1E0000EFA03F31C430C600C681C4208D00C6888
+:10A1F0001C4205D00C681C4202D00C681C42F3D1F2
+:10A20000036823F000430360DCF808300020C3E952
+:10A210000100D860CA600B691A430A6110BD0000D2
+:10A2200000F00F01052984BF00207047490001316B
+:10A23000020658BF410001EB810044F66441C2F2BE
+:10A24000000101EB800080687047000080B500F0DD
+:10A250000F0251000131030658BF4100052A06D8FC
+:10A2600040F24820C2F200004078800702D44FF04C
+:10A27000FF3080BDC8B24FF644620101C0F2000257
+:10A2800051580A68002A44BF6FF0010080BD0122C6
+:10A2900002FA00F044F21402C4F209028646D2F82F
+:10A2A00010C06FF31F3E2CEA0E0313610B68B3F16D
+:10A2B000FF3F07DD00204FF0804348600B60C2F88D
+:10A2C0000CE080BD13680343136000BF13680342B2
+:10A2D000F0D013680342EDD013680342EAD013684C
+:10A2E0000342F3D1E6E700000020704740F2482027
+:10A2F000C2F200004078800751BF002044F2040001
+:10A30000C4F20900006848BF6FF3DF207047000007
+:10A3100040F20320C0F200107047000040F24822D3
+:10A32000C2F200025378DB0703D1C2E90101012028
+:10A33000507000207047000070B5022846D00028F9
+:10A340001CBF6FF0030070BD4EF20410CEF200008F
+:10A350004FF40041C0F88010BFF34F8FBFF36F8FF1
+:10A36000C0F8801140F24820C2F200004178052474
+:10A3700001F0FD01C0F2020441702046FBF7D2F863
+:10A38000A01CFBF7CFF8601CFBF7CCF840F22820AC
+:10A39000C4F20000016821F040010160016821F071
+:10A3A00020010160016821F08001016043F6004056
+:10A3B000C4F210006021F6F7FDF844F66440C2F2E2
+:10A3C0000000F021F6F7F6F8002070BD40F24826B4
+:10A3D000C2F200067078C10704BF4FF0FF3070BDB5
+:10A3E00080074FF000044FD442F20041C0F2F40164
+:10A3F0000020F6F7F7FA4FF0FF300021F6F7DAFA0F
+:10A4000040F2282043F25002C4F200001021C4F2AE
+:10A410000A024FF4002301601360156845F480358B
+:10A420001560016248F23400C4F203004FF4801159
+:10A4300040F8344C036001600020C4F210004FF477
+:10A440008041F6F7B7F843F60045C4F210052846F8
+:10A450006021F6F7AFF844F2080040F20001C4F2C0
+:10A460000900C4F21001F460056041604FF0004142
+:10A47000C16170784FF4004140F0020070704EF2FC
+:10A480000410CEF200000160204670BD40F2482169
+:10A49000C2F200014A7892070ED50A7862B1002212
+:10A4A0000A70D1E90423026043600878002818BFCD
+:10A4B0004FF0FF30704700BF4FF0FF307047000093
+:10A4C000002818BF704780B5002003F063FB002010
+:10A4D000BDE8804002F012BD002804BF4FF0FF30FD
+:10A4E000704770B540F2BC36C2F2000604463068D0
+:10A4F0000D4688B900F062FB44F6D3518002C1F2E8
+:10A500006201A0FB010188094FF60041CFF6FF71FF
+:10A51000B1FBF0F1C6E90001691C02290CD3B0F5CA
+:10A52000806F09D07168A94231BF6FF0010500FB4F
+:10A5300005F000F2FF30850A20462946BDE870404C
+:10A5400001F0A4B880B584B003460020012B03902D
+:10A55000CDE90100009013D02BBB00291EBF0020C5
+:10A5600004B080BD45F66060C2F200000290102089
+:10A5700003906A460120012101F0C4F804B080BDB7
+:10A580004FF0000079B9092A0DD845F67060C2F283
+:10A59000000000EB02106A46029010200390012098
+:10A5A000012101F0AFF804B080BD000000280CBF0D
+:10A5B0004FF0FF3001F094B87047000000280CBF46
+:10A5C0004FF0FF3001F0B0B8704700007047000056
+:10A5D000B0B58AB00C46054601A82421F5F7EAFF7C
+:10A5E000042D4FF0000000F28F80DFE805F0031328
+:10A5F0008D2D5B00002C56D14DF6A91040F6C012EF
+:10A60000C0F20000C0F20102002101F0F7F80AB028
+:10A61000B0BD00BF042C46D84FA004EB041146F295
+:10A62000200250F82400C2F2000202EB81010190E6
+:10A630004420022C0391049068D3032C68D0022C90
+:10A6400014BFC020402064E06CBB40F60C50C0F248
+:10A65000010050F8340004EB04110190442046F24C
+:10A660007412049047F20020C2F20002C2F200000D
+:10A6700002EBC10105904FF6EC50C0F200000391CF
+:10A6800000EB041122018058496801AACDE90601B6
+:10A690004CF6D930C0F20000214601F0AFF80AB004
+:10A6A000B0BD00BF14B100200AB0B0BD600040F6DC
+:10A6B0000C510130C0F2010151F8201000EB0012E2
+:10A6C00001914421049147F2002146F27413C2F231
+:10A6D0000001C2F2000301F5007103EB8202059153
+:10A6E0004FF6EC51C0F20001039201EBC00251F8A9
+:10A6F0003000516801AACDE906014CF24960C0F270
+:10A700000000214601F07AF80AB0B0BD002000E058
+:10A71000802046F60021C2F2000101EBC00001AA30
+:10A72000059040F69440C0F2010000EBC40150F8DF
+:10A7300034004968CDE906014CF6CD40CCF6CC405A
+:10A74000A4FB00014DF67D208908C0F2000001F055
+:10A7500055F80AB0B0BD00BF1C070100F9070100A1
+:10A7600016080100330801005008010000280CBF42
+:10A77000002001F005B87047B0B540F2BC35C2F218
+:10A7800000052968044689B900F018FA44F6D35147
+:10A790008002C1F26201A0FB01014FF6004089096D
+:10A7A000CFF6FF70B0FBF1F0C5E90010601C022885
+:10A7B0000CD3B1F5806F09D06868A04231BF6FF04B
+:10A7C000010401FB04F000F2FF30840A4FF6FF7031
+:10A7D0000021224601F000F8B0F1FF3FC8BFB0BD34
+:10A7E0006FF00101401A18BF0120C007B0BD000082
+:10A7F00000280CBF4FF0FF3001F012B87047000086
+:10A8000040F24821C2F20001487800F0FE02002028
+:10A810004A707047B0B501281ED000284ED140F2D2
+:10A820002C24C2F2000460680121217000F0F8FFBE
+:10A83000002804BF002060604FF6EC40C0F200002A
+:10A84000826AD0E903451920002190470020A847DB
+:10A85000A0470020B0BD00BF4FF6EC41C0F20001A0
+:10A860008A6847F67540C0F200000C6990470220E4
+:10A87000A04740F2E1704FF6C852C0F20000C0F2AB
+:10A8800000020021002400F0B9FF40F22C25C2F2A2
+:10A890000005A968686021B9002000F055FA01465A
+:10A8A000A86008464FF0FF3100F03CFA05F11400B3
+:10A8B000F5F7D4FFA8682C7000F058FA0020B0BD5E
+:10A8C00013460A46014602A0F8F770FF00BEFDE7F6
+:10A8D000415353455254204552524F522022202575
+:10A8E0007320223A2066696C652022257322204C51
+:10A8F000696E652022256422200A0000F5F76EFFAC
+:10A90000F5F76AFF42F20000C4F20800F8F756FDBE
+:10A91000F8F740FA002004F07FF9F9F725FB18B1A9
+:10A920000146002004F068FE002002F03BFF00BF5B
+:10A93000002002F025FF0028FAD04EF20024C4F2D5
+:10A94000080420254FF4FA70C4F88050F8F766FF29
+:10A9500042F6B9504FF6C842C0F20000C0F2000201
+:10A960000021256000F04AFF40F20024C2F20004FA
+:10A97000206047F2E9004FF6A452C0F20000C0F296
+:10A980000002002100F03AFF60604FF0FF3000F05D
+:10A99000EBF800BFFEE70000022806D0012808D02F
+:10A9A00088B90C488168C06806E00A4801684068B8
+:10A9B00002E0084801694069CA0709D049083A4AD3
+:10A9C0001160506070473848034901600349416095
+:10A9D000704700BFD8FC0900684E0C01983A80010E
+:10A9E000B0F5747F05D24FF400314FF488400C224B
+:10A9F0004BE0B0F57A7F05D84FF480214FF49840B2
+:10AA00000E2242E040F20241884205D24FF4C021BA
+:10AA10004FF4B040112238E040F21B41884205D289
+:10AA20004FF400214FF4C84014222EE040F234418C
+:10AA3000884205D24FF420214FF4D840162224E05A
+:10AA400040F24D41884205D24FF440214FF4E84096
+:10AA500018221AE040F26641884205D24FF4602184
+:10AA60004FF4F0401B2210E040F27F41884202D2B6
+:10AA70004FF4801106E04FF4A011B0F5936F38BF8A
+:10AA80004FF490114FF4F8401E2210B51043064ABF
+:10AA900047F61F44D368A3431843D060106820F4DE
+:10AAA000F0100843106010BD1000024021490A68F0
+:10AAB000D3074FEA520204BF47F6A062C0F2261243
+:10AAC0000969CB074FEA51034FF0020104BF47F673
+:10AAD000A063C0F22613934288BF1346164A9342DE
+:10AAE000164A38BF0121934238BF0021022909D0FC
+:10AAF00089B940F23341022840F27E4208BF4FF448
+:10AB0000966110E04FF47A71022840F2014208BFCA
+:10AB100040F21A4107E04FF47A7140F24C420228A9
+:10AB200008BF40F27E41012808BF11460846FFF7E2
+:10AB300057BF00BF30FD0900A11D4B01A1DF01017E
+:10AB4000FCF76AFE00F04EF84AF6FD00C0F2000085
+:10AB50000021002200F052FE00F018F8012808BF82
+:10AB600000F056F8FEE70000EFF3058129B9EFF396
+:10AB7000108111B9EFF3118111B16FF00500704729
+:10AB8000DFF804C000DF704745B80000EFF3058030
+:10AB900048B9EFF3108030B9EFF3118018B9EFF333
+:10ABA0001480C00702D10448007A7047DFF804C05F
+:10ABB00000DF70475DB8000030000020EFF3058033
+:10ABC00028B9EFF3108010B9EFF3118010B10348EA
+:10ABD00040687047DFF808C000DF7047D4FB000012
+:10ABE00069B8000080B500F0D8F8EFF3058028B907
+:10ABF000EFF3108010B9EFF3118010B16FF0050082
+:10AC000080BDDFF808C000DF80BD00BF75B8000060
+:10AC1000EFF3058028B9EFF3108010B9EFF311803E
+:10AC200008B1FAF754BCDFF808C000DF704700BF76
+:10AC300071B90000F8B50546EFF3058014460E46DD
+:10AC400028B9EFF3108010B9EFF31180F0B1D5B14E
+:10AC50002878FA2817D16FF00300EEB1E3B928463F
+:10AC6000FAF792FBC8B16A6A00F10C010746304658
+:10AC7000F5F787FC0CB1F87820703846FD6000F0DD
+:10AC80004FFA0020F8BD6FF00300F8BD2846DFF84A
+:10AC900010C03146224600DFF8BD6FF00200F8BD5B
+:10ACA000F9B900002DE9F0410646EFF30580904622
+:10ACB0000D4628B9EFF3108010B9EFF3118018B3E7
+:10ACC000EEB13078FA281AD16FF00307CDB1C3B9CD
+:10ACD00006F10C0000F0D4F8F0B1726A04460C30B2
+:10ACE0002946F5F74EFCF920002720702046C4E9DC
+:10ACF000015684F80380A77000F012FA01E06FF0AB
+:10AD000003073846BDE8F0813046DFF814C0294615
+:10AD1000424600DFBDE8F0816FF00207F1E700BFB7
+:10AD2000E5BB0000EFF305822AB9EFF3108212B9F8
+:10AD3000EFF3118212B16FF005007047DFF804C025
+:10AD400000DF704795BC0000EFF3058129B9EFF3F0
+:10AD5000108111B9EFF3118109B100207047DFF8BC
+:10AD600008C000DF704700BF25BD0000EFF305817C
+:10AD700029B9EFF3108111B9EFF3118111B16FF01F
+:10AD800005007047DFF804C000DF704789BD000090
+:10AD9000FEE70000FEE7FFF7FBBF7047F0B5A8B184
+:10ADA000002379B3032A2DD803460F3153F8085FE7
+:10ADB00021F007012C46EE1A5D6825F00307F61B0B
+:10ADC0008E4205D225682346002DF3D1002319E0D9
+:10ADD000D0E900760E444660384450F8047CB7420F
+:10ADE0003EBF083846605D6845B125F00300114359
+:10ADF000C450184418600346416002E041EA020072
+:10AE0000586008331846F0BDB0B560B159B100F1D3
+:10AE10000804A1F108020023944206D025462468C4
+:10AE20002B46002CF8D10020B0BD51F8045C4468DA
+:10AE300025F00305641B446013B11068186002E03C
+:10AE4000002041F8040C0120B0BD18B102460843AF
+:10AE5000400701D000207047002018290FD310B5FB
+:10AE60008B18A3F10804946043F8080C102493682D
+:10AE7000C2E900145C60D0600120BDE8104070475A
+:10AE800010B5002817D0014600F1140252E8000F57
+:10AE900010B9BFF32F8F04E0036842E8003404B117
+:10AEA000F4E740B1043151E8002F531C41E800346D
+:10AEB00004B1F8E710BD002010BDB0B500281ED0C9
+:10AEC000C2688A421BD802698A4218D900F114026A
+:10AED00013680B60BFF35F8F52E8003F0C689C4221
+:10AEE000F6D142E8001505B1F2E7043050E8001F42
+:10AEF0004A1E40E8002303B1F8E70020B0BD6FF020
+:10AF00000300B0BDB0B598B191B18AB1044600203C
+:10AF10009BB1C4E9001004F1080002FB0135636134
+:10AF20002CC0481E30B19918196001380B46F9E75A
+:10AF30000020B0BD002018600120B0BDF8B5044667
+:10AF4000807848B3E56821462846FAF769FA05F1A2
+:10AF50000C060020207021463046FFF7AEFFA8689F
+:10AF6000C8B13046FFF78CFFA8B10446284600F070
+:10AF700038FAFAF7A6FA304600F092FA81680646E7
+:10AF80006A6A04F10C00F5F7FCFAF920A77020704A
+:10AF9000F068E07021E0F8BDA568A868E8B14078E5
+:10AFA00083281AD1284600F01CFAFAF78AFA3046AC
+:10AFB00000F076FA064680686A6A04F10C01F5F73B
+:10AFC000E0FAF06808B1E1780170277005F10C0033
+:10AFD0002146BDE8F840FFF770BF28462146BDE88E
+:10AFE000F840FAF7F1B9000080B507480821D0E928
+:10AFF0001A2000F06BFDF249C8640021002808BF48
+:10B000004FF0FF31084680BDD4FB00002DE9F04130
+:10B01000044600274FF00108D4B125466469E8785A
+:10B020000007F9D5A8682F760028F5D0284600F04B
+:10B03000D8F900210022064600F07CFAF06AC5E942
+:10B040000367686100B1056185F81880F562E3E780
+:10B05000BDE8F081B0B5C278920715D5C068C36A63
+:10B0600090F821209C688C4208BF8C682CB194F920
+:10B07000204055B2AC42C8BFE2B25B69002BF1D1AF
+:10B0800090F82010914200D1B0BD80F82020BDE89A
+:10B09000B04000F0D5B90000B0B5C94CB4F85400C8
+:10B0A00004F15601D1E85F2F12B9BFF32F8F04E0EE
+:10B0B000531EC1E8553F05B1F4E711042BD004F14C
+:10B0C0005A01D1E85F2F531C984200D80023C1E8F1
+:10B0D000553F05B1F5E790B2E16D51F82000D0B1D0
+:10B0E0000178F1390829D9D8DFE801F0060509050A
+:10B0F000050C0F051200D1E7216E8847CEE7616E7F
+:10B100008847CBE7A16E8847C8E7E16E8847C5E767
+:10B11000216F8847C2E70020BDE8B04000F0FEB8CC
+:10B1200070B50146F34800F15603B0F85420D3E857
+:10B130005F4FA24202D8BFF32F8F04E0651CC3E823
+:10B14000565F06B1F3E7A3B2934214D200F158035D
+:10B15000D3E85F4F651CAA4200D80025C3E8565FBC
+:10B1600006B1F5E7A2B2C36D43F82210417A39B1B6
+:10B170000121817270BD0220BDE87040FFF70BBE57
+:10B1800002484FF08051016070BD00BF04ED00E047
+:10B1900010B58168B1B100F10C01D1E85F2F12B98F
+:10B1A000BFF32F8F04E0531EC1E8543F04B1F4E70E
+:10B1B000110407D000F015F900210022BDE810406D
+:10B1C00000F0B8B910BD000010B5012190F9203091
+:10B1D0004170D7491C310A46896841B191F9204034
+:10B1E0009C42F8DCC0E902120C31906004E00021BE
+:10B1F000C0E9021202F10801086010BDB0B54A1C96
+:10B200000DD0F54A00232C3215462C68E4B1E569CF
+:10B21000A94221D3491B04F110052346F5E7F5495E
+:10B22000002301F1300214461946236803F110048B
+:10B23000002BF9D14FF0FF33C3610023C0E9043183
+:10B24000C1B101F1100215E0C161002BC0E9044356
+:10B2500018BF03F110020DE0002BC0E90443C161E7
+:10B2600018BF03F1100210602CB1E269511AE161BC
+:10B2700004F114021060B0BDC2690169531C0AD008
+:10B2800021B143694B61CB691A44CA6142693AB939
+:10B29000D84AD16207E009B142694A6142692AB1DC
+:10B2A0000023116143610021C1617047F64A1163B7
+:10B2B000F9E700BF70B5F44DEC6A1CB1E0690138E4
+:10B2C000E06100D070BD042660781338B6EB301F03
+:10B2D00005D1204600F0AEF82146FFF7BBFE204620
+:10B2E00000F09EF8204600F0D3F8246924B1E0690C
+:10B2F0000028E9D000206061EC6270BDC178C90708
+:10B3000008BF00F033B80021C16004214170DE495C
+:10B310004A6B826002B1D0604863704770B5DA4E04
+:10B3200005467469307A65B1022805D194F9200088
+:10B3300095F92010814211DC2846BDE8704000F0EC
+:10B34000A7B8022810D1756A75B194F9200095F953
+:10B350002010814208DD284600F062F82046FFF701
+:10B3600033FF0220B561687070BD00BF10B50446A0
+:10B3700000202080A07881070DD5C00605D4C248E2
+:10B38000216B406FFFF740FD05E0BF48216BD0F80F
+:10B390008400FFF792FDA078C00708BF10BDBA492E
+:10B3A000D1F8880020B12146BDE81040FFF785BDE7
+:10B3B000D1F880002146BDE81040FFF725BD00BF51
+:10B3C0003000002010B50446806918B10021002229
+:10B3D00000F0B0F86078232802BFA06800218161E6
+:10B3E00010BD0146806882688A6002B1D160002188
+:10B3F000C160704710B591F920300246806840B1B5
+:10B4000090F920409C42F8DAC1E902020C309160C8
+:10B4100004E00020C1E9020202F10800016010BD51
+:10B42000C16831B182688A60826802B1D16000214E
+:10B43000C16070470178F12918BF7047C068F9E70B
+:10B44000B0B50446054625B12878F12802D1ED684B
+:10B45000F9E7B0BD2046FFF7E3FF28462146BDE8E7
+:10B46000B040FFF7C7BF10B50446407833280DD170
+:10B4700094F823202046616AFCF7A5FB30B1014611
+:10B4800020460022BDE8104000F054B810BD000076
+:10B49000014601204870F3481C30FFF7ABBF00BFE6
+:10B4A00090F82210C9064FF0200158BF6021806B30
+:10B4B0000844704770B5EE4C00210A48A26D666ED4
+:10B4C00000F0F0FDE74DA86246B1B04740B9E96C25
+:10B4D000D4E9172000F0E6FDA86408B1012070BD92
+:10B4E000002070BD95AD0000DE49886102214170E9
+:10B4F000704700BF3000002010B5DA4C227A022AD3
+:10B5000014D1626A92B1626950701046FFF776FEFC
+:10B51000606A8168616211B104F11C02CA60022193
+:10B52000A06141700021C160012010BD002010BD4C
+:10B5300030000020B0B5044690F822001546C00641
+:10B540004FF0200058BF6020A26B81502046FFF7CB
+:10B5500093FE2046002DBDE8B04008BFFFF798BF1E
+:10B56000FFF7DCBEB0B5F9F769FFFF4DE8680130C1
+:10B57000E860FFF79FFE0020FFF7D0FE286D00B1C6
+:10B580008047296C71B1A869EA6B904205D0C26905
+:10B59000E86322B9C1610A4601E0C2691AB1511ECD
+:10B5A000C16100D0B0BD297A0229FBD16C6A002CA0
+:10B5B000F8D090F8200094F820108142F2D1204673
+:10B5C000FFF72EFFE86BFFF763FF2046FFF78CFFC6
+:10B5D000286CEC63E061B0BD3000002080B5FFF75F
+:10B5E00003FD10B14FF0FF3080BDDF480249016517
+:10B5F000002080BD300000201DB6000082B004464F
+:10B600006D462046294600224FF0FF33FFF712FB1C
+:10B610000028F6D1DDE900108847F2E72DE9F04176
+:10B62000F14D6C6C74B36E694FF0010820690138FC
+:10B63000206134B3206920BBE06808B1A168816053
+:10B64000686404F11801E86C00220023FFF72AFB6C
+:10B6500060B1D5E90570214668610320FFF79BFBC7
+:10B66000696986EA0700084308BF0646E0780128B2
+:10B6700011BF84F8018061692046FCF7D7FA6C6C31
+:10B68000D7E76E61BDE8F08130000020EFF305825E
+:10B690002AB9EFF3108212B9EFF31182CAB16FF039
+:10B6A0000302A0B199B90178F62910D10C30D0E885
+:10B6B0005F1F11B9BFF32F8F04E04A1EC0E8532F5C
+:10B6C00003B1F4E70022080408BF6FF0020210463D
+:10B6D0007047DFF808C000DF704700BF39BE0000C8
+:10B6E000EFF3058129B9EFF3108111B9EFF311815F
+:10B6F00011B16FF005007047DFF804C000DF70473C
+:10B7000091BE0000EFF305832BB9EFF3108313B95B
+:10B71000EFF311830BB100207047DFF808C000DFA2
+:10B72000704700BFF1BE000010B50446EFF305807E
+:10B7300028B9EFF3108010B9EFF3118090B15CB12C
+:10B740002078F62808D12046FBF787FD38B120463F
+:10B75000FFF7E6FC002010BD6FF0030010BD6FF096
+:10B76000020010BD2046DFF808C000DF10BD00BF9A
+:10B770006DBF0000DFF804C000DFFEE7A5BF0000DA
+:10B78000B0B5EFF305822AB9EFF3108212B9EFF3E7
+:10B790001182DAB16FF00304B0B1002914D4027839
+:10B7A000F12A11D14278042A02D16FF002040BE091
+:10B7B00000F1280252E8003F43EA010442E8004554
+:10B7C00005B1F7E7FFF7ACFC2046B0BDDFF804C0D9
+:10B7D00000DFB0BDF1BF0000EFF305832BB9EFF33D
+:10B7E000108313B9EFF311830BB1F9F767BEDFF8DC
+:10B7F00008C000DF704700BF59C00000EFF30583A9
+:10B800002BB9EFF3108313B9EFF311830BB10020C1
+:10B810007047DFF808C000DF704700BFA5C0000018
+:10B82000EFF3058129B9EFF3108111B9EFF311811D
+:10B8300009B1F9F743BEDFF808C000DF704700BF69
+:10B8400091C2000030B180B501461320FFF754FECD
+:10B85000013880BD6FF0030070470000DF48007AB8
+:10B86000704700BF3000002061484068704700BF4B
+:10B87000D4FB00002DE9F843DFF8988A98F8080017
+:10B8800028B101286CD04FF0FF30BDE8F883584F45
+:10B89000D7E90B41388AA8F85400D7E90202C8F862
+:10B8A00040002046C8F85C20FFF7CFFA08B1C8F87E
+:10B8B0008040D7E90541DFF8B490D7E90756204624
+:10B8C000C847D8F88010002818BF2146C8F874105F
+:10B8D00028463146C847D8F88010002818BF2946A6
+:10B8E000C8F87810D7E909412046C847D8F8801031
+:10B8F000002818BF21467C6BC8F87C101CB1F9F7F2
+:10B90000D7FDC8F88440BC6B1CB1F9F7D1FDC8F86D
+:10B910008840FC6B1CB1F9F7CBFDC8F88C403C6C3F
+:10B920001CB1F9F7C5FDC8F890407C6C1CB1F9F763
+:10B93000BFFDC8F89440BC6C1CB1F9F7B9FDC8F85C
+:10B940009840FC6C1CB1F9F7B3FDC8F89C403C6D05
+:10B950001CB1F9F7ADFDC8F8A040012088F8080037
+:10B960000020BDE8F88300BF300000204BAE00008F
+:10B97000B0B5EB4C207A01281CD1FFF79BFDC8B174
+:10B980001A48FF211A4D8175817D026881F0FF01FF
+:10B99000B1FA81F1C1F12001C2F302228A4228BF2B
+:10B9A000511CFE2202FA01F1C17468681149F9F7CD
+:10B9B0005FFD10B14FF0FF30B0BDF9F755FD2061CC
+:10B9C000F9F740FD04F11C00FFF70BFDFFF78CFDBC
+:10B9D0002878C0070CBF0320022080F314880220BF
+:10B9E00020720020B0BD00BF300000200CED00E050
+:10B9F000D4FB0000050500002DE9F04100284AD0E5
+:10BA000004460078FA2846D10E46002943D0204645
+:10BA10001D469046F9F7B8FC002841D0074620465D
+:10BA20003946F9F7FDFC626A07F10C013046F4F77C
+:10BA3000A8FD04F10C06B8F1000F1CBFF87888F8D7
+:10BA400000000025304639463D70FFF736FAA06801
+:10BA500018B33046FFF714FA0025F0B10646204629
+:10BA6000FFF7BFFC002101220746FFF763FD3846C0
+:10BA7000FFF716FD81680746626A06F10C00F4F7CD
+:10BA800080FDF92031463070F868F0702046B570BE
+:10BA9000F9F79AFC01E06FF003052846BDE8F08154
+:10BAA00085B183202946FFF727FD40B1F74841695A
+:10BAB0002046FFF79FFCEFF30980C0E902686FF0B2
+:10BAC0000105EAE76FF00205E7E700BF2DE9F84F4F
+:10BAD00048B10D4639B10446B0FA80F0B5FA85F1A7
+:10BAE0000844202803D200263046BDE8F88F05F12F
+:10BAF0000F0020F0030808FB04F95AB19668D2F849
+:10BB000000A0D2E904707EB1B107ECD1D16834292C
+:10BB1000E9D30CE04FF0000A0027F449D1F8A00067
+:10BB200058B1FFF7ADF90EE0D1680029DBD157B36A
+:10BB3000B907D8D14845D6D327E0D1F880003421C1
+:10BB40000122FFF72BF906464FF0010B67BB5EB3EE
+:10BB5000CDF800A04946DFF8BCA70022DAF87C0047
+:10BB6000FFF71CF9074620B138464946F4F722FD95
+:10BB700016E0BBF1000F12D0DAF8A00050B1314648
+:10BB8000FFF79BF90BE00028ADD1002EC5D04FF098
+:10BB9000000BDBE7DAF880003146FFF735F90026C5
+:10BBA000DDF800A00BF1020B002E3FF49DAF00204A
+:10BBB0002146C6E909504246C6E90B003B46C6E9A4
+:10BBC00001A0FA20307006F10C0086F802B0FFF7F1
+:10BBD00099F9E4480249016786E700BF3000002078
+:10BBE0003DAF00002DE9F04120B305460078FA286A
+:10BBF00020D10E46F1B1A8681F469046F8B14078B2
+:10BC000083281CD12846FFF7ECFB002101220446C3
+:10BC10000027FFF78FFC2046FFF742FC04468068B0
+:10BC20006A6A3146F4F7ADFCE06828B180F800801C
+:10BC3000002701E06FF003073846BDE8F08105F109
+:10BC40000C00FFF71DF980B16A6A04460C303146DA
+:10BC5000F4F797FCF920002720702846214684F845
+:10BC60000380A770F9F7B0FBE6E787B19320394668
+:10BC7000FFF742FC40B1DD4841692846FFF7BAFBB7
+:10BC8000EFF30980C0E902686FF00107D4E76FF0B5
+:10BC90000207D1E770B50446D44845694DB32CB3CB
+:10BCA0002078F52822D1207E30B30E46E178CA07ED
+:10BCB00002D0E268AA422BD066B388070AD5E068B2
+:10BCC00095F9201090F920208A42BCBF80F82010FE
+:10BCD000FFF7B6FB53203146FFF70EFC18B12046A4
+:10BCE0002946FFF787FB6FF0010070BD6FF003007E
+:10BCF00070BD4FF0FF3070BD0020C4E90350E86A0A
+:10BD0000606100B104610120EC622076002070BD0A
+:10BD1000FF2802D16FF0020070BD0130F5E700BFCF
+:10BD20003000002070B550B18468D0E900657CB166
+:10BD3000A10710D1C16800201C2917D270BD0025B1
+:10BD40000026D749D1F8940038B1FFF799F80AE0F6
+:10BD5000C0680028F5D0002070BDD1F880001C21FB
+:10BD60000122FFF71BF8044658B10120A070F5200E
+:10BD7000207004F1080011216660E570F4F71AFCE8
+:10BD800000E00024204670BD70B50446C4484069F8
+:10BD900070B154B12178F52907D1217E11B1E26843
+:10BDA000824209D06FF0020404E06FF0030401E066
+:10BDB0004FF0FF34204670BD01392176090601D0CD
+:10BDC0000024F7E7616909B122690A6100F12C02D8
+:10BDD00023691546002B18BF03F114052960E1788B
+:10BDE00089070FD590F8211012684AB193682BB1DA
+:10BDF00093F920304DB2AB42C8BF19461432F3E775
+:10BE000080F82010A06888B12046FFF7EAFA0021E8
+:10BE1000002205460026FFF78DFBE86AC4E90356B9
+:10BE2000606100B104610120EC62207600200024F2
+:10BE3000FFF774FABEE700BFB0B508B30446007858
+:10BE4000F6281DD104F10C00D0E85F2F12B9BFF322
+:10BE50002F8F04E0531EC0E8553F05B1F4E71004EE
+:10BE60001CBF0020B0BD71B16320FFF745FB20B1BE
+:10BE70008B4841692046FFF7BDFA6FF00100B0BD65
+:10BE80006FF00300B0BD6FF00200B0BD30000020C5
+:10BE900010B500B304460078F6281CD1A06868B13C
+:10BEA0002046FFF79EFA6FF002010022FFF742FBE7
+:10BEB000A0680028F4D10020FFF730FAA178002014
+:10BEC0002070C90710D0ED49D1F8980030B1214653
+:10BED000FEF7F3FF07E06FF0030010BDD1F880001C
+:10BEE0002146FEF791FF002010BD00BF300000206A
+:10BEF00070B50C46002198B30546B1EB104F2FD119
+:10BF0000AC4215D84AB19068166870B181070FD15C
+:10BF1000D2680021102A15D222E00026FD49D1F86E
+:10BF2000980038B1FEF7ACFF0AE0D0680028F5D0E1
+:10BF3000002115E0D1F8800010210122FEF72EFF2C
+:10BF400060B101218170F62101700022F149C0E940
+:10BF50000162054AC58184818A6600E000200146AD
+:10BF6000084670BD3000002091B1000010B560B1EE
+:10BF70000178F62909D1816859B1FFF732FA002119
+:10BF800001220024FFF7D6FA01E06FF003042046F7
+:10BF900010BDFBF762F90021002808BF6FF0020115
+:10BFA000084610BDB0B5DB4D287A02281DD1686A5D
+:10BFB000D8B16C69E06AFFF729F82046FFF702FA6A
+:10BFC000686A8168696211B105F11C02CA600221C8
+:10BFD000A86141700021C160EFF30980A063204691
+:10BFE0006961BDE8B040FFF789B9B0BD30000020FD
+:10BFF000B0B56FF0030460B300292AD40546007879
+:10C00000F12826D16878042802D16FF0020420E0DC
+:10C0100005F1280050E8002F42EA010440E80043FF
+:10C0200003B1F7E76878332813D195F82320284621
+:10C03000696AFBF7C8FD60B1014695F823000C461C
+:10C0400080075CBF686A21EA000428460122FFF7E6
+:10C0500071FA2046B0BD0000F8B50546AD48476905
+:10C0600057B1002D0BD40E461446384629463246A9
+:10C07000FBF7A9FD30B1F8BD4FF0FF30F8BD6FF010
+:10C080000300F8BD4CB13320214687F823607D6260
+:10C09000FFF732FA6FF00100F8BD6FF00200F8BD53
+:10C0A000300000202DE9FE4F002800F08780054673
+:10C0B0006AB102F110099668D2E9007399E8100399
+:10C0C000C6B1B0077AD1D068442816D276E04FF0D6
+:10C0D000010B4FF01809002300244FF0000800273F
+:10C0E0008C4A0293CDE90017D2F88800A8B1FEF778
+:10C0F000C7FE18E0D068002860D124B160075DD188
+:10C10000B8F1000F5AD0B9F1000F3BD0B9F1010FCF
+:10C1100054DBB9F1380F37DD50E0D2F8800044210C
+:10C120000122FEF73BFE06464FF0010A0027002CD5
+:10C1300053D1002E51D0BBF1000F0DD0754850499E
+:10C14000D0F88400D1F8548030B1FEF799FE60B188
+:10C1500004460AF1100A3EE06E4841460022406F54
+:10C16000FEF71CFE08B1044635E01FB14FF0000A8F
+:10C1700000242FE06749D1F8880018B33146FEF754
+:10C180009CFE24E04FF01809B8F1000F08D05FEAD8
+:10C19000487013D1B8F1480F10D3B8F1000F0DD487
+:10C1A000B8FA88F0002E4FEA501B3FF499AFCDE962
+:10C1B00000174FF0000A02930127B8E70026304627
+:10C1C000BDE8FE8FD1F880003146FEF71DFE002449
+:10C1D0004FF0010A00264AF0020A002EEFD0019823
+:10C1E000182170600298F07040F2F110308006F172
+:10C1F000080086F802A0F4F7DDF904EB080100203E
+:10C200004039C6E90E151F49FD22C6F82300C6F8BD
+:10C210002700C6F82B0086F82F00C6E90C482160DD
+:10C220001749009F86F82220097886F8219049074F
+:10C2300086F8209015D4B16B00220D2A03D041F866
+:10C2400022000132F9E74FF080700F4AC86331488D
+:10C25000C1E90D250F620D4901663046FFF75EF812
+:10C26000ADE76FF01001221D01EB98014FF0CC33C8
+:10C270000029E0D008C20139FAE700BF30000020F1
+:10C28000D4FB0000A52E5AE275B7000067B4000089
+:10C2900010B5A0B1F9F72BF911D1607800F00F00BB
+:10C2A00001280ED0032810D0022805D11948017AA0
+:10C2B000022901D1406A50B96FF0020010BDF9F7B0
+:10C2C00009B92046FFF7ACF801E0F9F706F9E06A92
+:10C2D000FEF79CFE2046FFF775F86078022811D122
+:10C2E0000C48416A8A68426212B100F11C03D360B3
+:10C2F000022281614A700022CA60EFF30981A163C2
+:10C30000426102E00020FFF709F82046FEF7F6FF41
+:10C31000002010BD30000020002070470020704732
+:10C320002DE9F0411E46174688460546002400F0D8
+:10C33000A5F940B9054850F8253023B132463946B1
+:10C340004046984704462046BDE8F0810CFF0000B7
+:10C3500070B50546002400F091F9C0B90D480E49AA
+:10C3600050F82500007E51F8200086680B4850F8F0
+:10C37000251061B10A488847040008D008480938E8
+:10C3800050F8091F31608188B1808079B0712046F2
+:10C3900070BD0000080D01006C0D010010FF0000D1
+:10C3A000190000200020704770B50E460546002495
+:10C3B00000F064F970B90848084950F8250051F8B0
+:10C3C00025203AB1007E064951F8200031468068A8
+:10C3D00090470446204670BD080D01001CFF000078
+:10C3E0006C0D01000020704770B50E460546002414
+:10C3F00000F044F960B9074850F8251041B13046C3
+:10C400008847040004D0044850F825004069068598
+:10C41000204670BD20FF0000080D010070B50546E4
+:10C42000002400F02BF9B0B90C480D4950F8250054
+:10C43000007E51F820000B49806851F8251051B159
+:10C44000094A0368C2F802308388D3808079107269
+:10C45000901C88470446204670BD0000080D01006E
+:10C460006C0D010024FF0000100000202DE9F05F9A
+:10C4700014468B46814600F001F9B8B9384951F8A5
+:10C4800029603849307E756951F82000C06890F8FD
+:10C49000950006EB4000B0F828A0707E28B1B07E71
+:10C4A00038B1A878002857D147E027204042BDE89E
+:10C4B000F09F296AA869401A29D0844200D904460D
+:10C4C000E9697068738C0A1AA3EB0A00801A804627
+:10C4D000274644450CD302465846F4F752F8706894
+:10C4E000E861296AC34401EB0800A7EB080728624A
+:10C4F00057B13A465846E969F4F743F8E8693844D1
+:10C50000E861286A38442862A87810B125E0002440
+:10C51000FAE7296AA869401A718C091AB1EB4A0F27
+:10C520001BD30220A870F17F000240EA01310E48BF
+:10C5300050F82900FEF71AF90FE0296AA869401A95
+:10C540000AD0844200D90446224658466969F4F765
+:10C5500018F8A8692862E4E700242046A7E700004D
+:10C56000080D01006C0D0100009300202DE9F05F23
+:10C5700014468946824600F081F870B9304951F876
+:10C580002A60707E756938B1B07E4FF0020B38B109
+:10C59000287898B3002445E027204042BDE8F09F6A
+:10C5A0002969A868401A318C081A28D0844200D919
+:10C5B0000446326868682746121A02EB01084146B1
+:10C5C00044450CD30A464946F3F7DBFF3068686000
+:10C5D000A968C14401EB0800A7EB0807A86057B1A0
+:10C5E0003A4649466868F3F7CCFF686838446860A3
+:10C5F000A8683844A860287818B113E014E0002433
+:10C60000F9E72969A86888420CD000BF85F800B016
+:10C61000B17F4FF4806040EA01310A4850F82A00A7
+:10C62000FEF7A4F82046B9E7308CA04200D20446B9
+:10C63000224649466868F3F7A4FFAC60E6E70000CD
+:10C64000080D01000093002070B5C4B2204600F030
+:10C6500015F8002811D1451E2846FEF78DF8010176
+:10C66000FAD4060AB00702D5204600F09FF97007F9
+:10C67000F2D5204600F09AF8EEE770BD0D49097832
+:10C68000884212D20C4951F8200070B1416961B161
+:10C690000A49007E0978884209D2094951F82000E8
+:10C6A00028B1C06818B100207047272070472120AA
+:10C6B00070470000040D0100080D0100680D010025
+:10C6C0006C0D01002DE9F0410D460646FFF7D6FF3F
+:10C6D000002838D11D481E4950F82640207E676941
+:10C6E00051F82000617FC06841F08001A9422AD042
+:10C6F000E17FA94227D0617E01291AD01548656BD8
+:10C7000050F8260000B1804794F82C0001281AD078
+:10C71000608CA84217D30220B870E07F4FF40071FC
+:10C7200041EA00310C4850F82600BDE8F041FEF720
+:10C730001DB8A17E09B1658CEAE790F8950004EB7D
+:10C740004000058DE4E7BDE8F0810000080D010020
+:10C750006C0D01007CFF0000009300202DE9F041EA
+:10C760000E460746FFF78AFF002818D10D484FF004
+:10C77000000850F82740E07F6569B04208D185F88D
+:10C780000280607E20B9084850F8270000B1804739
+:10C79000A07F40F08000B04201D185F80080BDE864
+:10C7A000F0810000080D010080FF00002DE9F84F26
+:10C7B0008346FFF763FF00287DD1784951F82B505D
+:10C7C0007749287E6C69009051F82000C06890F885
+:10C7D000950005EB4000B0F828802078012809D0AA
+:10C7E00000206A7E01210026012A0AD02278012A2F
+:10C7F0006FD0A4E0A87F40F08001009801F05EFCBB
+:10C80000EFE7AA7E002A227802D0012A56D05CE007
+:10C81000012A18D1B0B1E2680244E2602B8C2F6883
+:10C820001F44974201D8D21AE26022690244226171
+:10C83000A368934207D1B0FBF8F308FB130010B9CB
+:10C84000617000E066702269A068871A404647451B
+:10C8500000D9074660784FF0FF3977B100B16670B4
+:10C860006268E068904209D32B8C2A681A44C31985
+:10C870009A4203D2A2EB000900E0E8B12170D5F89A
+:10C880000CA0E168B84648464F4507D302465046DB
+:10C89000F3F777FE2968CA44A8EB0908B8F100004D
+:10C8A00003D002465046F3F76CFEA87F3B4640F0AB
+:10C8B0008001EA6819E06EE026701EE060B1B0FB0E
+:10C8C000F8F308FB1300A66020B1607828B10023BC
+:10C8D00006E014E06170FAE76670A368002BEBD005
+:10C8E0002170A87F626840F08001009801F01AFB77
+:10C8F0000028E1D1207800284DD12A4843E0E8B152
+:10C9000095F82C20A2B995F82D3022695B1E1A40AB
+:10C9100004EB82029665E2682B6B1344E3602F8C74
+:10C920002A6817449F4200D8E2602269521C2261A3
+:10C93000A8F10102104202D1617000E066706078D7
+:10C94000002388B995F82C0018B92269A068904294
+:10C9500002D12078022810D195F82D202069521E8E
+:10C96000104004EB8000836D2170A87FE26840F0E6
+:10C970008001009801F0D6FA08B1267002E0207814
+:10C98000002808D1084850F82B00002803D001B037
+:10C99000BDE8F04F0047BDE8F88F0000080D01002A
+:10C9A0006C0D010008FF000050FF00002DE9F14F61
+:10C9B00082B00298FFF762FE00287CD16649029897
+:10C9C00051F820506C69287E0090A078012809D089
+:10C9D0000026687E4FF00009012809D0A0780128C0
+:10C9E00076D08BE0E97F009801F068FB0646F0E71F
+:10C9F000A87E28B1A078012845D002284BD055E068
+:10CA00005649009851F82000C06890F8950005EB51
+:10CA10004000008D0190A078012824D11EB36769E1
+:10CA200068686A8C391A0198D5F810B0101AA0EB12
+:10CA3000010AB046504656450BD302465946384681
+:10CA4000F3F79FFDA8EB0A006F68D3445FEA000884
+:10CA500005D0424659463846F3F793FD474467618F
+:10CA6000A0693044A061216AA069401A698C091A42
+:10CA70000198B1EB400F17D30120A070DDE900034E
+:10CA8000E97F2A690DE0002E63D084F80290A06946
+:10CA90003044A0610CE00120A0706B8CE97F6269DA
+:10CAA000009801F03FFA08B184F80290002E50D0AF
+:10CAB0002B48029901E04CE00AE050F821100029CF
+:10CAC00047D0226AA06903B0801ABDE8F04F08473A
+:10CAD000A6B195F82E10A069491E084004EB80000D
+:10CAE00006666069696B014461616A8C686802442A
+:10CAF0008A4200D86061A069401CA06195F82C00B2
+:10CB0000012801D038B116E0A078022813D1012005
+:10CB1000A070236D09E0216AA069401A95F82E10D3
+:10CB2000884208D20120A0706B6BE97F626900988F
+:10CB300001F0F8F908B184F80290002E09D00948F4
+:10CB4000029950F82100002803D003B0BDE8F04F4F
+:10CB50000047BDE8FE8F0000080D01006C0D0100CC
+:10CB600004FF000054FF000070B50446FFF786FD87
+:10CB7000050025D1134850F82400407E01280AD032
+:10CB8000114800BF50F8240000B180470F4E56F8FE
+:10CB9000240010B108E00E48F4E721460320FDF719
+:10CBA00017FD46F8240050B10A4E56F8240038B953
+:10CBB00021460420FDF70CFD46F8240000B910259D
+:10CBC000284670BD080D01004CFF0000889300202E
+:10CBD00014FF0000009300202DE9F047C6B2304654
+:10CBE000FFF74CFD00282FD14FF0FF3900274846B2
+:10CBF000FDF7C2FD0101FAD4000A4007F7D530461F
+:10CC0000FFF73CFD0028F2D1104951F826506C691D
+:10CC100095F81880E078012808D1687F40F08001FD
+:10CC2000404601F04BFAE178012909D00120E0707B
+:10CC3000687F636A40F080014046AA6801F072F99B
+:10CC40000028D4D0E770D2E7BDE8F087080D0100D6
+:10CC500070B50E4605460024FFF710FD30B90448B4
+:10CC600050F8252012B1304690470446204670BD4A
+:10CC70002CFF00002DE9F04116460F460546002422
+:10CC8000FFF7FCFC38B9054850F825201AB13146A9
+:10CC90003846904704462046BDE8F08130FF00004A
+:10CCA0002DE9F04116460F4605460024FFF7E6FC45
+:10CCB00038B9054850F825201AB131463846904712
+:10CCC00004462046BDE8F08134FF000070B50E46F2
+:10CCD00005460024FFF7D2FC30B9044850F825205F
+:10CCE00012B1304690470446204670BD38FF000020
+:10CCF00070B50E4605460024FFF7C0FC30B9044865
+:10CD000050F8252012B1304690470446204670BDA9
+:10CD10003CFF000070B50E4605460024FFF7AEFC50
+:10CD200030B9044850F8252012B1304690470446E7
+:10CD3000204670BD40FF000070B50E460546002439
+:10CD4000FFF79CFC30B9044850F8252012B130465A
+:10CD500090470446204670BD44FF000070B50E4663
+:10CD600005460024FFF78AFC30B9044850F8252016
+:10CD700012B1304690470446204670BD48FF00007F
+:10CD800070B50D4606460024FFF778FC68B90848E0
+:10CD900050F8261049B128468847040005D00548B8
+:10CDA00050F82600406980F82B50204670BD0000E6
+:10CDB0005CFF0000080D01002DE9F04116460F460A
+:10CDC00005460024FFF75AFC38B9054850F82520DD
+:10CDD0001AB131463846904704462046BDE8F081F6
+:10CDE00060FF000070B50E4605460024FFF746FCC4
+:10CDF00030B9044850F8252012B130469047044617
+:10CE0000204670BD64FF00002DE9F0411E46174624
+:10CE1000884605460024FFF731FC40B9054850F824
+:10CE2000253023B1324639464046984704462046CD
+:10CE3000BDE8F08168FF000070B50E46054600248D
+:10CE4000FFF71CFC60B9074850F8251041B1304687
+:10CE50008847040004D0044850F8250040698685BE
+:10CE6000204670BD6CFF0000080D010070B50E4635
+:10CE700005460024FFF702FC30B9044850F825208D
+:10CE800012B1304690470446204670BD70FF000046
+:10CE900070B50D4606460024FFF7F0FB68B9084858
+:10CEA00050F8261049B128468847040005D00548A7
+:10CEB00050F82600406980F82A50204670BD0000D6
+:10CEC00074FF0000080D010070B50E4605460024F1
+:10CED000FFF7D4FB60B9074850F8251041B1304640
+:10CEE0008847040004D0044850F8250040690663D0
+:10CEF000204670BD78FF0000080D01002DE9F041CB
+:10CF00000746FFF7BBFB002856D12C48002684219A
+:10CF100050F827506C692046A6702670F3F74AFB3C
+:10CF2000286860602868E060686860616868E0613F
+:10CF3000687E012824D055F8300F20632889A08509
+:10CF40001C2024F8680F15F8010C608028686060C8
+:10CF500068892081A8896081E889A081E681686864
+:10CF60002061288AA082688AE082A88A20831448E7
+:10CF7000668350F8270000281ED0BDE8F041004726
+:10CF8000A87E40B90F4826854FF4165101600671FE
+:10CF90004671082181710C4850F8270000B1804784
+:10CFA000A87E002808D1094850F82710002903D08E
+:10CFB000BDE8F04103480847BDE8F081080D0100D5
+:10CFC00058FF00002000002018FF000024FF000090
+:10CFD0002DE9F0410446FFF751FB050020D1134E27
+:10CFE000002756F8240020B1FDF702FC40B946F8AE
+:10CFF00024700F4E56F8240030B1FDF7F9FB08B14C
+:10D0000010250DE046F824700A4850F82400407EB0
+:10D01000012808D0084800BF50F8240000B180471C
+:10D020002846BDE8F0810548F6E70000009300209F
+:10D0300088930020080D010084FF000028FF0000F5
+:10D0400007490978884209D2064951F8200028B1D9
+:10D05000C16819B1006808B10020704721207047ED
+:10D06000680D01006C0D01002DE9F05F684905466F
+:10D07000002009788D4232D2DFF8989159F82510B6
+:10D0800000292CD0644951F82510CC68002C26D0FA
+:10D0900094F8A010C1F34112012A20D1DFF87CA13D
+:10D0A0005F4F11F01F0107D001291AD002293FD08C
+:10D0B000032914D10026A7E000260DE05AF8261017
+:10D0C0000978A94206D159F82610D4F8AC0088474F
+:10D0D000002804D1761CF6B239788E42EED3BDE832
+:10D0E000F09F0026BB461EE05AF8268098F80010F4
+:10D0F000A94216D15FF0000707EBC70208EB420117
+:10D100000A7952B1B4F8A42049798A4205D159F874
+:10D110002610D4F8AC00884718B97F1CFFB2042F42
+:10D12000EAD3761CF6B29BF800108E42DCD3D6E729
+:10D130000026BB4654E000BF5AF8268098F800103D
+:10D14000A9424BD15FF0000707EBC70208EB420191
+:10D150000A79EAB38A7922B1B4F8A420CB799A4249
+:10D1600030D00A7A22B1B4F8A4304A7A934229D056
+:10D170008A7A22B1B4F8A420CB7A9A4222D00A7BD0
+:10D1800022B1B4F8A4204B7B9A421BD08A7B22B1F7
+:10D19000B4F8A420CB7B9A4214D00A7C22B1B4F814
+:10D1A000A4204B7C9A420DD08A7C22B1B4F8A420F2
+:10D1B000CB7C9A4206D00A7D52B1B4F8A420497DB6
+:10D1C0008A4207D159F82610D4F8AC00884700E00D
+:10D1D00000E018B97F1CFFB2042FB5D3761CF6B25D
+:10D1E0009BF800108E42A7D379E700BF5AF82610AB
+:10D1F0000978A94206D159F82610D4F8AC0088471E
+:10D20000002894D1761CF6B239788E42EED366E7C8
+:10D21000680D010088FF00006C0D0100640D010025
+:10D22000600D01002DE9F05F68490546002009788E
+:10D230008D4232D2DFF8989159F8251000292CD070
+:10D24000644951F82510CC68002C26D094F8A01021
+:10D25000C1F34112012A20D1DFF87CA15F4F11F008
+:10D260001F0107D001291AD002293FD0032914D168
+:10D270000026A7E000260DE05AF826100978A942FA
+:10D2800006D159F82610D4F8AC008847002804D1FC
+:10D29000761CF6B239788E42EED3BDE8F09F0026B8
+:10D2A000BB461EE05AF8268098F80010A94216D115
+:10D2B0005FF0000707EBC70208EB42010A7952B1A1
+:10D2C000B4F8A42049798A4205D159F82610D4F837
+:10D2D000AC00884718B97F1CFFB2042FEAD3761C34
+:10D2E000F6B29BF800108E42DCD3D6E70026BB4690
+:10D2F00054E000BF5AF8268098F80010A9424BD19C
+:10D300005FF0000707EBC70208EB42010A79EAB3B6
+:10D310008A7922B1B4F8A420CB799A4230D00A7A23
+:10D3200022B1B4F8A4304A7A934229D08A7A22B141
+:10D33000B4F8A420CB7A9A4222D00A7B22B1B4F866
+:10D34000A4204B7B9A421BD08A7B22B1B4F8A42044
+:10D35000CB7B9A4214D00A7C22B1B4F8A4204B7C37
+:10D360009A420DD08A7C22B1B4F8A420CB7C9A4298
+:10D3700006D00A7D52B1B4F8A420497D8A4207D173
+:10D3800059F82610D4F8AC00884700E000E018B93E
+:10D390007F1CFFB2042FB5D3761CF6B29BF80010A9
+:10D3A0008E42A7D379E700BF5AF826100978A94220
+:10D3B00006D159F82610D4F8AC008847002894D13B
+:10D3C000761CF6B239788E42EED366E7680D01001E
+:10D3D0008CFF00006C0D0100640D0100600D010068
+:10D3E0002DE9F84F054667480078854235D2DFF8C9
+:10D3F000989159F8250000282FD0644850F825004E
+:10D40000C468002C29D094F8A000C0F34111012970
+:10D4100023D1DFF87CA1DFF87C8110F01F0009D058
+:10D4200001281CD0022843D0032816D100265746D5
+:10D43000A034A2E000265746A0340AE057F82600A0
+:10D440000078A84203D159F8261020468847761C58
+:10D45000F6B298F800008642F0D3BDE8F88FCB46CC
+:10D4600004F1A0000026C14600901CE05AF8268076
+:10D4700098F80000A84214D15FF0000707EBC7013D
+:10D4800008EB4100017941B1B4F8A4104079814220
+:10D4900003D15BF82610009888477F1CFFB2042F49
+:10D4A000ECD3761CF6B299F800008642DED3D4E7BE
+:10D4B0000026C34651E000BF5AF8268098F80000C5
+:10D4C000A84248D15FF0000707EBC70108EB410015
+:10D4D0000179E1B3817921B1B4F8A410C279914204
+:10D4E00030D0017A21B1B4F8A410427A914229D007
+:10D4F000817A21B1B4F8A410C27A914222D0017B82
+:10D5000021B1B4F8A410427B91421BD0817B21B1A0
+:10D51000B4F8A410C27B914214D0017C21B1B4F8BC
+:10D52000A410427C91420DD0817C21B1B4F8A410AA
+:10D53000C27C914206D0017D49B1B4F8A410407D6F
+:10D54000814204D159F8261004F1A00088477F1CBD
+:10D55000FFB2042FB8D3761CF6B29BF800008642C7
+:10D56000AAD37AE757F826000078A84203D159F8E1
+:10D57000261020468847761CF6B298F800008642AE
+:10D58000F0D36AE7680D010090FF00006C0D010008
+:10D59000640D0100600D01002DE9FE4F7349054641
+:10D5A000002009788D423DD2DFF8C49159F825104A
+:10D5B000002937D06F4951F82510CC68002C31D0A4
+:10D5C00094F8A010C1F34112012A2BD1DFF8A8A1D1
+:10D5D0006A4F11F01F010CD0012925D0022951D02A
+:10D5E00003291FD1002604F1AC0B04F1A808A034D4
+:10D5F000B7E0002604F1AC0B04F1A808A0340EE05B
+:10D600005AF826100978A94207D159F826305A4607
+:10D61000414620469847002804D1761CF6B2397856
+:10D620008E42EDD3BDE8FE8F0026BB4625E000BF4D
+:10D630005AF8268098F80010A9421CD104F1AC01D8
+:10D640000291091F002701910839009107EBC702D9
+:10D6500008EB42010A7952B1B4F8A42049798A4210
+:10D6600005D19DE8070059F82630984718B97F1C66
+:10D67000FFB2042FEAD3761CF6B29BF800108E425C
+:10D68000D6D3CFE70026BB4657E000BF5AF8268026
+:10D6900098F80010A9424ED15FF0000707EBC702CF
+:10D6A00008EB42010A79EAB38A7922B1B4F8A430CE
+:10D6B000CA79934230D00A7A22B1B4F8A4204B7AC6
+:10D6C0009A4229D08A7A22B1B4F8A420CB7A9A421D
+:10D6D00022D00A7B22B1B4F8A4204B7B9A421BD003
+:10D6E0008A7B22B1B4F8A420CB7B9A4214D00A7C66
+:10D6F00022B1B4F8A4204B7C9A420DD08A7C22B18E
+:10D70000B4F8A420CB7C9A4206D00A7D52B1B4F87A
+:10D71000A420497D8A420AD104F1AC0259F826308E
+:10D72000111F00E003E004F1A000984718B97F1C26
+:10D73000FFB2042FB2D3761CF6B29BF800108E42D3
+:10D74000A4D36FE75AF826100978A94207D159F8EF
+:10D7500025305A46414620469847002891D1761CEC
+:10D76000F6B239788E42EDD35CE70000680D010017
+:10D7700094FF00006C0D0100640D0100600D0100BC
+:10D7800070B505460024FFF75BFC30B9044850F83B
+:10D790002500C068007900B10124204670BD00005A
+:10D7A0006C0D010010B50446FFF74AFC002804D1B7
+:10D7B0002046BDE8104000F089BA10BD70B504469F
+:10D7C0002D4E0D46C80704D056F8241009B101208B
+:10D7D0008847A80707D556F8241009B100208847C4
+:10D7E000204601F0F5FE680721D5204601F0F0FE45
+:10D7F000224850F824000668F078B38800F003024D
+:10D80000B178204600F0CCFA48B9F078B38800F03F
+:10D810000302B07840F08001204600F0C1FA2046B3
+:10D82000FCF74EFE164850F8240000B18047280748
+:10D830000BD51449012051F82410C96881F89500CE
+:10D84000114850F8240000B18047E80604D50F487D
+:10D8500050F8240000B18047A80604D50C4850F8C1
+:10D86000240000B18047290A480704D02046BDE8BB
+:10D87000704000F06DBD70BDE0FF00001801002099
+:10D88000D0FF00006C0D0100C8FF0000D8FF0000B1
+:10D89000D4FF000010B504460C480078844201D340
+:10D8A000002010BD0A4850F82400C0680028F8D0B5
+:10D8B0000849D0F8AC0051F8241088470028F0D16E
+:10D8C0002046BDE81040FFF7CFBB0000680D010007
+:10D8D0006C0D0100B8FF000010B504460C4800783C
+:10D8E000844201D3002010BD0A4850F82400C068CB
+:10D8F0000028F8D00849D0F8AC0051F82410884727
+:10D900000028F0D12046BDE81040FFF78BBC000096
+:10D91000680D01006C0D0100BCFF000010B504464D
+:10D920000A48007884420FD2094850F82400C068A1
+:10D93000002809D00749A03051F824108847204614
+:10D94000BDE81040FFF74CBD10BD0000680D0100A0
+:10D950006C0D0100C0FF000010B504460F480078B0
+:10D96000844201D3002010BD0D4850F82400C06847
+:10D970000028F8D00021C0F8A810C0F8AC10094960
+:10D9800000F1AC0251F82430111FA0309847002854
+:10D99000E9D12046BDE81040FFF7FEBD680D01004B
+:10D9A0006C0D0100C4FF00002DE9F047C6B220480D
+:10D9B0000078864239D21F4800244FF0FF3750F8D4
+:10D9C0002600D0F800901C4850F82600C10708D067
+:10D9D000810701D401246427400702D444F00204E3
+:10D9E00064274FF00008E00701D0012119E0384614
+:10D9F000FCF7C2FE0146000113D5D9F81C00804790
+:10DA000000F001054545F2D0A846E00704D01DB15D
+:10DA100001213046FFF7D2FEA007E8D5002DE6D160
+:10DA200002213046FFF7CAFEE1E7BDE8F0870000BB
+:10DA3000680D01006C0D0100E48200200B4909789B
+:10DA4000884201D32A207047094951F8200009492A
+:10DA500000780978884207D2074951F8200018B1A8
+:10DA6000C06808B10020704721207047600D010098
+:10DA7000640D0100680D01006C0D01002DE9F041FD
+:10DA8000C4B22046FFF7DAFF002815D10B4E0C4D2B
+:10DA9000471E3846FCF770FE0101FAD43278C0F315
+:10DAA000033104FB0211C9B2C0F3032055F8211061
+:10DAB0000029EED08847ECE7BDE8F081700D010049
+:10DAC000E4FF000070B50D460446FFF7B7FF0028DD
+:10DAD00008D1054850F82420002A03D02846BDE884
+:10DAE0007040104770BD000098FF000070B50D46F3
+:10DAF0000446FFF7A3FF002808D1054850F824206A
+:10DB0000002A03D02846BDE87040104770BD0000D1
+:10DB10009CFF00002DE9F0410546FFF78FFF00282C
+:10DB200029D1174850F8250000B180471548012435
+:10DB3000164E50F825004788134800EB851816E06C
+:10DB4000C0B205FB0040124951F8201069B1012113
+:10DB5000A140394209D058F8241031B9C1B201208E
+:10DB6000FCF736FD48F8240038B1641CE4B2307884
+:10DB70008442E5D30020BDE8F0811020FBE70000DF
+:10DB8000A0FF0000640D010090930020700D0100C3
+:10DB90001C01002010B50446FFF750FF002807D1F4
+:10DBA000044850F82400002802D0BDE81040004787
+:10DBB00010BD0000A4FF00002DE9F05F0546FFF74F
+:10DBC0003DFF00281FD118480124194E50F82500A8
+:10DBD000DFF86080A246478814484FF0000B00EB46
+:10DBE000851916E0C0B205FB004158F8210070B15C
+:10DBF0000AFA04F038420AD059F8240038B1FCF788
+:10DC0000F7FD10B11020BDE8F09F49F824B0641C66
+:10DC1000E4B230788442E5D3074850F8250000B1DB
+:10DC200080470020EFE70000640D01009093002082
+:10DC3000700D01001C010020A8FF000070B51749FD
+:10DC400051F82010C9B1CC68BCB1D4F89C20002593
+:10DC5000AAB1497D491E0A4202D1012184F89610D9
+:10DC6000D4E92623802100F05DF9002804D1F4E9ED
+:10DC700026121144C4E9001570BD212070BD94F82E
+:10DC8000961049B100231A46802100F04BF9002874
+:10DC9000F4D184F8965070BD222070BD6C0D010047
+:10DCA000094910B551F82010CC680021D4E9262389
+:10DCB00000F038F9002805D1F4E926010844206075
+:10DCC0000020606010BD00006C0D01002DE9F041E6
+:10DCD00005460324154E08E056F825006421FCF79C
+:10DCE000FBFB28B10A20FCF71FF8641EE4B2F3D254
+:10DCF000BCB1DFF83C80022758F825000068406975
+:10DD00008047040005D00A20FCF70EF87F1EFFB202
+:10DD1000F2D256F82500FCF751FC24B12220BDE8D0
+:10DD2000F0812320FBE70020F9E70000F8930020B2
+:10DD30006C0D01002DE9F047894605460324164E77
+:10DD400009E000BF56F825006421FCF7C5FB28B1A7
+:10DD50000A20FBF7E9FF641EE4B2F3D2C4B1DFF896
+:10DD60003C80022758F825000068416A48468847E9
+:10DD7000040005D00A20FBF7D7FF7F1EFFB2F1D2C7
+:10DD800056F82500FCF71AFC24B12220BDE8F087E4
+:10DD90002320FBE70020F9E7F89300206C0D010039
+:10DDA0002DE9FF5F894601F00F020546102101EAC7
+:10DDB000D9002C499B4610440B786B4302EB43027D
+:10DDC000D4B2102802D309782144CCB2264F1422B1
+:10DDD00002EB800057F82510C968085820B1494661
+:10DDE000284600F011F9A0BBDFF88080022600BFB2
+:10DDF00058F824006421FCF76FFB28B10A20FBF7D8
+:10DE000093FF761EF6B2F3D24EB303264FEA070A0B
+:10DE10005A465AF8250002990068C36A484698474E
+:10DE20000746801D06280CD2DFE800F00B0B0B0321
+:10DE30000303761E16F0FF0603D00A20FBF774FFDB
+:10DE4000E6E758F82400FCF7B9FB17F1020F06D0FB
+:10DE50001FB1222004B0BDE8F09F0020FAE7232084
+:10DE6000F8E70000700D01006C0D0100D093002058
+:10DE70002DE9F05F9346894601F00F020546102117
+:10DE800001EAD900244910440B786B4302EB4302AA
+:10DE9000D4B2102802D309782144CCB2DFF87CA098
+:10DEA000142202EB80005AF82510C968085820B1E6
+:10DEB0004946284600F0A8F838BBDFF864800226FF
+:10DEC000642158F82400FCF707FB28B10A20FBF76F
+:10DED0002BFF761EF6B2F3D2E6B102275AF82500E0
+:10DEE00059460068426B48469047060005D00A2014
+:10DEF000FBF71AFF7F1EFFB2F0D258F82400FCF7A0
+:10DF00005DFB16F1020F05D016B12220BDE8F09F8F
+:10DF10000020FBE72320F9E7700D01006C0D0100E4
+:10DF2000D09300202DE9FF5F884601F00F03334AAC
+:10DF30000446102101EAD80018440127157807FA91
+:10DF400000F1654303EB4503DDB2102802D31278DC
+:10DF50002A44D5B22A4B53F82420D268D6680E4200
+:10DF60004AD1142101EB80099A4652F8090038B1D0
+:10DF70005FEA087040D14146204600F045F8A8BB52
+:10DF8000DFF880B0022600BF5BF825006421FCF7B3
+:10DF9000A3FA28B10A20FBF7C7FE761EF6B2F3D229
+:10DFA00056B35AF82410CA6842F809705FF00207A5
+:10DFB0005AF82400DDE902120068836B4046984756
+:10DFC00006000BD00A20FBF7AFFE7F1EFFB2EFD298
+:10DFD0005AF824000021C26842F809105BF82500B5
+:10DFE000FCF7ECFA16F1020F06D01EB1222004B0A5
+:10DFF000BDE8F09F0020FAE72320F8E7700D01004C
+:10E000006C0D0100D09300202DE9F05F8A4601F0ED
+:10E010000F020446102101EADA00254910440B786A
+:10E02000634302EB4302D5B2102802D30978294496
+:10E03000CDB2DFF8808058F82410CA68142101EBB3
+:10E04000800B52F80B00002820D0DFF86C900226DD
+:10E05000642159F82500FCF73FFA28B10A20FBF7A4
+:10E0600063FE761EF6B2F3D27EB1022758F8240082
+:10E070000068016C50468847060009D00A20FBF76B
+:10E0800053FE7F1EFFB2F1D208E02320BDE8F09FCF
+:10E0900058F824000021C26842F80B1059F82500F6
+:10E0A000FCF78CFA0EB12220F0E70020EEE700002A
+:10E0B000700D01006C0D0100D09300202DE9F0419E
+:10E0C00080460E46102001F00F0200EAD60011181B
+:10E0D00015481029047808FB04F302EB4302D4B27C
+:10E0E00002D300782044C4B2104F0225642157F8AF
+:10E0F0002400FCF7F1F928B10A20FBF715FE6D1E8C
+:10E10000EDB2F3D275B10A4951F828000068C16B2D
+:10E1100030468847054657F82400FCF74FFA284652
+:10E12000BDE8F0810020FBE7700D0100D0930020D6
+:10E130006C0D01002DE9F047894601F00F020546FC
+:10E14000102101EAD900254910440B786B4302EBFA
+:10E150004302D4B2102802D309782144CCB2DFF8AC
+:10E1600080A0142202EB80005AF82510C9680858D4
+:10E1700020B149462846FFF747FF38BBDFF86480E7
+:10E18000022600BF58F824006421FCF7A5F928B145
+:10E190000A20FBF7C9FD761EF6B2F3D2DEB10227E4
+:10E1A0005AF825000068016B48468847060005D0EC
+:10E1B0000A20FBF7B9FD7F1EFFB2F1D258F8240008
+:10E1C000FCF7FCF916F1020F05D016B12220BDE8CC
+:10E1D000F0870020FBE72320F9E70000700D010025
+:10E1E0006C0D0100D0930020024951F82000006816
+:10E1F000406800476C0D0100024951F8200000689A
+:10E20000006800476C0D01002DE9F04791468A46F1
+:10E2100005460324164E08E056F825006421FCF755
+:10E220005BF928B10A20FBF77FFD641EE4B2F3D24C
+:10E23000CCB1DFF840800227494658F82500006835
+:10E24000826850469047040005D00A20FBF76CFD19
+:10E250007F1EFFB2F0D256F82500FCF7AFF924B1CB
+:10E260002220BDE8F0872320FBE70020F9E700002B
+:10E27000F89300206C0D01002DE9F0478946054612
+:10E280000324164E09E000BF56F825006421FCF770
+:10E2900023F928B10A20FBF747FD641EE4B2F3D24C
+:10E2A000C4B1DFF83C80022758F8250000680169F6
+:10E2B00048468847040005D00A20FBF735FD7F1E3D
+:10E2C000FFB2F1D256F82500FCF778F924B12220EC
+:10E2D000BDE8F0872320FBE70020F9E7F893002052
+:10E2E0006C0D01002DE9F047894605460324164EC2
+:10E2F00009E000BF56F825006421FCF7EDF828B1CD
+:10E300000A20FBF711FD641EE4B2F3D2C4B1DFF8BA
+:10E310003C80022758F825000068816A48468847F3
+:10E32000040005D00A20FBF7FFFC7F1EFFB2F1D2EC
+:10E3300056F82500FCF742F924B12220BDE8F08709
+:10E340002320FBE70020F9E7F89300206C0D010083
+:10E350002DE9F0470546DC4888460078854278D2AA
+:10E36000DFF8689359F82570002F72D0FC68002CF4
+:10E370006FD05FEA48704FF0000632D594F8A000E5
+:10E38000000621D5D4F89C0010B994F8960020B16D
+:10E390002846FFF753FC20B30AE094F8970000B337
+:10E3A00084F897602846FFF775FA48B1012807D02E
+:10E3B000012200212846FFF75BFDC4F89C6010E0B5
+:10E3C000284601F084F90CE0284601F078F940B9BC
+:10E3D0006078010605D500F07F0161702846FFF7DF
+:10E3E000A9FC5FEA887045D594F8A00001063ED4E8
+:10E3F000D4F89C1021B12846FFF752FC50B32EE010
+:10E4000094F8971059B184F897602846FFF764FA9A
+:10E4100008B1012823D1284601F04CF92AE0C0F3C5
+:10E420004111E1B101291AD110F01F0017D00128C4
+:10E4300002D0022813D10EE02846FBF719FD48B997
+:10E440002846FBF713FD28B9284600F041F908B922
+:10E4500005E04AE00EE02846FBF706FDF7E701225B
+:10E4600080212846FFF704FDC4F89C6002E028469E
+:10E4700001F032F95FEAC87037D02846C84659F82B
+:10E480002010C968A031FFF72DFF00282DD12846A4
+:10E49000FFF762FA0121B8B3012863D1D4F8A800CC
+:10E4A00018B9D4F8AC20002A5CD1B4F8A620F2B197
+:10E4B000C4F89800D4F8AC00C4F89C0084F8971015
+:10E4C00094F8A0301B0603D42846FFF7E9FB0AE0C6
+:10E4D000904205D27A7D521E104201D184F89610E6
+:10E4E0002846FFF7ABFB00283CD1BDE8F08794F845
+:10E4F000A0000006284603D4BDE8F04701F0DAB8D2
+:10E50000BDE8F04701F0E3B8B868C4F89800B4F883
+:10E51000A6007A8B904202D9C4F89C2001E0C4F88E
+:10E520009C0094F8A000C0F3411222B1012A7DD0D2
+:10E53000022A17D19BE094F8A1000C2812D2DFE840
+:10E5400000F00612AF14AF1A34AF3A505471284697
+:10E5500000F05EFD2CE02846FFF7E0F92846FFF7C3
+:10E560006DFBE0B39CE0002100E00121284600F0B3
+:10E57000A9FD98B994E058F82500C06880B3B0F8B8
+:10E58000A41069BBB0F8A61051BB90F8A010C90642
+:10E5900026D190F8A21041F0800141702846FFF783
+:10E5A000BDF9284601F086F868E0284600F00CFC2A
+:10E5B0000028D0D174E058F82500C06880B1B0F8C8
+:10E5C000A2206AB9B0F8A42052B9B0F8A620012A56
+:10E5D00066D190F8A020D20662D1021D1EE04AE06A
+:10E5E00040E0284600F0F4FDC3E758F82520CAB300
+:10E5F000D068B8B3B0F8A230A3BBB0F8A630012BF6
+:10E600004ED190F8A03003F01F03012B48D1B0F891
+:10E61000A430578ABB4243D252681A44C0E926212B
+:10E6200099E703E0284600F007FFA2E710F01F007B
+:10E6300036D0012802D0022832D114E02846FBF758
+:10E640001FFC58B92846FBF71DFC38B92846FBF7D4
+:10E6500015FC18B9284600F0FFF818B12846FFF756
+:10E660005DF90BE01CE02846FBF706FCF5E72846C1
+:10E6700000F074FC9CE7284601F029F894F8A0000B
+:10E6800000063FF532AFB4F8A60000283FF42DAFE6
+:10E690002846FFF705FB0028F8D00122802109E079
+:10E6A00094F8A0000006B4F8A60009D40028F4D01D
+:10E6B000012200212846FFF7DBFBC4F89C6014E729
+:10E6C0000028EAD1F4E70000680D01006C0D01009C
+:10E6D0002DE9F04107463B48007887426BD23A4823
+:10E6E00050F82750002D66D0EC688CB30026DFF878
+:10E6F000DC805CE0364850F8260040B3017EB94229
+:10E7000053D1B4F8A410C27E914202D0007F81425E
+:10E710004BD194F8A10041282CD007DC68B1022825
+:10E7200017D020281BD040283FD11CE082282AD0B7
+:10E7300086282DD0882838D130E0B4F8A61030468D
+:10E74000FDF732FE2FE0384600F0B4FFB0B32CE006
+:10E7500031E0B4F8A2103046FDF744FE23E0304625
+:10E76000FDF75CFE1FE0B4F8A2203046A968FEF772
+:10E7700023FB18E0B4F8A630B4F8A2103046AA681B
+:10E78000FEF742FB0FE03046A968FEF76FFB0AE098
+:10E79000A86801683046FEF797FB04E0A868018886
+:10E7A0003046FEF749FB0028CDD1761CF6B298F82A
+:10E7B000000086429ED30020BDE8F081FFE70120E3
+:10E7C000FAE70000680D01006C0D0100040D010066
+:10E7D000080D0100F0B51B4A127890422FD21A4A58
+:10E7E00052F82020D56855B30023DFF860C0184FD9
+:10E7F00022E000BF5CF82340227882421AD1002236
+:10E8000002EBC20604EB460696F804E0BEF1000FE8
+:10E810000CD095F8A2E07679B64507D10D4850F8AE
+:10E82000230050F8220008600120F0BD521CD2B233
+:10E83000042AE5D35B1CDBB23A789342DAD300209A
+:10E84000F0BD0000680D01006C0D0100640D0100B9
+:10E85000600D0100900C01002DE9FC5FC749804666
+:10E860000978884277D2C64951F82850002D72D0D5
+:10E87000EC68002CFBD000274FF0040B4FF002098E
+:10E88000DFF800A372E1C04850F82760002E6ED078
+:10E89000307E40456BD1B4F8A400F17E884202D0AE
+:10E8A000317F8842F6D194F8A100432876D01DDC50
+:10E8B000212874D00DDC03285AD005DC80B3012850
+:10E8C00032D00228E6D147E004285DD02028E1D1EB
+:10E8D00068E0402871D004DC22286FD02328D9D1E9
+:10E8E0008DE041281CD04228D4D1C2E0852874D0C4
+:10E8F0000EDC822872D006DC442870D080286FD0CD
+:10E900008128C7D1E6E083286BD08428C2D1FBE000
+:10E91000863805282BD2DFE800F09DF01FEFEE00CF
+:10E92000A868C4F898009FE000200090ADF80400AB
+:10E93000B4F8A61001AB6A463846FDF7F1FC002892
+:10E9400015D00099002906D0BDF80400002802D097
+:10E95000C4E9261012E07BE0D4F89C00022877D3AB
+:10E96000A868C4F898007FD9C4F89C907CE070E057
+:10E97000B4F8A2103846FDF7D1FC80E04046FFF71E
+:10E980005DF9002874D0EFE0B4F8A60000285FD14C
+:10E99000B4F8A2103846FDF7BFFC2BE07AE00EE099
+:10E9A000B0B3E1E0D4F89C00072851D3A868C4F8BC
+:10E9B000980059D94FF007003CE02AE012E03846B1
+:10E9C000FDF7C6FC002844D0A868C4F89800D4F825
+:10E9D0009C000728D2D9072089E09FE02DE062E063
+:10E9E00068E08CE0B4F8A60090BBB4F8A2103846FA
+:10E9F000FDF7FAFC68B3404600F05CFED0E7B4F8DF
+:10EA0000A60028BBB4F8A2103846FDF7CBFCF1E70E
+:10EA100012E0B4F8A200D4F89C1000EB4002B1EB75
+:10EA2000420F15D3A968C4F898101DD900EB400017
+:10EA30004FEA4000C4F89C0016E0D4F89C00062879
+:10EA400006D3A868C4F898000ED94FF00600F1E785
+:10EA500054E04FE0D4F89C0004284FD3A868C4F8D1
+:10EA6000980001D9C4F89CB04FF00100BDE8FC9FAC
+:10EA70006DE0B4F8A2103846AA68FEF7FBF8C8B3F8
+:10EA8000A868C4F89800D4F89C000228A2D9C4F859
+:10EA90009C9073E7B4F8A60080BBB4F8A210384687
+:10EAA000FEF7A0F9A6E7B4F8A2103846AA68FEF768
+:10EAB000F7F837E0716938466831FEF74FF9C8B1A9
+:10EAC00070696830C4F89800D4F89C001C28E0D91C
+:10EAD0001C200CE03846A968FEF70AF950B1A86876
+:10EAE000C4F89800D4F89C000628D2D90620C4F8AF
+:10EAF0009C0043E738E02EE024E01EE03BE038468F
+:10EB0000A968FEF707F9BAE7B4F8A60098BB7069E0
+:10EB100090F82A103846FEF7BBF96BE73846A9682B
+:10EB2000FEF70AF900B3A868C4F89800D4F89C006E
+:10EB30000428AED9C4F89CB020E73846A968FEF78F
+:10EB4000C5F89CE73846A968FEF782F897E7404683
+:10EB500000F0BDFD24E7B4F8A60060B9B4F8A21037
+:10EB60003846FEF70DF945E77F1CFFB29AF8000022
+:10EB70008742FFF488AE002078E70000680D0100AE
+:10EB80006C0D0100040D0100080D010070B50C466C
+:10EB90000546FEF755FA002805D121462846BDE86E
+:10EBA0007040FFF731BA70BD2DE9F0411C461546A3
+:10EBB0000E460746FEF744FA002807D123462A46A8
+:10EBC00031463846BDE8F041FFF7ACB9BDE8F08109
+:10EBD00070B50C460546FEF733FA08B1002070BD4B
+:10EBE00021462846BDE87040FFF768BA2DE9F0419C
+:10EBF0001D4616460C460746FEF722FA002808D1A5
+:10EC000044F080012B4632463846BDE8F041FFF71C
+:10EC100089B9BDE8F08100002DE9F05F0446FEF7F8
+:10EC20000FFA050078D15C4850F82400C76838789E
+:10EC300010B10020BDE8F09F2046FFF7DDFA5749EC
+:10EC400001EB840108602046FFF7CEFA544941F8F1
+:10EC50002400B0213846F1F7ADFCDFF84CA1DFF815
+:10EC60004491DFF848B19AF8000059F8241004FBE9
+:10EC700000F639B9002221461046FBF763FC49F83B
+:10EC8000240078B3002510E005EB460000F0FF08F3
+:10EC90005BF8280038B92A4621460120FBF752FCD0
+:10ECA0004BF82800F0B16D1CEDB29AF80000B5EBFE
+:10ECB000400FE9D33E4850F82400426A3AB1364842
+:10ECC00050F82400C18A11B11046F1F773FC39489D
+:10ECD00050F8240000B180472046FAF755FF0500A0
+:10ECE00023D102E0FFE712251FE0334D55F8240041
+:10ECF00030B921460020FBF76BFC45F8240060B1D9
+:10ED00002E4850F824202E4850F824102046FFF7B3
+:10ED10007BFA050009D102E03BE010250EE002215C
+:10ED20002046FFF7A9FA050012D0234F57F8240018
+:10ED300020B1FBF75DFD002047F824002046FAF7DC
+:10ED400035FF204850F8240000B18047002712E02A
+:10ED5000012038701DE000BF07EB460000F0FF08FF
+:10ED60005BF8281029B10846FBF720FC00204BF87F
+:10ED700028007F1CFFB29AF80000B7EB400FEBD3DE
+:10ED800059F824004E4620B1FBF710FC002046F84D
+:10ED9000240028464EE700006C0D0100FC93002083
+:10EDA000E4820020F8930020700D0100D093002031
+:10EDB00018010020CCFF00008C930020F80B01000C
+:10EDC000F40B0100DCFF00002DE9F0415F490978F8
+:10EDD000884273D25E4951F82060002E6ED0F568EB
+:10EDE000002D6BD0B5F8A610002967D095F8A010BB
+:10EDF000584C11F01F0102D001295FD186E0B5F80F
+:10EE0000A2205549130A082B58D2DFE803F09004DA
+:10EE10001D5890900E3F12F0FF0F4FD151F8200077
+:10EE20004068C5F8980012206EE0727C002A7ED0FF
+:10EE300095F8952051F8200022B1C068C5F89800D7
+:10EE40000A2061E08068F9E7737C002B95F8953023
+:10EE500007D03BB151F82000406920600020D2B2B9
+:10EE60000BE05BBB51F820000069F6E721680B78E6
+:10EE700013B14B8819442160401C8242F6D12068AE
+:10EE80000178D9B1C5F8980040883DE0737CABB1FA
+:10EE900095F8953051F8200023B1C069206000201A
+:10EEA000D2B208E08069F9E721680B7813B14B888A
+:10EEB00019442160401C8242F6D1E0E737E0D2B22B
+:10EEC000032A05D151F820305B6A0BB11F782FB9A6
+:10EED000EE2A05D151F820309B6A0BB123600DE07A
+:10EEE00051F82000006A2060002005E023681978AE
+:10EEF00009B119442160401C8242F7D12068017891
+:10EF0000A9B1C5F898000078606009E0114A121DA7
+:10EF1000111FFAF7AFFF00280AD02068C5F8980043
+:10EF2000B5F8A6006168884204D3084603E00020D3
+:10EF3000BDE8F0816060C5F89C00717D491E01420A
+:10EF400002D1012085F896000120F1E7680D01004B
+:10EF50006C0D0100000000201801002070B5284948
+:10EF60000978884220D2274951F82060E6B1F46838
+:10EF7000D4B194F8A110327E914215D1B4F8A21008
+:10EF8000090A11D1B4F8A61071B194F8A0101E4D61
+:10EF900011F01F0102D0012906D10EE0B4F8A4102F
+:10EFA000042903D005290CD0002070BD174951F861
+:10EFB0002000C06A80B1A8600AE0B4F8A410052956
+:10EFC0000AD111490831FFF705FC0028EDD0A868E7
+:10EFD000C4F898000068E860B4F8A600E9688842C0
+:10EFE00001D3084600E0E860C4F89C00717D491E2A
+:10EFF000014202D1012084F89600012070BD00007A
+:10F00000680D01006C0D01000000002018010020B7
+:10F01000F0B52A49097888424ED2294951F8202072
+:10F02000F2B3D068002846D0926800F19801BAB3D4
+:10F03000B0F8A230A3BBB0F8A630022B3CD190F8B8
+:10F04000A0304FF0020613F01F0305D00024012B5F
+:10F0500009D0022B30D110E0B0F8A42002BB801CF4
+:10F06000C1E9000626E00379D3B190F8A43090F806
+:10F070009400834220D2147019E090F8A430102735
+:10F0800003F08F0505F00F0307EAD5071F4401239E
+:10F09000BB4007790FB92D070ED185681D4200E0EE
+:10F0A0000AE009D0C068184000D0012010705470E8
+:10F0B000C1E900260120F0BD0020F0BD680D01006F
+:10F0C0006C0D01002DE9F04107463D48007887426C
+:10F0D00065D23C4850F82700C468002C5FD0B4F8D3
+:10F0E000A600E8BB94F8A00010F01F0004D001288F
+:10F0F00055D0022853D117E0B4F8A20001284ED110
+:10F1000041B1314850F8270000B18047608840F095
+:10F11000020007E02D4850F8270000B180476088C2
+:10F1200020F00200608048E094F8A400102200F073
+:10F130008F0606F00F0002EAD6021044012522795C
+:10F1400085406AB1A2682A4229D0B4F8A220A2BBA5
+:10F15000320724D0C1B104EB8000406930B100E037
+:10F160001DE031463846FEF74FFFC0B90122314657
+:10F170003846FEF77DFE90B9E06831462843E060EE
+:10F180003846FAF77FFF18E0D4E903010840284227
+:10F1900013D1002231463846FEF76AFE10B1002036
+:10F1A000BDE8F081E0683146A843E0603846FAF7F0
+:10F1B00059FE31463846FAF735FF0120F0E70000E6
+:10F1C000680D01006C0D0100B4FF0000B0FF0000ED
+:10F1D0002DE9FC5F94498046097888427ED29349A4
+:10F1E00051F82870002F79D0FC68002CFBD0B4F8BF
+:10F1F000A400002872D1B4F8A6000028FAD100902B
+:10F2000094F8A00010F01F0FF4D194F8A2004FF072
+:10F21000000A10F0FF0F4FF0010B4FF4803977D048
+:10F22000797C8348002994F8951004D029B150F8CE
+:10F23000280045699DE00029DCD150F828000569C7
+:10F2400097E06878022804D0042868D0052863D1A4
+:10F2500068E0697994F8A20081425ED129797A8ABE
+:10F2600091423BD82071287984F89400002003E073
+:10F270007A6802F800A0401C798A8142F8D80126F9
+:10F28000A1680BFA06F0014213D004EB8600406936
+:10F2900028B131464046FEF7B7FE00281ED1314660
+:10F2A0004046FEF747FF002818D131464046FAF79E
+:10F2B000E9FEA16809FA06F0014218D004EB8600C5
+:10F2C000406D30B146F080014046FEF79DFE0028BB
+:10F2D00004D146F080014046019100E075E0FEF760
+:10F2E00029FF002871D140460199FAF7CBFE761C20
+:10F2F000F6B2102EC4D34FF00110C4E9020AC4F8CC
+:10F3000010A0E8794006608803D540F0010002E0D3
+:10F3100034E020F00100608029E0688828E0E87887
+:10F32000009024E0009810BBA878102200F08F0114
+:10F3300001F00F0002EAD10210440BFA00F604EBD0
+:10F340008000406918B14046FEF75EFEE8BBA06849
+:10F350003043A060E878AB8800F00302A97840460B
+:10F36000FEF71EFD88BBA9784046FAF75BFE2878B9
+:10F370000544287800287FF464AF41E0564684F8BD
+:10F3800004A001254FEA0B07A16807FA05F0014226
+:10F3900011D004EB8500406920B129464046FEF7B4
+:10F3A00033FE90B929464046FEF7C4FE68B92946A7
+:10F3B0004046FAF767FEA16809FA05F0014216D047
+:10F3C00004EB8500406D38B100E02BE045F0800192
+:10F3D0004046FEF719FE28BB45F080018A464046AC
+:10F3E000FEF7A8FEF0B951464046FAF74BFE6D1CF9
+:10F3F000EDB2102DC8D34FF00110C4E9020626610A
+:10F40000207994F8A21088420CD121794046FBF76C
+:10F41000DDF8084850F8281009B120798847012004
+:10F42000BDE8FC9F0020FBE7680D01006C0D0100AA
+:10F4300018010020ACFF00002DE9FE4F074661488F
+:10F44000007887427ED2604850F82760002E79D03D
+:10F45000F468002C76D0B4F8A600002872D1834658
+:10F46000CDF808B094F8A000D84600F01F00DA46A6
+:10F47000D946012866D12079002871D0717C534883
+:10F48000002994F8951004D029B150F82700456957
+:10F490008CE0002956D150F82700056986E068788D
+:10F4A000022804D0042808D005287DD11FE06879FF
+:10F4B0002179884278D0688877E0B4F8A400718A0E
+:10F4C00088426AD295F8028095F803A04FF0000BAD
+:10F4D000404569D1B4F8A210514565D170684FF02C
+:10F4E000010910F80810029100F808A05CE0B4F8D7
+:10F4F000A410414558D1A878102200F08F0000F0E8
+:10F500000F01009002EAD0000844012181400191DE
+:10F51000B4F8A220524524D1A168019A04EB8000DE
+:10F520001143A160E168019A9143E160406920B113
+:10F5300038460099FEF768FD20B9E878AB8800F0FE
+:10F54000030200E029E0A9783846FEF729FC20BB39
+:10F5500038460099FAF766FD01994BEA010B23E062
+:10F560001CE0029A92451FD1019A1BEA020F1BD19F
+:10F57000A16804EB80009143A160E168019A914386
+:10F58000E160406920B138460099FEF73DFD20B9A1
+:10F5900038460099FEF7CEFD10B10020BDE8FE8F81
+:10F5A00038460099FAF76EFD287805442878002837
+:10F5B0007FF475AFB9F1000F01D084F8058048469B
+:10F5C000ECE70000680D01006C0D0100180100203F
+:10F5D00070B5084D0446AF2155F82400C068401CA2
+:10F5E000F0F7E8FF55F82400017CC068C1F38011F2
+:10F5F000418070BD6C0D01002DE9F0410F460446BD
+:10F60000FDF71EFD050022D1124850F82460A6B176
+:10F61000114850F82400446A8CB13846F0F7D5FF01
+:10F62000F18A814200D20846022202EB4002227097
+:10F630000322A11C6270002207E0212507E0FF25BC
+:10F6400005E0BB5C21F8023B521C8242F9D32846FC
+:10F65000BDE8F0816C0D010018010020024A52F84B
+:10F660002000FBF783B800008C930020F0B40E4D0F
+:10F6700001F00F03102455F8205004EAD101194479
+:10F68000ED68142606EB810100246C50190341EA51
+:10F690000221064A127800FB0230054A52F8200087
+:10F6A0000068F0BCFBF762B86C0D0100700D010042
+:10F6B0001C01002000231A468021FEF733BC10B540
+:10F6C0008021FEF7FBFC002800D0222010BD002383
+:10F6D0001A461946FEF726BC10B504460021FEF76F
+:10F6E000EDFC08B1222010BD064850F82400C06887
+:10F6F000406D0028F7D02046BDE810408021FEF77D
+:10F7000083BC00006C0D01000FB47CB50C0009AD8A
+:10F7100001D0611E00E00021CDE90001064B6A46E0
+:10F720002946089800F01AF8002C02D0009A00210F
+:10F7300011707CBC5DF814FBBFFB000002E008C840
+:10F74000121F08C1002AFAD170477047002001E05B
+:10F7500001C1121F002AFBD1704700002DE9FF4FA5
+:10F760008DB00F460546002606E025280BD0DDE9C2
+:10F770000F1290476D1C761C28780028F5D111B027
+:10F780003046BDE8F08F0024A246A1460122EC4994
+:10F7900000E0044315F8013F203B02FA03F0084261
+:10F7A000F7D128782A2810D06FF02F022878A0F1FE
+:10F7B0003001092914D80AEB8A0102EB410144F017
+:10F7C000020400EB010A6D1CF0E701CF5FEA000ABA
+:10F7D00003D544F40054CAF1000A44F002046D1C3D
+:10F7E00028782E2817D115F8010F44F004042A2890
+:10F7F0000ED06FF02F022878A0F1300109290AD825
+:10F8000009EB890102EB410100EB01096D1CF2E7F4
+:10F8100057F8049B6D1C28786C280FD006DC4C2808
+:10F8200017D068280DD06A2814D104E0742810D0AD
+:10F830007A280FD10DE044F400140AE044F4801457
+:10F8400001E044F440146978814202D104F5801447
+:10F850006D1C6D1C2A786E2A1FD00CDC632A31D0F7
+:10F8600004DC002A8BD0582A11D1A3E0642A68D086
+:10F87000692A0CD165E0732A2ED004DC6F2A73D07C
+:10F88000702A04D19BE0752A6FD0782A6ED010467A
+:10F89000DDE90F129047761C50E1C4F302500228B4
+:10F8A00006D0032809D0042801CF09D0066045E11D
+:10F8B00001CFF117C0E9006140E101CF06803DE1D1
+:10F8C00006703BE117F8040B8DF8000000208DF85E
+:10F8D0000100EB46012003E057F804BB4FF0FF3076
+:10F8E00061074FF0000102D40DE008F101018846E4
+:10F8F00049450FDA8045F8DB1BF808100029F4D1E0
+:10F9000008E008F1010188468142FADB1BF8081083
+:10F910000029F6D1DDE90F23AAEB08008146214634
+:10F9200000F036F9304400EB080604E0DDE90F1280
+:10F930001BF8010B9047B8F10108F7D22146484661
+:10F94000F7E00A21C4F302534FF0000B0891022B99
+:10F9500004D001CFC117032B09D00AE0FF1D27F007
+:10F960000707F7E8020108E032E01FE020E000B2FC
+:10F97000C117042B01D140B2C117031E71F100035E
+:10F9800007DA4FF0000CD0EB0C006CEB01012D23DB
+:10F9900002E0230504D52B238DF82430012303E056
+:10F9A000E30701D02023F7E7984658E00A2110E04A
+:10F9B00010210EE010204FF0000B08900CE01021F9
+:10F9C0004FF0000B44F004044FF00809089103E0E5
+:10F9D00008214FF0000B0891C4F30253022B04D00E
+:10F9E00001CF0021032B06D006E0FF1D27F00707FB
+:10F9F000F7E8020103E080B2042B00D1C0B24FF05F
+:10FA0000000823072BD5702A07D0DDF820C08CF022
+:10FA1000100C5CEA0B0C05D00EE040238DF824306E
+:10FA2000012308E050EA010306D030238DF824308A
+:10FA30008DF8252002239846DDF820C08CF0080CB4
+:10FA40005CEA0B0C0BD150EA010301D1630706D528
+:10FA500030238DF824304FF00108A9F10109582A0C
+:10FA600004D038A20B9208AA0A920BE03AA2F9E756
+:10FA70005B46089AF0F754FD0B9B9B5C0A9A521E5A
+:10FA80000A92137050EA0102F2D10A98ADEB00001D
+:10FA900000F1200B600702D524F4803401E04FF020
+:10FAA0000109D94502DDA9EB0B0000E0002000EBC5
+:10FAB0000B0141440890AAEB010AE00306D4DDE9FA
+:10FAC0000F232146504600F063F806444FF000092A
+:10FAD00008E009A911F80900DDE90F12904709F1C2
+:10FAE0000109761CC145F4DBE0030CD5DDE90F23E9
+:10FAF0002146504600F04CF8064404E0DDE90F12C0
+:10FB000030209047761C0899481E08900029F5DCA3
+:10FB100008E00A980A990078491C0A91DDE90F1259
+:10FB20009047761CBBF10001ABF1010BF1DC2146E3
+:10FB30005046DDE90F2300F019F806446D1C1BE662
+:10FB400009280100303132333435363738396162B3
+:10FB50006364656600000000303132333435363777
+:10FB60003839414243444546000000002DE9F04148
+:10FB7000044600251E461746880404D405E039468D
+:10FB80002020B0476D1C641EF9D52846BDE8F081E1
+:10FB90002DE9F041044600251E469046C80301D5D4
+:10FBA000302700E02027880404D505E04146384688
+:10FBB000B0476D1C641EF9D52846BDE8F0814A683F
+:10FBC000002A06D00A68531C0B6010704868401E5B
+:10FBD0004860704701000000E803000005000000D5
+:10FBE000584D002020000000000000000000000030
+:10FBF0000000000000000000000000000000000005
+:10FC0000D84D00200010000000000000000000009F
+:10FC100000000000000000000000000000000000E4
+:10FC2000000000000000000000040000FCFF0000D5
+:10FC300038000100FDB50000DDB500002000010026
+:10FC400004000000105F0020FC61002000000000A4
+:10FC500000000000000000000000000000000000A4
+:10FC600000000000605E0020105F00200000000027
+:10FC700000000000DC5D0020105E0020000000009D
+:10FC8000010000000200000003000000040000006A
+:10FC90000000000000000000000000000000000064
+:10FCA0000000000000000000000000000000000054
+:10FCB000000000000000000000000000050000003F
+:10FCC0000600000007000000000000000000000027
+:10FCD0000000000000000000000000000000000024
+:10FCE0001800000000000000000000003D9500002A
+:10FCF00035950000998400005D850000B184000006
+:10FD000009850000BD840000558500006D84000059
+:10FD1000FD830000F1830000298400004995000064
+:10FD2000399500003D950000359500001D860000C6
+:10FD3000E1860000358600008D86000041860000C7
+:10FD4000D9860000F18500008185000075850000DE
+:10FD5000AD850000499500003995000011A3000011
+:10FD6000E9A200001DA3000001A8000039A30000C3
+:10FD7000C59D0000ED9D0000159E0000299E00001D
+:10FD8000519E00008DA40000899E00004DA200003D
+:10FD9000C59F0000E5A0000021A2000081A1000095
+:10FDA000EDA20000000000000000000000000000C4
+:10FDB0000000000000000000000000002000000023
+:10FDC00000000000000000007600010000000000BC
+:10FDD000105F0020440000000062002000020000CC
+:10FDE00018000000000000000000000000020000F9
+:10FDF000200000000002000020000000507F2000D2
+:10FE000008000000010000000000000000000000E9
+:10FE10000058021080D1F008020000000060084085
+:10FE200000700840008008400090084000A0084092
+:10FE30000060094000700940008009400E000F007A
+:10FE400010001100003C104000001040644C0020E5
+:10FE500000000000083C104040001040784C00209A
+:10FE600040000000103C1040800010408C4C0020EE
+:10FE700080000000183C104080041040A04C00207E
+:10FE800080040000203C104080081040B44C00204A
+:10FE900080080000283C1040800C1040C84C002016
+:10FEA000800C0000303C104080101040DC4C0020E2
+:10FEB00080100000383C104080141040F04C0020AE
+:10FEC00080140000403C104080181040044D002079
+:10FED00080180000483C1040801C1040184D002045
+:10FEE000801C0000403C104080201040044D002049
+:10FEF00080200000483C104080241040184D002015
+:10FF000080240000B5990000019A0000059A0000C5
+:10FF1000099A0000259A0000659A0000959A000051
+:10FF2000999A00009D9A0000F59A00002D9B000010
+:10FF3000319B0000359B0000399B00003D9B000079
+:10FF4000419B0000459B0000499B00004D9B000029
+:10FF5000519B0000559B0000599B00005D9B0000D9
+:10FF6000619B0000659B0000699B00006D9B000089
+:10FF7000719B0000759B0000799B00007D9B000039
+:10FF8000819B0000859B0000D19B0000D59B000059
+:10FF9000D99B0000DD9B0000C99C0000F99C00007B
+:10FFA000FD9C0000219D0000259D0000899D000012
+:10FFB0008D9D0000919D0000959D0000999D000081
+:10FFC0009D9D0000A19D0000A99D0000AD9D000029
+:10FFD000B19D0000B59D0000B99D0000BD9D0000D1
+:10FFE000C19D000000000000E19B0000B59C0000E6
+:10FFF000C19C0000C59C0000000000000000000043
+:020000040001F9
+:1000000000000000545F0020440000000064002055
+:1000100000020000010000000000000000000000DD
+:100020000000000000000000DC5D00203400000043
+:10003000105E0020500000000000000000000000E2
+:10004000985F0020440000000076002000020000BD
+:10005000280000000000000000000000007A0020DE
+:10006000007C00200B010C010D010E010F0110019D
+:10007000110112011C02434443305F41434D5F555F
+:100080004152545F746F5F5553425F5468726561AB
+:1000900064002128284E554C4C203D3D2062617360
+:1000A0006529207C7C20284E554C4C203D3D206409
+:1000B00061746129290069203C202875696E7433B8
+:1000C000325F742946534C5F464541545552455F53
+:1000D000534F435F55534152545F434F554E540065
+:1000E00066736C5F75736172742E63004E554C4C71
+:1000F00020213D2062617365006368616E6E656CEE
+:10010000203C202875696E7433325F742946534C45
+:100110005F464541545552455F444D415F4E554DF4
+:100120004245525F4F465F4348414E4E454C536EE9
+:1001300028626173652900433A2F4B65696C5F76CD
+:10014000352F41524D2F5041434B2F4E58502F4C7D
+:10015000504335355336395F4446502F31332E31B5
+:100160002E302F647269766572732F66736C5F64CC
+:100170006D612E68006461746100433A2F4B6569BC
+:100180006C5F76352F41524D2F5041434B2F4E58C7
+:10019000502F4C504335355336395F4446502F313C
+:1001A000332E312E302F636F6D706F6E656E7473EA
+:1001B0002F756172742F66736C5F61646170746512
+:1001C000725F75736172742E63006C656E6774681C
+:1001D00000433A2F4B65696C5F76352F41524D2FA6
+:1001E0005041434B2F4E58502F4C504335355336CA
+:1001F000395F4446502F31332E312E302F647269CF
+:10020000766572732F66736C5F636C6F636B2E63BE
+:100210000066616C736500433A2F4B65696C5F76CD
+:10022000352F41524D2F5041434B2F4E58502F4C9C
+:10023000504335355336395F4446502F31332E31D4
+:100240002E302F647269766572732F66736C5F63EC
+:100250006F6D6D6F6E5F61726D2E6300284E554C31
+:100260004C20213D2068616E646C65292026262083
+:10027000286368616E6E656C203C202875696E7419
+:1002800033325F742946534C5F46454154555245BD
+:100290005F444D415F4E554D4245525F4F465F436F
+:1002A00048414E4E454C536E2862617365292900C2
+:1002B00068616E646C652D3E6368616E6E656C206E
+:1002C0003C202875696E7433325F742946534C5F45
+:1002D000464541545552455F444D415F4E554D4250
+:1002E00045525F4F465F4348414E4E454C536E2842
+:1002F00068616E646C652D3E626173652900284EED
+:10030000554C4C20213D2068616E646C6529202687
+:100310002620284E554C4C20213D20636F6E666987
+:1003200067290028786665725F636F756E74203C7C
+:100330003D20444D415F4D41585F5452414E53461C
+:1003400045525F434F554E542920262620283055CC
+:100350004C203D3D207472616E7366657242797403
+:100360006573202520627974655769647468290073
+:10037000284E554C4C20213D2073726341646472B9
+:1003800029202626202830554C203D3D2028287540
+:10039000696E7433325F74292875696E7433325F05
+:1003A00074202A297372634164647229202520789D
+:1003B0006665726366672D3E627974655769647419
+:1003C000682900284E554C4C20213D20647374410F
+:1003D00064647229202626202830554C203D3D207B
+:1003E000282875696E7433325F74292875696E74B4
+:1003F00033325F74202A2964737441646472292043
+:100400002520786665726366672D3E62797465574C
+:1004100069647468290028786665726366672D3E92
+:10042000737263496E63203C3D202875696E743891
+:100430005F74296B444D415F416464726573734915
+:100440006E7465726C65617665347857696474683A
+:10045000292026262028786665726366672D3E640B
+:100460007374496E63203C3D202875696E74385F53
+:1004700074296B444D415F41646472657373496EC6
+:100480007465726C6561766534785769647468293F
+:1004900000696E7374616E6365203C204152524165
+:1004A000595F53495A4528735F646D6142617365B2
+:1004B00073290028282875696E7433325F742928DF
+:1004C00075696E7433325F74202A296E65787444BE
+:1004D00065736329202620282875696E7433325F7E
+:1004E000742946534C5F464541545552455F444D2F
+:1004F000415F4C494E4B5F44455343524950544F22
+:10050000525F414C49474E5F53495A45202D203197
+:10051000554C2929203D3D2030554C00433A2F4B66
+:1005200065696C5F76352F41524D2F5041434B2FFB
+:100530004E58502F4C504335355336395F44465052
+:100540002F31332E312E302F647269766572732FFE
+:1005500066736C5F646D612E63004E554C4C2021B8
+:100560003D2068616E646C6500735F666C657863DE
+:100570006F6D6D49727148616E646C65725B696E16
+:100580007374616E63655D20213D204E554C4C00B7
+:1005900069203C202875696E7433325F7429465394
+:1005A0004C5F464541545552455F534F435F464C5F
+:1005B0004558434F4D4D5F434F554E5400433A2FDE
+:1005C0004B65696C5F76352F41524D2F5041434B3F
+:1005D0002F4E58502F4C504335355336395F4446D3
+:1005E000502F31332E312E302F647269766572733D
+:1005F0002F66736C5F666C6578636F6D6D2E63003C
+:10060000706F7274203C2041525241595F53495AD5
+:100610004528735F6770696F436C6F636B4E616DE4
+:10062000652900433A2F4B65696C5F76352F41523F
+:100630004D2F5041434B2F4E58502F4C5043353582
+:100640005336395F4446502F31332E312E302F64CC
+:100650007269766572732F66736C5F6770696F2E4F
+:10066000630056455253494F4E305F464C41534804
+:100670005F4150495F545245450056455253494FDA
+:100680004E315F464C4153485F4150495F5452459B
+:100690004500433A2F4B65696C5F76352F41524DCB
+:1006A0002F5041434B2F4E58502F4C50433535530C
+:1006B00036395F4446502F31332E312E302F64723D
+:1006C00069766572732F66736C5F6961702E630063
+:1006D000433A2F4B65696C5F76352F41524D2F5051
+:1006E00041434B2F4E58502F4C50433535533639DC
+:1006F0005F4446502F31332E312E302F647269768D
+:100700006572732F66736C5F72657365742E630018
+:10071000626974506F73203C2033327500786665CF
+:10072000722D3E6461746120213D204E554C4C0079
+:1007300068616E646C6520213D204E554C4C007004
+:100740006172616D20213D204E554C4C00786665EC
+:100750007220213D204E554C4C00786665722D3E2E
+:100760006461746153697A6520213D2030550043EE
+:100770003A2F4B65696C5F76352F41524D2F5041B2
+:10078000434B2F4E58502F4C504335355336395F1D
+:100790004446502F31332E312E302F6472697665E6
+:1007A00072732F66736C5F75736172745F646D61D1
+:1007B0002E63004E554C4C20213D2068616E646CC8
+:1007C000652D3E7278446D6148616E646C65004EC3
+:1007D000554C4C20213D2068616E646C652D3E7443
+:1007E00078446D6148616E646C65004E554C4C20D8
+:1007F000213D20636F756E7400555342445F43750D
+:1008000073746F6D436C617373305F4550315F5427
+:10081000687265616400555342445F437573746F39
+:100820006D436C617373305F4550325F546872651D
+:10083000616400555342445F437573746F6D436C3C
+:10084000617373305F4550335F5468726561640053
+:10085000555342445F437573746F6D436C6173739A
+:10086000305F4550345F546872656164005553428F
+:1008700044305F436F72655F546872656164005510
+:100880005342445F434443305F42756C6B5F54682E
+:100890007265616400555342445F434443305F498D
+:1008A0006E745F5468726561640000005254582091
+:1008B00056352E352E33000000200840050000007C
+:1008C0000020084004000000006008406D85000022
+:1008D0000020084009000000002008400800000037
+:1008E00000900840F18600000902690003010080C1
+:1008F000FA0904000003FF0000040705010240009C
+:100900000007058102400000070582024000000840
+:100910000B010202020105090401000102020005A7
+:100920000524001001052401030104240206052406
+:100930000601020705830310000209040200020AEF
+:10094000000006070504024000000705840240007D
+:10095000000000000902690003010080FA09040098
+:100960000003FF00000407050102000200070581E3
+:100970000200020007058202000200080B010202C9
+:10098000020105090401000102020005052400100E
+:1009900001052401030104240206052406010207BF
+:1009A00005830310000209040200020A0000060782
+:1009B0000504020002000705840200020000000096
+:1009C0006D08010000000000DC5F00204400000012
+:1009D000006600200004000020000000000000006D
+:1009E000000000005CFD00007081002040820020BB
+:1009F0007481002080010300064010000100800087
+:100A000012010002EF02014051C20BF0000101028D
+:100A1000030100000A06000200000040010000007F
+:100A20000A06000200000040010000000705000067
+:100A30004000000028000000000104000100000048
+:100A400000000000000157494E55534200000000CD
+:100A500000000000000000000000000012034D0034
+:100A60005300460054003100300030000100000007
+:100A70000907690003010080FA0904000003FF0070
+:100A800000040705010200020007058102000200C0
+:100A900007058202000200080B010202020105099B
+:100AA00004010001020200050524001001052401D3
+:100AB000030104240206052406010207058303102E
+:100AC000000209040200020A0000060705040200F1
+:100AD0000200070584020002000000000907690007
+:100AE00003010080FA0904000003FF000004070569
+:100AF0000102400000070581024000000705820254
+:100B0000400000080B010202020105090401000176
+:100B1000020200050524001001052401030104243C
+:100B200002060524060102070583031000020904DA
+:100B30000200020A00000607050402400000070543
+:100B400084024000000000000403090428034B0055
+:100B5000450049004C0020002D00200054006F008B
+:100B60006F006C00730020004200790020004100FB
+:100B700052004D0012034D00430055002D004C0063
+:100B800049004E004B001A033000300030003100A5
+:100B900041003000300030003000300030003000C4
+:100BA00026034D00430055002D004C0049004E0027
+:100BB0004B00200043004D005300490053002D001E
+:100BC00044004100500016035500530042005F00EE
+:100BD00043004400430030005F003000160355001E
+:100BE000530042005F0043004400430030005F00B8
+:100BF00031000000A1990000A99900008E000000BA
+:100C00000001050001008400000001000000280030
+:100C100044006500760069006300650049006E00CD
+:100C200074006500720066006100630065004700A3
+:100C300055004900440000004E0000007B004300C6
+:100C400044004200330042003500410044002D00C2
+:100C500032003900330042002D00340036003600E7
+:100C600033002D0041004100330036002D003100DB
+:100C700041004100450034003600340036003300A6
+:100C80003700370036007D00000000000000000043
+:100C90000801002000000000000000000002000029
+:100CA0002000000000020000200000000002000000
+:100CB000200000000002000020000000008D002045
+:100CC000F4820020E882002000910020008B0020A8
+:100CD0000493002000010001020304040004000842
+:100CE00010001000400000020000000000000000A2
+:100CF00000000000000000000000000000000000F4
+:100D00000000000001000000BC0C0100950801007B
+:100D10007F0801000000060001000101018101823D
+:100D200000820003008300040084000100010081B0
+:100D3000000200820003008300040084000200011E
+:100D4000008100020082000300830004008400038D
+:100D5000000100810002008200030083000400847F
+:100D600001000000140D010001000000E409010071
+:100D700005000000000E010000000020000200003D
+:100D80003CF700000010010000020020009200006B
+:100D90004CF70000F0D095030000000000000000B8
+:100DA0000000000000000000000000000000000043
+:100DB0000000000000000000000000000000000033
+:100DC0000000000000000000000000000000000023
+:100DD0000000000000000000000000000000000013
+:100DE0000000000000000000000000000000000003
+:100DF00000000000000000000000000000000000F3
+:100E000000000000000000000000000000000000E2
+:100E100000000000000000000000000000000000D2
+:100E20000000000000000000001BB70001000000EF
+:100E3000AC080100D3B3FB0200000000000000007A
+:100E400000000000000000000000000000000000A2
+:100E50000000000000000000000000000000000092
+:100E60000000000000000000000000000000000082
+:100E70000000000000000000000000000000000072
+:100E80000000000000000000000000000000000062
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0000000000000000000000000000000000022
+:100ED000000000000024F4002C0A0100000A0100B8
+:100EE000140A0100200A0100E80801005409010069
+:100EF000700A0100DC0A0100480B0100C0820020DA
+:100F00005C0A0100340A0100FC0B01008A0C01009C
+:100F10008B0C01008C0C0100D80000208C93002069
+:100F20009493002098930020889300200093002041
+:100F3000C8080100B8080100E423002004240020B0
+:100F4000142400200000000000000000E008010060
+:100F5000D008010024240020442400205424002030
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000000000000000000000000061
+:100F90000000000000000000000000000000000051
+:100FA0000000000000000000000000000000000041
+:100FB0000000000000000000000000000000000031
+:100FC0000000000000000000000000000000000021
+:100FD0000000000000000000000000000000000011
+:100FE0000000000000000000000000000000000001
+:100FF00000000000000000000000000000000000F1
+:0400000500000201F4
+:00000001FF

+ 13 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/README.md

@@ -0,0 +1,13 @@
+CMSIS-DAP v2 firmware for NXP MCU-LINK debug probe.
+
+CMSIS-DAP v2 uses USB bulk endpoints for the communication with the host PC and is therefore faster.
+Optionally, support for streaming SWO trace is provided via an additional USB endpoint.
+
+Instructions for programing CMSIS_DAP firmware on MCU-LINK:
+- download and install MCU-LINK_installer from https://www.nxp.com/design/microcontrollers-developer-resources/mcu-link-debug-probe:MCU-LINK
+- disconnect MCU-LINK from USB (J1), set "firmware update" jumper (J3), connect MCU-LINK to USB (J1)
+- open a Command Window
+- navigate to the MCU-LINK_installer installation (default C:\nxp\MCU-LINK_installer\) and go to the scripts sub-directory
+- copy pre-built firmware hex file ..\CMSIS\DAP\Firmware\Examples\MCU-LINK\Objects\CMSIS_DAP.hex to scripts directory
+- run the command: programm_CMSIS.cmd CMSIS_DAP.hex
+- follow the instructions in command window

+ 4 - 3
CMSIS/DAP/Firmware/Examples/LPC-Link2/V2/RTE/CMSIS/RTX_Config.c → CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/CMSIS/RTX_Config.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2017 ARM Limited. All rights reserved.
+ * Copyright (c) 2013-2021 Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -17,7 +17,7 @@
  *
  * -----------------------------------------------------------------------------
  *
- * $Revision:   V5.1.0
+ * $Revision:   V5.1.1
  *
  * Project:     CMSIS-RTOS RTX
  * Title:       RTX Configuration
@@ -40,7 +40,7 @@ __WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) {
   (void)object_id;
 
   switch (code) {
-    case osRtxErrorStackUnderflow:
+    case osRtxErrorStackOverflow:
       // Stack overflow detected for thread (thread_id=object_id)
       break;
     case osRtxErrorISRQueueOverflow:
@@ -56,6 +56,7 @@ __WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) {
       // Standard C/C++ library mutex initialization failed
       break;
     default:
+      // Reserved
       break;
   }
   for (;;) {}

+ 52 - 52
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/CMSIS/RTX_Config.h → CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/CMSIS/RTX_Config.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2020 Arm Limited. All rights reserved.
+ * Copyright (c) 2013-2021 Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -17,7 +17,7 @@
  *
  * -----------------------------------------------------------------------------
  *
- * $Revision:   V5.5.1
+ * $Revision:   V5.5.2
  *
  * Project:     CMSIS-RTOS RTX
  * Title:       RTX Configuration definitions
@@ -69,14 +69,14 @@
  
 //   </e>
  
-//   <o>ISR FIFO Queue 
+//   <o>ISR FIFO Queue
 //      <4=>  4 entries    <8=>   8 entries   <12=>  12 entries   <16=>  16 entries
 //     <24=> 24 entries   <32=>  32 entries   <48=>  48 entries   <64=>  64 entries
 //     <96=> 96 entries  <128=> 128 entries  <196=> 196 entries  <256=> 256 entries
 //   <i> RTOS Functions called from ISR store requests to this buffer.
 //   <i> Default: 16 entries
 #ifndef OS_ISR_FIFO_QUEUE
-#define OS_ISR_FIFO_QUEUE           16
+#define OS_ISR_FIFO_QUEUE           32
 #endif
  
 //   <q>Object Memory usage counters
@@ -143,10 +143,10 @@
 #endif
  
 //   <q>Stack overrun checking
-//   <i> Enables stack overrun check at thread switch.
+//   <i> Enables stack overrun check at thread switch (requires RTX source variant).
 //   <i> Enabling this option increases slightly the execution time of a thread switch.
 #ifndef OS_STACK_CHECK
-#define OS_STACK_CHECK              1
+#define OS_STACK_CHECK              0
 #endif
  
 //   <q>Stack usage watermark
@@ -156,8 +156,8 @@
 #define OS_STACK_WATERMARK          0
 #endif
  
-//   <o>Processor mode for Thread execution 
-//     <0=> Unprivileged mode 
+//   <o>Processor mode for Thread execution
+//     <0=> Unprivileged mode
 //     <1=> Privileged mode
 //   <i> Default: Privileged mode
 #ifndef OS_PRIVILEGE_MODE
@@ -367,125 +367,125 @@
 //     <i> Recording levels for RTX components.
 //     <i> Only applicable if events for the respective component are generated.
  
-//       <h>Memory Management
+//       <e.7>Memory Management
 //       <i> Recording level for Memory Management events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_MEMORY_LEVEL 
-#define OS_EVR_MEMORY_LEVEL         0x01U
+//       </e>
+#ifndef OS_EVR_MEMORY_LEVEL
+#define OS_EVR_MEMORY_LEVEL         0x81U
 #endif
  
-//       <h>Kernel
+//       <e.7>Kernel
 //       <i> Recording level for Kernel events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_KERNEL_LEVEL 
-#define OS_EVR_KERNEL_LEVEL         0x01U
+//       </e>
+#ifndef OS_EVR_KERNEL_LEVEL
+#define OS_EVR_KERNEL_LEVEL         0x81U
 #endif
  
-//       <h>Thread
+//       <e.7>Thread
 //       <i> Recording level for Thread events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_THREAD_LEVEL 
-#define OS_EVR_THREAD_LEVEL         0x05U
+//       </e>
+#ifndef OS_EVR_THREAD_LEVEL
+#define OS_EVR_THREAD_LEVEL         0x85U
 #endif
  
-//       <h>Generic Wait
+//       <e.7>Generic Wait
 //       <i> Recording level for Generic Wait events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_WAIT_LEVEL 
-#define OS_EVR_WAIT_LEVEL           0x01U
+//       </e>
+#ifndef OS_EVR_WAIT_LEVEL
+#define OS_EVR_WAIT_LEVEL           0x81U
 #endif
  
-//       <h>Thread Flags
+//       <e.7>Thread Flags
 //       <i> Recording level for Thread Flags events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_THFLAGS_LEVEL 
-#define OS_EVR_THFLAGS_LEVEL        0x01U
+//       </e>
+#ifndef OS_EVR_THFLAGS_LEVEL
+#define OS_EVR_THFLAGS_LEVEL        0x81U
 #endif
  
-//       <h>Event Flags
+//       <e.7>Event Flags
 //       <i> Recording level for Event Flags events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_EVFLAGS_LEVEL 
-#define OS_EVR_EVFLAGS_LEVEL        0x01U
+//       </e>
+#ifndef OS_EVR_EVFLAGS_LEVEL
+#define OS_EVR_EVFLAGS_LEVEL        0x81U
 #endif
  
-//       <h>Timer
+//       <e.7>Timer
 //       <i> Recording level for Timer events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_TIMER_LEVEL 
-#define OS_EVR_TIMER_LEVEL          0x01U
+//       </e>
+#ifndef OS_EVR_TIMER_LEVEL
+#define OS_EVR_TIMER_LEVEL          0x81U
 #endif
  
-//       <h>Mutex
+//       <e.7>Mutex
 //       <i> Recording level for Mutex events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_MUTEX_LEVEL 
-#define OS_EVR_MUTEX_LEVEL          0x01U
+//       </e>
+#ifndef OS_EVR_MUTEX_LEVEL
+#define OS_EVR_MUTEX_LEVEL          0x81U
 #endif
  
-//       <h>Semaphore
+//       <e.7>Semaphore
 //       <i> Recording level for Semaphore events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_SEMAPHORE_LEVEL 
-#define OS_EVR_SEMAPHORE_LEVEL      0x01U
+//       </e>
+#ifndef OS_EVR_SEMAPHORE_LEVEL
+#define OS_EVR_SEMAPHORE_LEVEL      0x81U
 #endif
  
-//       <h>Memory Pool
+//       <e.7>Memory Pool
 //       <i> Recording level for Memory Pool events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_MEMPOOL_LEVEL 
-#define OS_EVR_MEMPOOL_LEVEL        0x01U
+//       </e>
+#ifndef OS_EVR_MEMPOOL_LEVEL
+#define OS_EVR_MEMPOOL_LEVEL        0x81U
 #endif
  
-//       <h>Message Queue
+//       <e.7>Message Queue
 //       <i> Recording level for Message Queue events.
 //         <o.0>Error events
 //         <o.1>API function call events
 //         <o.2>Operation events
 //         <o.3>Detailed operation events
-//       </h>
-#ifndef OS_EVR_MSGQUEUE_LEVEL 
-#define OS_EVR_MSGQUEUE_LEVEL       0x01U
+//       </e>
+#ifndef OS_EVR_MSGQUEUE_LEVEL
+#define OS_EVR_MSGQUEUE_LEVEL       0x81U
 #endif
  
 //     </h>

+ 105 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash.scf

@@ -0,0 +1,105 @@
+#!armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -x c
+/*
+** ###################################################################
+**     Processors:          LPC55S69JBD100_cm33_core0
+**                          LPC55S69JBD64_cm33_core0
+**                          LPC55S69JEV98_cm33_core0
+**
+**     Compiler:            Keil ARM C/C++ Compiler
+**     Reference manual:    LPC55S6x/LPC55S2x/LPC552x User manual(UM11126) Rev.1.3  16 May 2019
+**     Version:             rev. 1.1, 2019-05-16
+**     Build:               b200722
+**
+**     Abstract:
+**         Linker file for the Keil ARM C/C++ Compiler
+**
+**     Copyright 2016 Freescale Semiconductor, Inc.
+**     Copyright 2016-2020 NXP
+**     All rights reserved.
+**
+**     SPDX-License-Identifier: BSD-3-Clause
+**
+**     http:                 www.nxp.com
+**     mail:                 support@nxp.com
+**
+** ###################################################################
+*/
+
+
+/* USB BDT size */
+#define usb_bdt_size                   0x0
+/* Sizes */
+#if (defined(__stack_size__))
+  #define Stack_Size                   __stack_size__
+#else
+  #define Stack_Size                   0x0400
+#endif
+
+#if (defined(__heap_size__))
+  #define Heap_Size                    __heap_size__
+#else
+  #define Heap_Size                    0x0400
+#endif
+
+#define  m_interrupts_start            0x00000000
+#define  m_interrupts_size             0x00000200
+
+#define  m_text_start                  0x00000200
+#define  m_text_size                   0x00071E00
+
+#define  m_core1_image_start           0x00072000
+#define  m_core1_image_size            0x00026000
+
+#if (defined(__use_shmem__))
+  #define  m_data_start                0x20000000
+  #define  m_data_size                 0x00031800
+  #define  m_rpmsg_sh_mem_start        0x20031800
+  #define  m_rpmsg_sh_mem_size         0x00001800
+#else
+  #define  m_data_start                0x20000000
+  #define  m_data_size                 0x00033000
+#endif
+
+#define  m_usb_sram_start              0x40100000
+#define  m_usb_sram_size               0x00004000
+
+
+LR_m_text m_interrupts_start m_interrupts_size+m_text_size {   ; load region size_region
+
+  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
+    * (.isr_vector,+FIRST)
+  }
+
+  ER_m_text m_text_start FIXED m_text_size { ; load address = execution address
+    * (InRoot$$Sections)
+    .ANY (+RO)
+  }
+
+#if (defined(__use_shmem__))
+  RPMSG_SH_MEM m_rpmsg_sh_mem_start UNINIT m_rpmsg_sh_mem_size { ; Shared memory used by RPMSG
+    * (rpmsg_sh_mem_section)
+  }
+#endif
+
+  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
+    .ANY (+RW +ZI)
+  }
+  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
+  }
+  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
+  }
+
+  RW_m_usb_bdt m_usb_sram_start UNINIT usb_bdt_size {
+    * (*m_usb_bdt)
+  }
+
+  RW_m_usb_ram (m_usb_sram_start + usb_bdt_size) UNINIT (m_usb_sram_size - usb_bdt_size) {
+    * (*m_usb_global)
+  }
+}
+
+LR_CORE1_IMAGE m_core1_image_start {
+  CORE1_REGION m_core1_image_start m_core1_image_size {
+    * (.core1_code)
+  }
+}

+ 107 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash_ns.scf

@@ -0,0 +1,107 @@
+#!armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -x c
+/*
+** ###################################################################
+**     Processors:          LPC55S69JBD100_cm33_core0
+**                          LPC55S69JBD64_cm33_core0
+**                          LPC55S69JEV98_cm33_core0
+**
+**     Compiler:            Keil ARM C/C++ Compiler
+**     Reference manual:    LPC55S6x/LPC55S2x/LPC552x User manual(UM11126) Rev.1.3  16 May 2019
+**     Version:             rev. 1.1, 2019-05-16
+**     Build:               b190923
+**
+**     Abstract:
+**         Linker file for the Keil ARM C/C++ Compiler
+**
+**     Copyright 2016 Freescale Semiconductor, Inc.
+**     Copyright 2016-2019 NXP
+**     All rights reserved.
+**
+**     SPDX-License-Identifier: BSD-3-Clause
+**
+**     http:                 www.nxp.com
+**     mail:                 support@nxp.com
+**
+** ###################################################################
+*/
+
+
+/* USB BDT size */
+#define usb_bdt_size                   0x0
+/* Sizes */
+#if (defined(__stack_size__))
+  #define Stack_Size                   __stack_size__
+#else
+  #define Stack_Size                   0x0400
+#endif
+
+#if (defined(__heap_size__))
+  #define Heap_Size                    __heap_size__
+#else
+  #define Heap_Size                    0x0400
+#endif
+
+/* The first 64kB of FLASH is used as secure memory. The rest of FLASH memory is non-secure memory. */
+#define  m_interrupts_start            0x00010000
+#define  m_interrupts_size             0x00000200
+
+#define  m_text_start                  0x00010200
+#define  m_text_size                   0x00061E00
+
+#define  m_core1_image_start           0x00072000
+#define  m_core1_image_size            0x00026000
+
+/* The first 32kB of data RAM is used as secure memory. The rest of data RAM memory is non-secure memory. */
+#if (defined(__use_shmem__))
+  #define  m_data_start                0x20008000
+  #define  m_data_size                 0x00029000
+  #define  m_rpmsg_sh_mem_start        0x20031800
+  #define  m_rpmsg_sh_mem_size         0x00001800
+#else
+  #define  m_data_start                0x20008000
+  #define  m_data_size                 0x0002B000
+#endif
+
+#define  m_usb_sram_start              0x40100000
+#define  m_usb_sram_size               0x00004000
+
+
+LR_m_text m_interrupts_start m_interrupts_size+m_text_size {   ; load region size_region
+
+  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
+    * (.isr_vector,+FIRST)
+  }
+
+  ER_m_text m_text_start FIXED m_text_size { ; load address = execution address
+    * (InRoot$$Sections)
+    .ANY (+RO)
+  }
+
+#if (defined(__use_shmem__))
+  RPMSG_SH_MEM m_rpmsg_sh_mem_start UNINIT m_rpmsg_sh_mem_size { ; Shared memory used by RPMSG
+    * (rpmsg_sh_mem_section)
+  }
+#endif
+
+  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
+    .ANY (+RW +ZI)
+  }
+  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
+  }
+  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
+  }
+
+  RW_m_usb_bdt m_usb_sram_start UNINIT usb_bdt_size {
+    * (*m_usb_bdt)
+  }
+
+  RW_m_usb_ram (m_usb_sram_start + usb_bdt_size) UNINIT (m_usb_sram_size - usb_bdt_size) {
+    * (*m_usb_global)
+  }
+}
+
+LR_CORE1_IMAGE m_core1_image_start {
+  CORE1_REGION m_core1_image_start m_core1_image_size {
+    * (.core1_code)
+  }
+}

+ 116 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_flash_s.scf

@@ -0,0 +1,116 @@
+#!armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -x c
+/*
+** ###################################################################
+**     Processors:          LPC55S69JBD100_cm33_core0
+**                          LPC55S69JBD64_cm33_core0
+**                          LPC55S69JEV98_cm33_core0
+**
+**     Compiler:            Keil ARM C/C++ Compiler
+**     Reference manual:    LPC55S6x/LPC55S2x/LPC552x User manual(UM11126) Rev.1.3  16 May 2019
+**     Version:             rev. 1.1, 2019-05-16
+**     Build:               b190923
+**
+**     Abstract:
+**         Linker file for the Keil ARM C/C++ Compiler
+**
+**     Copyright 2016 Freescale Semiconductor, Inc.
+**     Copyright 2016-2019 NXP
+**     All rights reserved.
+**
+**     SPDX-License-Identifier: BSD-3-Clause
+**
+**     http:                 www.nxp.com
+**     mail:                 support@nxp.com
+**
+** ###################################################################
+*/
+
+
+/* USB BDT size */
+#define usb_bdt_size                   0x0
+/* Sizes */
+#if (defined(__stack_size__))
+  #define Stack_Size                   __stack_size__
+#else
+  #define Stack_Size                   0x0400
+#endif
+
+#if (defined(__heap_size__))
+  #define Heap_Size                    __heap_size__
+#else
+  #define Heap_Size                    0x0400
+#endif
+
+/* Only the first 64kB of flash is used as secure memory. */
+#define  m_interrupts_start            0x10000000
+#define  m_interrupts_size             0x00000200
+
+#define  m_text_start                  0x10000200
+#define  m_text_size                   0x0000FC00
+
+#define  m_core1_image_start           0x10072000
+#define  m_core1_image_size            0x00026000
+
+/* Only first 32kB of data RAM is used as secure memory. */
+#if (defined(__use_shmem__))
+  #define  m_data_start                0x30000000
+  #define  m_data_size                 0x00008000
+  #define  m_rpmsg_sh_mem_start        0x30031800
+  #define  m_rpmsg_sh_mem_size         0x00001800
+#else
+  #define  m_data_start                0x30000000
+  #define  m_data_size                 0x00008000
+#endif
+
+/* 512B - memory for veneer table (NSC - secure, non-secure callable memory) */
+#define  m_veneer_table_start          0x1000FE00
+#define  m_veneer_table_size           0x200
+
+
+#define  m_usb_sram_start              0x50100000
+#define  m_usb_sram_size               0x00004000
+
+
+LR_m_text m_interrupts_start m_interrupts_size+m_text_size+m_veneer_table_size {   ; load region size_region
+
+  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
+    * (.isr_vector,+FIRST)
+  }
+
+  ER_m_text m_text_start FIXED m_text_size { ; load address = execution address
+    * (InRoot$$Sections)
+    .ANY (+RO)
+  }
+
+#if (defined(__use_shmem__))
+  RPMSG_SH_MEM m_rpmsg_sh_mem_start UNINIT m_rpmsg_sh_mem_size { ; Shared memory used by RPMSG
+    * (rpmsg_sh_mem_section)
+  }
+#endif
+
+  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
+    .ANY (+RW +ZI)
+  }
+  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
+  }
+  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
+  }
+
+  ER_m_veneer_table m_veneer_table_start FIXED m_veneer_table_size {; veneer table
+    *(Veneer$$CMSE)
+  }
+
+  RW_m_usb_bdt m_usb_sram_start UNINIT usb_bdt_size {
+    * (*m_usb_bdt)
+  }
+
+  RW_m_usb_ram (m_usb_sram_start + usb_bdt_size) UNINIT (m_usb_sram_size - usb_bdt_size) {
+    * (*m_usb_global)
+  }
+}
+
+LR_CORE1_IMAGE m_core1_image_start {
+  CORE1_REGION m_core1_image_start m_core1_image_size {
+    * (.core1_code)
+  }
+}

+ 105 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/LPC55S69_cm33_core0_ram.scf

@@ -0,0 +1,105 @@
+#!armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -x c
+/*
+** ###################################################################
+**     Processors:          LPC55S69JBD100_cm33_core0
+**                          LPC55S69JBD64_cm33_core0
+**                          LPC55S69JEV98_cm33_core0
+**
+**     Compiler:            Keil ARM C/C++ Compiler
+**     Reference manual:    LPC55S6x/LPC55S2x/LPC552x User manual(UM11126) Rev.1.3  16 May 2019
+**     Version:             rev. 1.1, 2019-05-16
+**     Build:               b200722
+**
+**     Abstract:
+**         Linker file for the Keil ARM C/C++ Compiler
+**
+**     Copyright 2016 Freescale Semiconductor, Inc.
+**     Copyright 2016-2020 NXP
+**     All rights reserved.
+**
+**     SPDX-License-Identifier: BSD-3-Clause
+**
+**     http:                 www.nxp.com
+**     mail:                 support@nxp.com
+**
+** ###################################################################
+*/
+
+
+/* USB BDT size */
+#define usb_bdt_size                   0x0
+/* Sizes */
+#if (defined(__stack_size__))
+  #define Stack_Size                   __stack_size__
+#else
+  #define Stack_Size                   0x0400
+#endif
+
+#if (defined(__heap_size__))
+  #define Heap_Size                    __heap_size__
+#else
+  #define Heap_Size                    0x0400
+#endif
+
+#define  m_interrupts_start            0x04000000
+#define  m_interrupts_size             0x00000200
+
+#define  m_text_start                  0x04000200
+#define  m_text_size                   0x00007E00
+
+#define  m_core1_image_start           0x20033000
+#define  m_core1_image_size            0x0000C800
+
+#if (defined(__use_shmem__))
+  #define  m_data_start                0x20000000
+  #define  m_data_size                 0x00031800
+  #define  m_rpmsg_sh_mem_start        0x20031800
+  #define  m_rpmsg_sh_mem_size         0x00001800
+#else
+  #define  m_data_start                0x20000000
+  #define  m_data_size                 0x00033000
+#endif
+
+#define  m_usb_sram_start              0x40100000
+#define  m_usb_sram_size               0x00004000
+
+
+LR_m_text m_interrupts_start m_interrupts_size+m_text_size {   ; load region size_region
+
+  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
+    * (.isr_vector,+FIRST)
+  }
+
+  ER_m_text m_text_start FIXED m_text_size { ; load address = execution address
+    * (InRoot$$Sections)
+    .ANY (+RO)
+  }
+
+#if (defined(__use_shmem__))
+  RPMSG_SH_MEM m_rpmsg_sh_mem_start UNINIT m_rpmsg_sh_mem_size { ; Shared memory used by RPMSG
+    * (rpmsg_sh_mem_section)
+  }
+#endif
+
+  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
+    .ANY (+RW +ZI)
+  }
+  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
+  }
+  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
+  }
+
+  RW_m_usb_bdt m_usb_sram_start UNINIT usb_bdt_size {
+    * (*m_usb_bdt)
+  }
+
+  RW_m_usb_ram (m_usb_sram_start + usb_bdt_size) UNINIT (m_usb_sram_size - usb_bdt_size) {
+    * (*m_usb_global)
+  }
+}
+
+LR_CORE1_IMAGE m_core1_image_start {
+  CORE1_REGION m_core1_image_start m_core1_image_size {
+    * (.core1_code)
+  }
+}

+ 215 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/RTE_Device.h

@@ -0,0 +1,215 @@
+/*
+ * Copyright (c) 2016, Freescale Semiconductor, Inc.
+ * Copyright 2016-2020 NXP
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef _RTE_DEVICE_H
+#define _RTE_DEVICE_H
+
+#include "pin_mux.h"
+
+/* UART Select, UART0-UART7. */
+/* User needs to provide the implementation of USARTX_GetFreq/USARTX_InitPins/USARTX_DeinitPins for the enabled USART
+ * instance. */
+#define RTE_USART0        1
+#define RTE_USART0_DMA_EN 1
+#define RTE_USART1        0
+#define RTE_USART1_DMA_EN 0
+#define RTE_USART2        0
+#define RTE_USART2_DMA_EN 0
+#define RTE_USART3        1
+#define RTE_USART3_DMA_EN 1
+#define RTE_USART4        0
+#define RTE_USART4_DMA_EN 0
+#define RTE_USART5        0
+#define RTE_USART5_DMA_EN 0
+#define RTE_USART6        0
+#define RTE_USART6_DMA_EN 0
+#define RTE_USART7        0
+#define RTE_USART7_DMA_EN 0
+
+/* USART configuration. */
+#define USART_RX_BUFFER_LEN     64
+#define USART0_RX_BUFFER_ENABLE 1
+#define USART1_RX_BUFFER_ENABLE 0
+#define USART2_RX_BUFFER_ENABLE 0
+#define USART3_RX_BUFFER_ENABLE 1
+#define USART4_RX_BUFFER_ENABLE 0
+#define USART5_RX_BUFFER_ENABLE 0
+#define USART6_RX_BUFFER_ENABLE 0
+#define USART7_RX_BUFFER_ENABLE 0
+
+#define RTE_USART0_DMA_TX_CH       5
+#define RTE_USART0_DMA_TX_DMA_BASE DMA0
+#define RTE_USART0_DMA_RX_CH       4
+#define RTE_USART0_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART1_DMA_TX_CH       7
+#define RTE_USART1_DMA_TX_DMA_BASE DMA0
+#define RTE_USART1_DMA_RX_CH       6
+#define RTE_USART1_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART2_DMA_TX_CH       8
+#define RTE_USART2_DMA_TX_DMA_BASE DMA0
+#define RTE_USART2_DMA_RX_CH       9
+#define RTE_USART2_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART3_DMA_TX_CH       9
+#define RTE_USART3_DMA_TX_DMA_BASE DMA0
+#define RTE_USART3_DMA_RX_CH       8
+#define RTE_USART3_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART4_DMA_TX_CH       13
+#define RTE_USART4_DMA_TX_DMA_BASE DMA0
+#define RTE_USART4_DMA_RX_CH       12
+#define RTE_USART4_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART5_DMA_TX_CH       15
+#define RTE_USART5_DMA_TX_DMA_BASE DMA0
+#define RTE_USART5_DMA_RX_CH       14
+#define RTE_USART5_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART6_DMA_TX_CH       17
+#define RTE_USART6_DMA_TX_DMA_BASE DMA0
+#define RTE_USART6_DMA_RX_CH       16
+#define RTE_USART6_DMA_RX_DMA_BASE DMA0
+
+#define RTE_USART7_DMA_TX_CH       19
+#define RTE_USART7_DMA_TX_DMA_BASE DMA0
+#define RTE_USART7_DMA_RX_CH       18
+#define RTE_USART7_DMA_RX_DMA_BASE DMA0
+
+/* I2C Select, I2C0 -I2C7*/
+/* User needs to provide the implementation of I2CX_GetFreq/I2CX_InitPins/I2CX_DeinitPins for the enabled I2C instance.
+ */
+#define RTE_I2C0        0
+#define RTE_I2C0_DMA_EN 0
+#define RTE_I2C1        0
+#define RTE_I2C1_DMA_EN 0
+#define RTE_I2C2        0
+#define RTE_I2C2_DMA_EN 0
+#define RTE_I2C3        0
+#define RTE_I2C3_DMA_EN 0
+#define RTE_I2C4        0
+#define RTE_I2C4_DMA_EN 0
+#define RTE_I2C5        0
+#define RTE_I2C5_DMA_EN 0
+#define RTE_I2C6        0
+#define RTE_I2C6_DMA_EN 0
+#define RTE_I2C7        0
+#define RTE_I2C7_DMA_EN 0
+
+/*I2C configuration*/
+#define RTE_I2C0_Master_DMA_BASE DMA0
+#define RTE_I2C0_Master_DMA_CH   1
+
+#define RTE_I2C1_Master_DMA_BASE DMA0
+#define RTE_I2C1_Master_DMA_CH   3
+
+#define RTE_I2C2_Master_DMA_BASE DMA0
+#define RTE_I2C2_Master_DMA_CH   5
+
+#define RTE_I2C3_Master_DMA_BASE DMA0
+#define RTE_I2C3_Master_DMA_CH   7
+
+#define RTE_I2C4_Master_DMA_BASE DMA0
+#define RTE_I2C4_Master_DMA_CH   9
+
+#define RTE_I2C5_Master_DMA_BASE DMA0
+#define RTE_I2C5_Master_DMA_CH   11
+
+#define RTE_I2C6_Master_DMA_BASE DMA0
+#define RTE_I2C6_Master_DMA_CH   13
+
+#define RTE_I2C7_Master_DMA_BASE DMA0
+#define RTE_I2C7_Master_DMA_CH   15
+
+/* SPI select, SPI0 - SPI7.*/
+/* User needs to provide the implementation of SPIX_GetFreq/SPIX_InitPins/SPIX_DeinitPins for the enabled SPI instance.
+ */
+#define RTE_SPI0        0
+#define RTE_SPI0_DMA_EN 0
+#define RTE_SPI1        0
+#define RTE_SPI1_DMA_EN 0
+#define RTE_SPI2        0
+#define RTE_SPI2_DMA_EN 0
+#define RTE_SPI3        0
+#define RTE_SPI3_DMA_EN 0
+#define RTE_SPI4        0
+#define RTE_SPI4_DMA_EN 0
+#define RTE_SPI5        0
+#define RTE_SPI5_DMA_EN 0
+#define RTE_SPI6        0
+#define RTE_SPI6_DMA_EN 0
+#define RTE_SPI7        0
+#define RTE_SPI7_DMA_EN 0
+
+/* SPI configuration. */
+#define RTE_SPI0_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI0_PIN_INIT        SPI0_InitPins
+#define RTE_SPI0_PIN_DEINIT      SPI0_DeinitPins
+#define RTE_SPI0_DMA_TX_CH       1
+#define RTE_SPI0_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI0_DMA_RX_CH       0
+#define RTE_SPI0_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI1_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI1_PIN_INIT        SPI1_InitPins
+#define RTE_SPI1_PIN_DEINIT      SPI1_DeinitPins
+#define RTE_SPI1_DMA_TX_CH       3
+#define RTE_SPI1_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI1_DMA_RX_CH       2
+#define RTE_SPI1_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI2_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI2_PIN_INIT        SPI2_InitPins
+#define RTE_SPI2_PIN_DEINIT      SPI2_DeinitPins
+#define RTE_SPI2_DMA_TX_CH       5
+#define RTE_SPI2_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI2_DMA_RX_CH       4
+#define RTE_SPI2_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI3_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI3_PIN_INIT        SPI3_InitPins
+#define RTE_SPI3_PIN_DEINIT      SPI3_DeinitPins
+#define RTE_SPI3_DMA_TX_CH       7
+#define RTE_SPI3_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI3_DMA_RX_CH       6
+#define RTE_SPI3_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI4_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI4_PIN_INIT        SPI4_InitPins
+#define RTE_SPI4_PIN_DEINIT      SPI4_DeinitPins
+#define RTE_SPI4_DMA_TX_CH       9
+#define RTE_SPI4_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI4_DMA_RX_CH       8
+#define RTE_SPI4_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI5_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI5_PIN_INIT        SPI5_InitPins
+#define RTE_SPI5_PIN_DEINIT      SPI5_DeinitPins
+#define RTE_SPI5_DMA_TX_CH       11
+#define RTE_SPI5_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI5_DMA_RX_CH       10
+#define RTE_SPI5_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI6_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI6_PIN_INIT        SPI6_InitPins
+#define RTE_SPI6_PIN_DEINIT      SPI6_DeinitPins
+#define RTE_SPI6_DMA_TX_CH       13
+#define RTE_SPI6_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI6_DMA_RX_CH       12
+#define RTE_SPI6_DMA_RX_DMA_BASE DMA0
+
+#define RTE_SPI7_SSEL_NUM        kSPI_Ssel0
+#define RTE_SPI7_PIN_INIT        SPI7_InitPins
+#define RTE_SPI7_PIN_DEINIT      SPI7_DeinitPins
+#define RTE_SPI7_DMA_TX_CH       15
+#define RTE_SPI7_DMA_TX_DMA_BASE DMA0
+#define RTE_SPI7_DMA_RX_CH       14
+#define RTE_SPI7_DMA_RX_DMA_BASE DMA0
+
+#endif /* _RTE_DEVICE_H */

+ 801 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/Device/LPC55S69JBD64_cm33_core0/startup_LPC55S69_cm33_core0.S

@@ -0,0 +1,801 @@
+/* ---------------------------------------------------------------------------------------
+ * @file:    startup_LPC55S69_cm33_core0.s
+ * @purpose: CMSIS Cortex-M33 Core Device Startup File for the LPC55S69_cm33_core0
+ * @version: 1.1
+ * @date:    2019-5-16
+ * ---------------------------------------------------------------------------------------*/
+/*
+ * Copyright 1997-2016 Freescale Semiconductor, Inc.
+ * Copyright 2016-2021 NXP
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+/*****************************************************************************/
+/* Version: GCC for ARM Embedded Processors                                  */
+/*****************************************************************************/
+
+    .syntax unified
+    .arch armv8-m.main
+    .eabi_attribute Tag_ABI_align_preserved, 1 /*8-byte alignment */
+
+    .section .isr_vector, "a"
+    .align 2
+    .globl __Vectors
+
+__Vectors:
+    .long    Image$$ARM_LIB_STACK$$ZI$$Limit                /* Top of Stack */
+    .long    Reset_Handler                                   /* Reset Handler */
+    .long    NMI_Handler                                     /* NMI Handler*/
+    .long    HardFault_Handler                               /* Hard Fault Handler*/
+    .long    MemManage_Handler                               /* MPU Fault Handler*/
+    .long    BusFault_Handler                                /* Bus Fault Handler*/
+    .long    UsageFault_Handler                              /* Usage Fault Handler*/
+    .long    SecureFault_Handler                             /* Secure Fault Handler*/
+    .long    0                                               /* Reserved*/
+    .long    0                                               /* Reserved*/
+    .long    0                                               /* Reserved*/
+    .long    SVC_Handler                                     /* SVCall Handler*/
+    .long    DebugMon_Handler                                /* Debug Monitor Handler*/
+    .long    0                                               /* Reserved*/
+    .long    PendSV_Handler                                  /* PendSV Handler*/
+    .long    SysTick_Handler                                 /* SysTick Handler*/
+
+                                                            /* External Interrupts*/
+    .long    WDT_BOD_IRQHandler                              /* Windowed watchdog timer, Brownout detect, Flash interrupt */
+    .long    DMA0_IRQHandler                              /* DMA0 controller */
+    .long    GINT0_IRQHandler                              /* GPIO group 0 */
+    .long    GINT1_IRQHandler                              /* GPIO group 1 */
+    .long    PIN_INT0_IRQHandler                              /* Pin interrupt 0 or pattern match engine slice 0 */
+    .long    PIN_INT1_IRQHandler                              /* Pin interrupt 1or pattern match engine slice 1 */
+    .long    PIN_INT2_IRQHandler                              /* Pin interrupt 2 or pattern match engine slice 2 */
+    .long    PIN_INT3_IRQHandler                              /* Pin interrupt 3 or pattern match engine slice 3 */
+    .long    UTICK0_IRQHandler                              /* Micro-tick Timer */
+    .long    MRT0_IRQHandler                              /* Multi-rate timer */
+    .long    CTIMER0_IRQHandler                              /* Standard counter/timer CTIMER0 */
+    .long    CTIMER1_IRQHandler                              /* Standard counter/timer CTIMER1 */
+    .long    SCT0_IRQHandler                              /* SCTimer/PWM */
+    .long    CTIMER3_IRQHandler                              /* Standard counter/timer CTIMER3 */
+    .long    FLEXCOMM0_IRQHandler                              /* Flexcomm Interface 0 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM1_IRQHandler                              /* Flexcomm Interface 1 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM2_IRQHandler                              /* Flexcomm Interface 2 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM3_IRQHandler                              /* Flexcomm Interface 3 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM4_IRQHandler                              /* Flexcomm Interface 4 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM5_IRQHandler                              /* Flexcomm Interface 5 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM6_IRQHandler                              /* Flexcomm Interface 6 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    FLEXCOMM7_IRQHandler                              /* Flexcomm Interface 7 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    .long    ADC0_IRQHandler                              /* ADC0  */
+    .long    Reserved39_IRQHandler                              /* Reserved interrupt */
+    .long    ACMP_IRQHandler                              /* ACMP  interrupts */
+    .long    Reserved41_IRQHandler                              /* Reserved interrupt */
+    .long    Reserved42_IRQHandler                              /* Reserved interrupt */
+    .long    USB0_NEEDCLK_IRQHandler                              /* USB Activity Wake-up Interrupt */
+    .long    USB0_IRQHandler                              /* USB device */
+    .long    RTC_IRQHandler                              /* RTC alarm and wake-up interrupts */
+    .long    Reserved46_IRQHandler                              /* Reserved interrupt */
+    .long    MAILBOX_IRQHandler                              /* WAKEUP,Mailbox interrupt (present on selected devices) */
+    .long    PIN_INT4_IRQHandler                              /* Pin interrupt 4 or pattern match engine slice 4 int */
+    .long    PIN_INT5_IRQHandler                              /* Pin interrupt 5 or pattern match engine slice 5 int */
+    .long    PIN_INT6_IRQHandler                              /* Pin interrupt 6 or pattern match engine slice 6 int */
+    .long    PIN_INT7_IRQHandler                              /* Pin interrupt 7 or pattern match engine slice 7 int */
+    .long    CTIMER2_IRQHandler                              /* Standard counter/timer CTIMER2 */
+    .long    CTIMER4_IRQHandler                              /* Standard counter/timer CTIMER4 */
+    .long    OS_EVENT_IRQHandler                              /* OSEVTIMER0 and OSEVTIMER0_WAKEUP interrupts */
+    .long    Reserved55_IRQHandler                              /* Reserved interrupt */
+    .long    Reserved56_IRQHandler                              /* Reserved interrupt */
+    .long    Reserved57_IRQHandler                              /* Reserved interrupt */
+    .long    SDIO_IRQHandler                              /* SD/MMC  */
+    .long    Reserved59_IRQHandler                              /* Reserved interrupt */
+    .long    Reserved60_IRQHandler                              /* Reserved interrupt */
+    .long    Reserved61_IRQHandler                              /* Reserved interrupt */
+    .long    USB1_PHY_IRQHandler                              /* USB1_PHY */
+    .long    USB1_IRQHandler                              /* USB1 interrupt */
+    .long    USB1_NEEDCLK_IRQHandler                              /* USB1 activity */
+    .long    SEC_HYPERVISOR_CALL_IRQHandler                              /* SEC_HYPERVISOR_CALL interrupt */
+    .long    SEC_GPIO_INT0_IRQ0_IRQHandler                              /* SEC_GPIO_INT0_IRQ0 interrupt */
+    .long    SEC_GPIO_INT0_IRQ1_IRQHandler                              /* SEC_GPIO_INT0_IRQ1 interrupt */
+    .long    PLU_IRQHandler                              /* PLU interrupt */
+    .long    SEC_VIO_IRQHandler                              /* SEC_VIO interrupt */
+    .long    HASHCRYPT_IRQHandler                              /* HASHCRYPT interrupt */
+    .long    CASER_IRQHandler                              /* CASPER interrupt */
+    .long    PUF_IRQHandler                              /* PUF interrupt */
+    .long    PQ_IRQHandler                              /* PQ interrupt */
+    .long    DMA1_IRQHandler                              /* DMA1 interrupt */
+    .long    FLEXCOMM8_IRQHandler                              /* Flexcomm Interface 8 (SPI, , FLEXCOMM) */
+    .size    __Vectors, . - __Vectors
+
+    .text
+    .thumb
+
+/* Reset Handler */
+    .thumb_func
+    .align 2
+    .weak    Reset_Handler
+    .type    Reset_Handler, %function
+
+Reset_Handler:
+    cpsid   i               /* Mask interrupts */
+    .equ    VTOR, 0xE000ED08
+    ldr     r0, =VTOR
+    ldr     r1, =__Vectors
+    str     r1, [r0]
+    ldr     r2, [r1]
+    msr     msp, r2
+    ldr     R0, =Image$$ARM_LIB_STACK$$ZI$$Base
+    msr     msplim, R0
+    ldr     r0,=SystemInit
+    blx     r0
+    cpsie   i               /* Unmask interrupts */
+    ldr     r0,=__main
+    bx      r0
+
+    .pool
+    .size Reset_Handler, . - Reset_Handler
+
+    .align  1
+    .thumb_func
+    .weak DefaultISR
+    .type DefaultISR, %function
+DefaultISR:
+    b DefaultISR
+    .size DefaultISR, . - DefaultISR
+
+    .align 1
+    .thumb_func
+    .weak NMI_Handler
+    .type NMI_Handler, %function
+NMI_Handler:
+    ldr   r0,=NMI_Handler
+    bx    r0
+    .size NMI_Handler, . - NMI_Handler
+
+    .align 1
+    .thumb_func
+    .weak HardFault_Handler
+    .type HardFault_Handler, %function
+HardFault_Handler:
+    ldr   r0,=HardFault_Handler
+    bx    r0
+    .size HardFault_Handler, . - HardFault_Handler
+
+    .align 1
+    .thumb_func
+    .weak SVC_Handler
+    .type SVC_Handler, %function
+SVC_Handler:
+    ldr   r0,=SVC_Handler
+    bx    r0
+    .size SVC_Handler, . - SVC_Handler
+
+    .align 1
+    .thumb_func
+    .weak PendSV_Handler
+    .type PendSV_Handler, %function
+PendSV_Handler:
+    ldr   r0,=PendSV_Handler
+    bx    r0
+    .size PendSV_Handler, . - PendSV_Handler
+
+    .align 1
+    .thumb_func
+    .weak SysTick_Handler
+    .type SysTick_Handler, %function
+SysTick_Handler:
+    ldr   r0,=SysTick_Handler
+    bx    r0
+    .size SysTick_Handler, . - SysTick_Handler
+    .align 1
+    .thumb_func
+    .weak WDT_BOD_IRQHandler
+    .type WDT_BOD_IRQHandler, %function
+WDT_BOD_IRQHandler:
+    ldr   r0,=WDT_BOD_DriverIRQHandler
+    bx    r0
+    .size WDT_BOD_IRQHandler, . - WDT_BOD_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak DMA0_IRQHandler
+    .type DMA0_IRQHandler, %function
+DMA0_IRQHandler:
+    ldr   r0,=DMA0_DriverIRQHandler
+    bx    r0
+    .size DMA0_IRQHandler, . - DMA0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak GINT0_IRQHandler
+    .type GINT0_IRQHandler, %function
+GINT0_IRQHandler:
+    ldr   r0,=GINT0_DriverIRQHandler
+    bx    r0
+    .size GINT0_IRQHandler, . - GINT0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak GINT1_IRQHandler
+    .type GINT1_IRQHandler, %function
+GINT1_IRQHandler:
+    ldr   r0,=GINT1_DriverIRQHandler
+    bx    r0
+    .size GINT1_IRQHandler, . - GINT1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT0_IRQHandler
+    .type PIN_INT0_IRQHandler, %function
+PIN_INT0_IRQHandler:
+    ldr   r0,=PIN_INT0_DriverIRQHandler
+    bx    r0
+    .size PIN_INT0_IRQHandler, . - PIN_INT0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT1_IRQHandler
+    .type PIN_INT1_IRQHandler, %function
+PIN_INT1_IRQHandler:
+    ldr   r0,=PIN_INT1_DriverIRQHandler
+    bx    r0
+    .size PIN_INT1_IRQHandler, . - PIN_INT1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT2_IRQHandler
+    .type PIN_INT2_IRQHandler, %function
+PIN_INT2_IRQHandler:
+    ldr   r0,=PIN_INT2_DriverIRQHandler
+    bx    r0
+    .size PIN_INT2_IRQHandler, . - PIN_INT2_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT3_IRQHandler
+    .type PIN_INT3_IRQHandler, %function
+PIN_INT3_IRQHandler:
+    ldr   r0,=PIN_INT3_DriverIRQHandler
+    bx    r0
+    .size PIN_INT3_IRQHandler, . - PIN_INT3_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak UTICK0_IRQHandler
+    .type UTICK0_IRQHandler, %function
+UTICK0_IRQHandler:
+    ldr   r0,=UTICK0_DriverIRQHandler
+    bx    r0
+    .size UTICK0_IRQHandler, . - UTICK0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak MRT0_IRQHandler
+    .type MRT0_IRQHandler, %function
+MRT0_IRQHandler:
+    ldr   r0,=MRT0_DriverIRQHandler
+    bx    r0
+    .size MRT0_IRQHandler, . - MRT0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CTIMER0_IRQHandler
+    .type CTIMER0_IRQHandler, %function
+CTIMER0_IRQHandler:
+    ldr   r0,=CTIMER0_DriverIRQHandler
+    bx    r0
+    .size CTIMER0_IRQHandler, . - CTIMER0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CTIMER1_IRQHandler
+    .type CTIMER1_IRQHandler, %function
+CTIMER1_IRQHandler:
+    ldr   r0,=CTIMER1_DriverIRQHandler
+    bx    r0
+    .size CTIMER1_IRQHandler, . - CTIMER1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SCT0_IRQHandler
+    .type SCT0_IRQHandler, %function
+SCT0_IRQHandler:
+    ldr   r0,=SCT0_DriverIRQHandler
+    bx    r0
+    .size SCT0_IRQHandler, . - SCT0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CTIMER3_IRQHandler
+    .type CTIMER3_IRQHandler, %function
+CTIMER3_IRQHandler:
+    ldr   r0,=CTIMER3_DriverIRQHandler
+    bx    r0
+    .size CTIMER3_IRQHandler, . - CTIMER3_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM0_IRQHandler
+    .type FLEXCOMM0_IRQHandler, %function
+FLEXCOMM0_IRQHandler:
+    ldr   r0,=FLEXCOMM0_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM0_IRQHandler, . - FLEXCOMM0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM1_IRQHandler
+    .type FLEXCOMM1_IRQHandler, %function
+FLEXCOMM1_IRQHandler:
+    ldr   r0,=FLEXCOMM1_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM1_IRQHandler, . - FLEXCOMM1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM2_IRQHandler
+    .type FLEXCOMM2_IRQHandler, %function
+FLEXCOMM2_IRQHandler:
+    ldr   r0,=FLEXCOMM2_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM2_IRQHandler, . - FLEXCOMM2_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM3_IRQHandler
+    .type FLEXCOMM3_IRQHandler, %function
+FLEXCOMM3_IRQHandler:
+    ldr   r0,=FLEXCOMM3_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM3_IRQHandler, . - FLEXCOMM3_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM4_IRQHandler
+    .type FLEXCOMM4_IRQHandler, %function
+FLEXCOMM4_IRQHandler:
+    ldr   r0,=FLEXCOMM4_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM4_IRQHandler, . - FLEXCOMM4_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM5_IRQHandler
+    .type FLEXCOMM5_IRQHandler, %function
+FLEXCOMM5_IRQHandler:
+    ldr   r0,=FLEXCOMM5_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM5_IRQHandler, . - FLEXCOMM5_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM6_IRQHandler
+    .type FLEXCOMM6_IRQHandler, %function
+FLEXCOMM6_IRQHandler:
+    ldr   r0,=FLEXCOMM6_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM6_IRQHandler, . - FLEXCOMM6_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM7_IRQHandler
+    .type FLEXCOMM7_IRQHandler, %function
+FLEXCOMM7_IRQHandler:
+    ldr   r0,=FLEXCOMM7_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM7_IRQHandler, . - FLEXCOMM7_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak ADC0_IRQHandler
+    .type ADC0_IRQHandler, %function
+ADC0_IRQHandler:
+    ldr   r0,=ADC0_DriverIRQHandler
+    bx    r0
+    .size ADC0_IRQHandler, . - ADC0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved39_IRQHandler
+    .type Reserved39_IRQHandler, %function
+Reserved39_IRQHandler:
+    ldr   r0,=Reserved39_DriverIRQHandler
+    bx    r0
+    .size Reserved39_IRQHandler, . - Reserved39_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak ACMP_IRQHandler
+    .type ACMP_IRQHandler, %function
+ACMP_IRQHandler:
+    ldr   r0,=ACMP_DriverIRQHandler
+    bx    r0
+    .size ACMP_IRQHandler, . - ACMP_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved41_IRQHandler
+    .type Reserved41_IRQHandler, %function
+Reserved41_IRQHandler:
+    ldr   r0,=Reserved41_DriverIRQHandler
+    bx    r0
+    .size Reserved41_IRQHandler, . - Reserved41_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved42_IRQHandler
+    .type Reserved42_IRQHandler, %function
+Reserved42_IRQHandler:
+    ldr   r0,=Reserved42_DriverIRQHandler
+    bx    r0
+    .size Reserved42_IRQHandler, . - Reserved42_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak USB0_NEEDCLK_IRQHandler
+    .type USB0_NEEDCLK_IRQHandler, %function
+USB0_NEEDCLK_IRQHandler:
+    ldr   r0,=USB0_NEEDCLK_DriverIRQHandler
+    bx    r0
+    .size USB0_NEEDCLK_IRQHandler, . - USB0_NEEDCLK_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak USB0_IRQHandler
+    .type USB0_IRQHandler, %function
+USB0_IRQHandler:
+    ldr   r0,=USB0_DriverIRQHandler
+    bx    r0
+    .size USB0_IRQHandler, . - USB0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak RTC_IRQHandler
+    .type RTC_IRQHandler, %function
+RTC_IRQHandler:
+    ldr   r0,=RTC_DriverIRQHandler
+    bx    r0
+    .size RTC_IRQHandler, . - RTC_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved46_IRQHandler
+    .type Reserved46_IRQHandler, %function
+Reserved46_IRQHandler:
+    ldr   r0,=Reserved46_DriverIRQHandler
+    bx    r0
+    .size Reserved46_IRQHandler, . - Reserved46_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak MAILBOX_IRQHandler
+    .type MAILBOX_IRQHandler, %function
+MAILBOX_IRQHandler:
+    ldr   r0,=MAILBOX_DriverIRQHandler
+    bx    r0
+    .size MAILBOX_IRQHandler, . - MAILBOX_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT4_IRQHandler
+    .type PIN_INT4_IRQHandler, %function
+PIN_INT4_IRQHandler:
+    ldr   r0,=PIN_INT4_DriverIRQHandler
+    bx    r0
+    .size PIN_INT4_IRQHandler, . - PIN_INT4_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT5_IRQHandler
+    .type PIN_INT5_IRQHandler, %function
+PIN_INT5_IRQHandler:
+    ldr   r0,=PIN_INT5_DriverIRQHandler
+    bx    r0
+    .size PIN_INT5_IRQHandler, . - PIN_INT5_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT6_IRQHandler
+    .type PIN_INT6_IRQHandler, %function
+PIN_INT6_IRQHandler:
+    ldr   r0,=PIN_INT6_DriverIRQHandler
+    bx    r0
+    .size PIN_INT6_IRQHandler, . - PIN_INT6_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PIN_INT7_IRQHandler
+    .type PIN_INT7_IRQHandler, %function
+PIN_INT7_IRQHandler:
+    ldr   r0,=PIN_INT7_DriverIRQHandler
+    bx    r0
+    .size PIN_INT7_IRQHandler, . - PIN_INT7_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CTIMER2_IRQHandler
+    .type CTIMER2_IRQHandler, %function
+CTIMER2_IRQHandler:
+    ldr   r0,=CTIMER2_DriverIRQHandler
+    bx    r0
+    .size CTIMER2_IRQHandler, . - CTIMER2_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CTIMER4_IRQHandler
+    .type CTIMER4_IRQHandler, %function
+CTIMER4_IRQHandler:
+    ldr   r0,=CTIMER4_DriverIRQHandler
+    bx    r0
+    .size CTIMER4_IRQHandler, . - CTIMER4_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak OS_EVENT_IRQHandler
+    .type OS_EVENT_IRQHandler, %function
+OS_EVENT_IRQHandler:
+    ldr   r0,=OS_EVENT_DriverIRQHandler
+    bx    r0
+    .size OS_EVENT_IRQHandler, . - OS_EVENT_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved55_IRQHandler
+    .type Reserved55_IRQHandler, %function
+Reserved55_IRQHandler:
+    ldr   r0,=Reserved55_DriverIRQHandler
+    bx    r0
+    .size Reserved55_IRQHandler, . - Reserved55_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved56_IRQHandler
+    .type Reserved56_IRQHandler, %function
+Reserved56_IRQHandler:
+    ldr   r0,=Reserved56_DriverIRQHandler
+    bx    r0
+    .size Reserved56_IRQHandler, . - Reserved56_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved57_IRQHandler
+    .type Reserved57_IRQHandler, %function
+Reserved57_IRQHandler:
+    ldr   r0,=Reserved57_DriverIRQHandler
+    bx    r0
+    .size Reserved57_IRQHandler, . - Reserved57_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SDIO_IRQHandler
+    .type SDIO_IRQHandler, %function
+SDIO_IRQHandler:
+    ldr   r0,=SDIO_DriverIRQHandler
+    bx    r0
+    .size SDIO_IRQHandler, . - SDIO_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved59_IRQHandler
+    .type Reserved59_IRQHandler, %function
+Reserved59_IRQHandler:
+    ldr   r0,=Reserved59_DriverIRQHandler
+    bx    r0
+    .size Reserved59_IRQHandler, . - Reserved59_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved60_IRQHandler
+    .type Reserved60_IRQHandler, %function
+Reserved60_IRQHandler:
+    ldr   r0,=Reserved60_DriverIRQHandler
+    bx    r0
+    .size Reserved60_IRQHandler, . - Reserved60_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak Reserved61_IRQHandler
+    .type Reserved61_IRQHandler, %function
+Reserved61_IRQHandler:
+    ldr   r0,=Reserved61_DriverIRQHandler
+    bx    r0
+    .size Reserved61_IRQHandler, . - Reserved61_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak USB1_PHY_IRQHandler
+    .type USB1_PHY_IRQHandler, %function
+USB1_PHY_IRQHandler:
+    ldr   r0,=USB1_PHY_DriverIRQHandler
+    bx    r0
+    .size USB1_PHY_IRQHandler, . - USB1_PHY_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak USB1_IRQHandler
+    .type USB1_IRQHandler, %function
+USB1_IRQHandler:
+    ldr   r0,=USB1_DriverIRQHandler
+    bx    r0
+    .size USB1_IRQHandler, . - USB1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak USB1_NEEDCLK_IRQHandler
+    .type USB1_NEEDCLK_IRQHandler, %function
+USB1_NEEDCLK_IRQHandler:
+    ldr   r0,=USB1_NEEDCLK_DriverIRQHandler
+    bx    r0
+    .size USB1_NEEDCLK_IRQHandler, . - USB1_NEEDCLK_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SEC_HYPERVISOR_CALL_IRQHandler
+    .type SEC_HYPERVISOR_CALL_IRQHandler, %function
+SEC_HYPERVISOR_CALL_IRQHandler:
+    ldr   r0,=SEC_HYPERVISOR_CALL_DriverIRQHandler
+    bx    r0
+    .size SEC_HYPERVISOR_CALL_IRQHandler, . - SEC_HYPERVISOR_CALL_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SEC_GPIO_INT0_IRQ0_IRQHandler
+    .type SEC_GPIO_INT0_IRQ0_IRQHandler, %function
+SEC_GPIO_INT0_IRQ0_IRQHandler:
+    ldr   r0,=SEC_GPIO_INT0_IRQ0_DriverIRQHandler
+    bx    r0
+    .size SEC_GPIO_INT0_IRQ0_IRQHandler, . - SEC_GPIO_INT0_IRQ0_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SEC_GPIO_INT0_IRQ1_IRQHandler
+    .type SEC_GPIO_INT0_IRQ1_IRQHandler, %function
+SEC_GPIO_INT0_IRQ1_IRQHandler:
+    ldr   r0,=SEC_GPIO_INT0_IRQ1_DriverIRQHandler
+    bx    r0
+    .size SEC_GPIO_INT0_IRQ1_IRQHandler, . - SEC_GPIO_INT0_IRQ1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PLU_IRQHandler
+    .type PLU_IRQHandler, %function
+PLU_IRQHandler:
+    ldr   r0,=PLU_DriverIRQHandler
+    bx    r0
+    .size PLU_IRQHandler, . - PLU_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak SEC_VIO_IRQHandler
+    .type SEC_VIO_IRQHandler, %function
+SEC_VIO_IRQHandler:
+    ldr   r0,=SEC_VIO_DriverIRQHandler
+    bx    r0
+    .size SEC_VIO_IRQHandler, . - SEC_VIO_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak HASHCRYPT_IRQHandler
+    .type HASHCRYPT_IRQHandler, %function
+HASHCRYPT_IRQHandler:
+    ldr   r0,=HASHCRYPT_DriverIRQHandler
+    bx    r0
+    .size HASHCRYPT_IRQHandler, . - HASHCRYPT_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak CASER_IRQHandler
+    .type CASER_IRQHandler, %function
+CASER_IRQHandler:
+    ldr   r0,=CASER_DriverIRQHandler
+    bx    r0
+    .size CASER_IRQHandler, . - CASER_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PUF_IRQHandler
+    .type PUF_IRQHandler, %function
+PUF_IRQHandler:
+    ldr   r0,=PUF_DriverIRQHandler
+    bx    r0
+    .size PUF_IRQHandler, . - PUF_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak PQ_IRQHandler
+    .type PQ_IRQHandler, %function
+PQ_IRQHandler:
+    ldr   r0,=PQ_DriverIRQHandler
+    bx    r0
+    .size PQ_IRQHandler, . - PQ_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak DMA1_IRQHandler
+    .type DMA1_IRQHandler, %function
+DMA1_IRQHandler:
+    ldr   r0,=DMA1_DriverIRQHandler
+    bx    r0
+    .size DMA1_IRQHandler, . - DMA1_IRQHandler
+
+    .align 1
+    .thumb_func
+    .weak FLEXCOMM8_IRQHandler
+    .type FLEXCOMM8_IRQHandler, %function
+FLEXCOMM8_IRQHandler:
+    ldr   r0,=FLEXCOMM8_DriverIRQHandler
+    bx    r0
+    .size FLEXCOMM8_IRQHandler, . - FLEXCOMM8_IRQHandler
+
+/*    Macro to define default handlers. Default handler
+ *    will be weak symbol and just dead loops. They can be
+ *    overwritten by other handlers */
+    .macro def_irq_handler  handler_name
+    .weak \handler_name
+    .set  \handler_name, DefaultISR
+    .endm
+/* Exception Handlers */
+    def_irq_handler    MemManage_Handler
+    def_irq_handler    BusFault_Handler
+    def_irq_handler    UsageFault_Handler
+    def_irq_handler    SecureFault_Handler
+    def_irq_handler    DebugMon_Handler
+    def_irq_handler    WDT_BOD_DriverIRQHandler              /* Windowed watchdog timer, Brownout detect, Flash interrupt */
+    def_irq_handler    DMA0_DriverIRQHandler              /* DMA0 controller */
+    def_irq_handler    GINT0_DriverIRQHandler              /* GPIO group 0 */
+    def_irq_handler    GINT1_DriverIRQHandler              /* GPIO group 1 */
+    def_irq_handler    PIN_INT0_DriverIRQHandler              /* Pin interrupt 0 or pattern match engine slice 0 */
+    def_irq_handler    PIN_INT1_DriverIRQHandler              /* Pin interrupt 1or pattern match engine slice 1 */
+    def_irq_handler    PIN_INT2_DriverIRQHandler              /* Pin interrupt 2 or pattern match engine slice 2 */
+    def_irq_handler    PIN_INT3_DriverIRQHandler              /* Pin interrupt 3 or pattern match engine slice 3 */
+    def_irq_handler    UTICK0_DriverIRQHandler              /* Micro-tick Timer */
+    def_irq_handler    MRT0_DriverIRQHandler              /* Multi-rate timer */
+    def_irq_handler    CTIMER0_DriverIRQHandler              /* Standard counter/timer CTIMER0 */
+    def_irq_handler    CTIMER1_DriverIRQHandler              /* Standard counter/timer CTIMER1 */
+    def_irq_handler    SCT0_DriverIRQHandler              /* SCTimer/PWM */
+    def_irq_handler    CTIMER3_DriverIRQHandler              /* Standard counter/timer CTIMER3 */
+    def_irq_handler    FLEXCOMM0_DriverIRQHandler              /* Flexcomm Interface 0 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM1_DriverIRQHandler              /* Flexcomm Interface 1 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM2_DriverIRQHandler              /* Flexcomm Interface 2 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM3_DriverIRQHandler              /* Flexcomm Interface 3 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM4_DriverIRQHandler              /* Flexcomm Interface 4 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM5_DriverIRQHandler              /* Flexcomm Interface 5 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM6_DriverIRQHandler              /* Flexcomm Interface 6 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    FLEXCOMM7_DriverIRQHandler              /* Flexcomm Interface 7 (USART, SPI, I2C, I2S, FLEXCOMM) */
+    def_irq_handler    ADC0_DriverIRQHandler              /* ADC0  */
+    def_irq_handler    Reserved39_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    ACMP_DriverIRQHandler              /* ACMP  interrupts */
+    def_irq_handler    Reserved41_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    Reserved42_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    USB0_NEEDCLK_DriverIRQHandler              /* USB Activity Wake-up Interrupt */
+    def_irq_handler    USB0_DriverIRQHandler              /* USB device */
+    def_irq_handler    RTC_DriverIRQHandler              /* RTC alarm and wake-up interrupts */
+    def_irq_handler    Reserved46_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    MAILBOX_DriverIRQHandler              /* WAKEUP,Mailbox interrupt (present on selected devices) */
+    def_irq_handler    PIN_INT4_DriverIRQHandler              /* Pin interrupt 4 or pattern match engine slice 4 int */
+    def_irq_handler    PIN_INT5_DriverIRQHandler              /* Pin interrupt 5 or pattern match engine slice 5 int */
+    def_irq_handler    PIN_INT6_DriverIRQHandler              /* Pin interrupt 6 or pattern match engine slice 6 int */
+    def_irq_handler    PIN_INT7_DriverIRQHandler              /* Pin interrupt 7 or pattern match engine slice 7 int */
+    def_irq_handler    CTIMER2_DriverIRQHandler              /* Standard counter/timer CTIMER2 */
+    def_irq_handler    CTIMER4_DriverIRQHandler              /* Standard counter/timer CTIMER4 */
+    def_irq_handler    OS_EVENT_DriverIRQHandler              /* OSEVTIMER0 and OSEVTIMER0_WAKEUP interrupts */
+    def_irq_handler    Reserved55_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    Reserved56_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    Reserved57_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    SDIO_DriverIRQHandler              /* SD/MMC  */
+    def_irq_handler    Reserved59_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    Reserved60_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    Reserved61_DriverIRQHandler              /* Reserved interrupt */
+    def_irq_handler    USB1_PHY_DriverIRQHandler              /* USB1_PHY */
+    def_irq_handler    USB1_DriverIRQHandler              /* USB1 interrupt */
+    def_irq_handler    USB1_NEEDCLK_DriverIRQHandler              /* USB1 activity */
+    def_irq_handler    SEC_HYPERVISOR_CALL_DriverIRQHandler              /* SEC_HYPERVISOR_CALL interrupt */
+    def_irq_handler    SEC_GPIO_INT0_IRQ0_DriverIRQHandler              /* SEC_GPIO_INT0_IRQ0 interrupt */
+    def_irq_handler    SEC_GPIO_INT0_IRQ1_DriverIRQHandler              /* SEC_GPIO_INT0_IRQ1 interrupt */
+    def_irq_handler    PLU_DriverIRQHandler              /* PLU interrupt */
+    def_irq_handler    SEC_VIO_DriverIRQHandler              /* SEC_VIO interrupt */
+    def_irq_handler    HASHCRYPT_DriverIRQHandler              /* HASHCRYPT interrupt */
+    def_irq_handler    CASER_DriverIRQHandler              /* CASPER interrupt */
+    def_irq_handler    PUF_DriverIRQHandler              /* PUF interrupt */
+    def_irq_handler    PQ_DriverIRQHandler              /* PQ interrupt */
+    def_irq_handler    DMA1_DriverIRQHandler              /* DMA1 interrupt */
+    def_irq_handler    FLEXCOMM8_DriverIRQHandler              /* Flexcomm Interface 8 (SPI, , FLEXCOMM) */
+
+    .end

+ 5 - 5
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/RTE/USB/USBD_Config_0.c → CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_0.c

@@ -19,7 +19,7 @@
 // <h>USB Device 0
 //   <o>Connect to hardware via Driver_USBD# <0-255>
 //   <i>Select driver control block for hardware interface.
-#define USBD0_PORT                      0
+#define USBD0_PORT                      1
 
 //   <o.0>High-speed
 //   <i>Enable High-speed functionality (if device supports it).
@@ -38,7 +38,7 @@
 
 //     <o.0..15>Product ID <0x0000-0xFFFF>
 //     <i>Product ID assigned by manufacturer (idProduct).
-#define USBD0_DEV_DESC_IDPRODUCT        0xF001
+#define USBD0_DEV_DESC_IDPRODUCT        0xF00B
 
 //     <o.0..15>Device Release Number <0x0000-0xFFFF>
 //     <i>Device Release Number in binary-coded decimal (bcdDevice)
@@ -75,7 +75,7 @@
 
 //     <s.126>Product String
 //     <i>String Descriptor describing Product.
-#define USBD0_STR_DESC_PROD             L"LPC-Link2 CMSIS-DAP"
+#define USBD0_STR_DESC_PROD             L"MCU-LINK"
 
 //     <e.0>Serial Number String
 //     <i>Enable Serial Number String.
@@ -98,7 +98,7 @@
 //   <i>These settings are used to create the Microsoft OS Descriptors.
 //     <e.0>OS String
 //     <i>Enable creation of Microsoft OS String and Extended Compat ID OS Feature Descriptors.
-#define USBD0_OS_DESC_EN                0
+#define USBD0_OS_DESC_EN                1
 
 //       <o.0..7>Vendor Code <0x01-0xFF>
 //       <i>Specifies Vendor Code used to retrieve OS Feature Descriptors.
@@ -115,7 +115,7 @@
 //   <h>OS Resources Settings
 //   <i>These settings are used to optimize usage of OS resources.
 //     <o>Core Thread Stack Size <64-65536>
-#define USBD0_CORE_THREAD_STACK_SIZE    512
+#define USBD0_CORE_THREAD_STACK_SIZE    1024
 
 //        Core Thread Priority
 #define USBD0_CORE_THREAD_PRIORITY      osPriorityAboveNormal

+ 364 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_CDC_0.h

@@ -0,0 +1,364 @@
+/*------------------------------------------------------------------------------
+ * MDK Middleware - Component ::USB:Device
+ * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved.
+ *------------------------------------------------------------------------------
+ * Name:    USBD_Config_CDC_0.h
+ * Purpose: USB Device Communication Device Class (CDC) Configuration
+ * Rev.:    V5.2.0
+ *----------------------------------------------------------------------------*/
+
+//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
+
+// <h>USB Device: Communication Device Class (CDC) 0
+//   <o>Assign Device Class to USB Device # <0-3>
+//   <i>Select USB Device that is used for this Device Class instance
+#define USBD_CDC0_DEV                    0
+
+//   <o>Communication Class Subclass
+//   <i>Specifies the model used by the CDC class.
+//     <2=>Abstract Control Model (ACM)
+//     <13=>Network Control Model (NCM)
+#define USBD_CDC0_SUBCLASS               2
+
+//   <o>Communication Class Protocol
+//   <i>Specifies the protocol used by the CDC class.
+//     <0=>No protocol (Virtual COM)
+//     <255=>Vendor-specific (RNDIS)
+#define USBD_CDC0_PROTOCOL               0
+
+//   <h>Interrupt Endpoint Settings
+//   <i>By default, the settings match the first USB Class instance in a USB Device.
+//   <i>Endpoint conflicts are flagged by compile-time error messages.
+
+//     <o.0..3>Interrupt IN Endpoint Number
+//               <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//       <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+#define USBD_CDC0_EP_INT_IN              3
+
+
+//     <h>Endpoint Settings
+//       <i>Parameters are used to create Endpoint Descriptors
+//       <i>and for memory allocation in the USB component.
+
+//       <h>Full/Low-speed (High-speed disabled)
+//       <i>Parameters apply when High-speed is disabled in USBD_Config_n.c
+//         <o.0..6>Maximum Endpoint Packet Size (in bytes) <0-64>
+//         <i>Specifies the physical packet size used for information exchange.
+//         <i>Maximum value is 64.
+#define USBD_CDC0_WMAXPACKETSIZE         16
+
+//         <o.0..7>Endpoint polling Interval (in ms) <1-255>
+//         <i>Specifies the frequency of requests initiated by USB Host for
+//         <i>getting the notification.
+#define USBD_CDC0_BINTERVAL              2
+
+//       </h>
+
+//       <h>High-speed
+//       <i>Parameters apply when High-speed is enabled in USBD_Config_n.c
+//
+//         <o.0..10>Maximum Endpoint Packet Size (in bytes) <0-1024>
+//         <i>Specifies the physical packet size used for information exchange.
+//         <i>Maximum value is 1024.
+//         <o.11..12>Additional transactions per microframe
+//         <i>Additional transactions improve communication performance.
+//           <0=>None <1=>1 additional <2=>2 additional
+#define USBD_CDC0_HS_WMAXPACKETSIZE      16
+
+//         <o.0..4>Endpoint polling Interval (in 125 us intervals)
+//         <i>Specifies the frequency of requests initiated by USB Host for
+//         <i>getting the notification.
+//           <1=>    1 <2=>    2 <3=>     4 <4=>     8
+//           <5=>   16 <6=>   32 <7=>    64 <8=>   128
+//           <9=>  256 <10=> 512 <11=> 1024 <12=> 2048
+//           <13=>4096 <14=>8192 <15=>16384 <16=>32768
+#define USBD_CDC0_HS_BINTERVAL           2
+
+//       </h>
+//     </h>
+//   </h>
+
+
+//   <h>Bulk Endpoint Settings
+//   <i>By default, the settings match the first USB Class instance in a USB Device.
+//   <i>Endpoint conflicts are flagged by compile-time error messages.
+
+//     <o.0..3>Bulk IN Endpoint Number
+//               <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//       <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+#define USBD_CDC0_EP_BULK_IN             4
+
+//     <o.0..3>Bulk OUT Endpoint Number
+//               <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//       <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+#define USBD_CDC0_EP_BULK_OUT            4
+
+
+//     <h>Endpoint Settings
+//       <i>Parameters are used to create USB Descriptors and for memory
+//       <i>allocation in the USB component.
+//
+//       <h>Full/Low-speed (High-speed disabled)
+//       <i>Parameters apply when High-speed is disabled in USBD_Config_n.c
+//         <o.0..6>Maximum Endpoint Packet Size (in bytes) <8=>8 <16=>16 <32=>32 <64=>64
+//         <i>Specifies the physical packet size used for information exchange.
+//         <i>Maximum value is 64.
+#define USBD_CDC0_WMAXPACKETSIZE1        64
+
+//       </h>
+
+//       <h>High-speed
+//       <i>Parameters apply when High-speed is enabled in USBD_Config_n.c
+//
+//         <o.0..9>Maximum Endpoint Packet Size (in bytes) <512=>512
+//         <i>Specifies the physical packet size used for information exchange.
+//         <i>Only available value is 512.
+#define USBD_CDC0_HS_WMAXPACKETSIZE1     512
+
+//         <o.0..7>Maximum NAK Rate <0-255>
+//         <i>Specifies the interval in which Bulk Endpoint can NAK.
+//         <i>Value of 0 indicates that Bulk Endpoint never NAKs.
+#define USBD_CDC0_HS_BINTERVAL1          0
+
+//       </h>
+//     </h>
+//   </h>
+
+//   <h>Communication Device Class Settings
+//   <i>Parameters are used to create USB Descriptors and for memory allocation
+//   <i>in the USB component.
+//
+//     <s.126>Communication Class Interface String
+#define USBD_CDC0_CIF_STR_DESC           L"USB_CDC0_0"
+
+//     <s.126>Data Class Interface String
+#define USBD_CDC0_DIF_STR_DESC           L"USB_CDC0_1"
+
+//     <h>Abstract Control Model Settings
+
+//       <h>Call Management Capabilities
+//       <i>Specifies which call management functionality is supported.
+//         <o.1>Call Management channel
+//           <0=>Communication Class Interface only
+//           <1=>Communication and Data Class Interface
+//         <o.0>Device Call Management handling
+//           <0=>None
+//           <1=>All
+//       </h>
+#define USBD_CDC0_ACM_CM_BM_CAPABILITIES 0x03
+
+//       <h>Abstract Control Management Capabilities
+//       <i>Specifies which abstract control management functionality is supported.
+//         <o.3>D3 bit
+//           <i>Enabled = Supports the notification Network_Connection
+//         <o.2>D2 bit
+//           <i>Enabled = Supports the request Send_Break
+//         <o.1>D1 bit
+//           <i>Enabled = Supports the following requests: Set_Line_Coding, Get_Line_Coding,
+//           <i> Set_Control_Line_State, and notification Serial_State
+//         <o.0>D0 bit
+//           <i>Enabled = Supports the following requests: Set_Comm_Feature, Clear_Comm_Feature and Get_Comm_Feature
+//       </h>
+#define USBD_CDC0_ACM_ACM_BM_CAPABILITIES 0x06
+
+//       <o>Maximum Communication Device Send Buffer Size
+//       <i>Specifies size of buffer used for sending of data to USB Host.
+//         <8=>      8 Bytes <16=>    16 Bytes <32=>    32 Bytes <64=>      64 Bytes
+//         <128=>  128 Bytes <256=>  256 Bytes <512=>  512 Bytes <1024=>  1024 Bytes
+//         <2048=>2048 Bytes <4096=>4096 Bytes <8192=>8192 Bytes <16384=>16384 Bytes
+#define USBD_CDC0_ACM_SEND_BUF_SIZE      1024
+
+//       <o>Maximum Communication Device Receive Buffer Size
+//       <i>Specifies size of buffer used for receiving of data from USB Host.
+//       <i>Minimum size must be twice as large as Maximum Packet Size for Bulk OUT Endpoint.
+//       <i>Suggested size is three or more times larger then Maximum Packet Size for Bulk OUT Endpoint.
+//         <8=>      8 Bytes <16=>    16 Bytes <32=>    32 Bytes <64=>      64 Bytes
+//         <128=>  128 Bytes <256=>  256 Bytes <512=>  512 Bytes <1024=>  1024 Bytes
+//         <2048=>2048 Bytes <4096=>4096 Bytes <8192=>8192 Bytes <16384=>16384 Bytes
+#define USBD_CDC0_ACM_RECEIVE_BUF_SIZE   2048
+
+//     </h>
+
+//     <h>Network Control Model Settings
+
+//       <s.12>MAC Address String
+//       <i>Specifies 48-bit Ethernet MAC address.
+#define USBD_CDC0_NCM_MAC_ADDRESS        L"1E306CA2455E"
+
+//       <h>Ethernet Statistics
+//       <i>Specifies Ethernet statistic functions supported.
+//         <o.0>XMIT_OK
+//         <i>Frames transmitted without errors
+//         <o.1>RVC_OK
+//         <i>Frames received without errors
+//         <o.2>XMIT_ERROR
+//         <i>Frames not transmitted, or transmitted with errors
+//         <o.3>RCV_ERROR
+//         <i>Frames received with errors that are not delivered to the USB host.
+//         <o.4>RCV_NO_BUFFER
+//         <i>Frame missed, no buffers
+//         <o.5>DIRECTED_BYTES_XMIT
+//         <i>Directed bytes transmitted without errors
+//         <o.6>DIRECTED_FRAMES_XMIT
+//         <i>Directed frames transmitted without errors
+//         <o.7>MULTICAST_BYTES_XMIT
+//         <i>Multicast bytes transmitted without errors
+//         <o.8>MULTICAST_FRAMES_XMIT
+//         <i>Multicast frames transmitted without errors
+//         <o.9>BROADCAST_BYTES_XMIT
+//         <i>Broadcast bytes transmitted without errors
+//         <o.10>BROADCAST_FRAMES_XMIT
+//         <i>Broadcast frames transmitted without errors
+//         <o.11>DIRECTED_BYTES_RCV
+//         <i>Directed bytes received without errors
+//         <o.12>DIRECTED_FRAMES_RCV
+//         <i>Directed frames received without errors
+//         <o.13>MULTICAST_BYTES_RCV
+//         <i>Multicast bytes received without errors
+//         <o.14>MULTICAST_FRAMES_RCV
+//         <i>Multicast frames received without errors
+//         <o.15>BROADCAST_BYTES_RCV
+//         <i>Broadcast bytes received without errors
+//         <o.16>BROADCAST_FRAMES_RCV
+//         <i>Broadcast frames received without errors
+//         <o.17>RCV_CRC_ERROR
+//         <i>Frames received with circular redundancy check (CRC) or frame check sequence (FCS) error
+//         <o.18>TRANSMIT_QUEUE_LENGTH
+//         <i>Length of transmit queue
+//         <o.19>RCV_ERROR_ALIGNMENT
+//         <i>Frames received with alignment error
+//         <o.20>XMIT_ONE_COLLISION
+//         <i>Frames transmitted with one collision
+//         <o.21>XMIT_MORE_COLLISIONS
+//         <i>Frames transmitted with more than one collision
+//         <o.22>XMIT_DEFERRED
+//         <i>Frames transmitted after deferral
+//         <o.23>XMIT_MAX_COLLISIONS
+//         <i>Frames not transmitted due to collisions
+//         <o.24>RCV_OVERRUN
+//         <i>Frames not received due to overrun
+//         <o.25>XMIT_UNDERRUN
+//         <i>Frames not transmitted due to underrun
+//         <o.26>XMIT_HEARTBEAT_FAILURE
+//         <i>Frames transmitted with heartbeat failure
+//         <o.27>XMIT_TIMES_CRS_LOST
+//         <i>Times carrier sense signal lost during transmission
+//         <o.28>XMIT_LATE_COLLISIONS
+//         <i>Late collisions detected
+//       </h>
+#define USBD_CDC0_NCM_BM_ETHERNET_STATISTICS     0x00000003
+
+//       <o>Maximum Segment Size
+//       <i>Specifies maximum segment size that Ethernet device is capable of supporting.
+//       <i>Typically 1514 bytes.
+#define USBD_CDC0_NCM_W_MAX_SEGMENT_SIZE         1514
+
+//       <o.15>Multicast Filtering <0=>Perfect (no hashing) <1=>Imperfect (hashing)
+//       <i>Specifies multicast filtering type.
+//       <o.0..14>Number of Multicast Filters
+//       <i>Specifies number of multicast filters that can be configured by the USB Host.
+#define USBD_CDC0_NCM_W_NUMBER_MC_FILTERS        1
+
+//       <o.0..7>Number of Power Filters
+//       <i>Specifies number of pattern filters that are available for causing wake-up of the USB Host.
+#define USBD_CDC0_NCM_B_NUMBER_POWER_FILTERS     0
+
+//       <h>Network Capabilities
+//       <i>Specifies which functions are supported.
+//         <o.4>SetCrcMode/GetCrcMode
+//         <o.3>SetMaxDatagramSize/GetMaxDatagramSize
+//         <o.1>SetNetAddress/GetNetAddress
+//         <o.0>SetEthernetPacketFilter
+//       </h>
+#define USBD_CDC0_NCM_BM_NETWORK_CAPABILITIES    0x1B
+
+//       <h>NTB Parameters
+//       <i>Specifies NTB parameters reported by GetNtbParameters function.
+
+//         <h>NTB Formats Supported (bmNtbFormatsSupported)
+//         <i>Specifies NTB formats supported.
+//           <o.0>16-bit NTB (always supported)
+//           <o.1>32-bit NTB
+//         </h>
+#define USBD_CDC0_NCM_BM_NTB_FORMATS_SUPPORTED   0x0001
+
+//         <h>IN Data Pipe
+//
+//           <o>Maximum NTB Size (dwNtbInMaxSize)
+//           <i>Specifies maximum IN NTB size in bytes.
+#define USBD_CDC0_NCM_DW_NTB_IN_MAX_SIZE         4096
+
+//           <o.0..15>NTB Datagram Payload Alignment Divisor (wNdpInDivisor)
+//           <i>Specifies divisor used for IN NTB Datagram payload alignment.
+#define USBD_CDC0_NCM_W_NDP_IN_DIVISOR           4
+
+//           <o.0..15>NTB Datagram Payload Alignment Remainder (wNdpInPayloadRemainder)
+//           <i>Specifies remainder used to align input datagram payload within the NTB.
+//           <i>(Payload Offset) % (wNdpInDivisor) = wNdpInPayloadRemainder
+#define USBD_CDC0_NCM_W_NDP_IN_PAYLOAD_REMINDER  0
+
+//           <o.0..15>NDP Alignment Modulus in NTB (wNdpInAlignment)
+//           <i>Specifies NDP alignment modulus for NTBs on the IN pipe.
+//           <i>Shall be power of 2, and shall be at least 4.
+#define USBD_CDC0_NCM_W_NDP_IN_ALIGNMENT         4
+
+//         </h>
+
+//         <h>OUT Data Pipe
+//
+//           <o>Maximum NTB Size (dwNtbOutMaxSize)
+//           <i>Specifies maximum OUT NTB size in bytes.
+#define USBD_CDC0_NCM_DW_NTB_OUT_MAX_SIZE        4096
+
+//           <o.0..15>NTB Datagram Payload Alignment Divisor (wNdpOutDivisor)
+//           <i>Specifies divisor used for OUT NTB Datagram payload alignment.
+#define USBD_CDC0_NCM_W_NDP_OUT_DIVISOR          4
+
+//           <o.0..15>NTB Datagram Payload Alignment Remainder (wNdpOutPayloadRemainder)
+//           <i>Specifies remainder used to align output datagram payload within the NTB.
+//           <i>(Payload Offset) % (wNdpOutDivisor) = wNdpOutPayloadRemainder
+#define USBD_CDC0_NCM_W_NDP_OUT_PAYLOAD_REMINDER 0
+
+//           <o.0..15>NDP Alignment Modulus in NTB (wNdpOutAlignment)
+//           <i>Specifies NDP alignment modulus for NTBs on the IN pipe.
+//           <i>Shall be power of 2, and shall be at least 4.
+#define USBD_CDC0_NCM_W_NDP_OUT_ALIGNMENT        4
+
+//         </h>
+
+//       </h>
+
+//       <o.0>Raw Data Access API
+//       <i>Enables or disables Raw Data Access API.
+#define USBD_CDC0_NCM_RAW_ENABLE         0
+
+//       <o>IN NTB Data Buffering <1=>Single Buffer <2=>Double Buffer
+//       <i>Specifies buffering used for sending data to USB Host.
+//       <i>Not used when RAW Data Access API is enabled.
+#define USBD_CDC0_NCM_NTB_IN_BUF_CNT     1
+
+//       <o>OUT NTB Data Buffering <1=>Single Buffer <2=>Double Buffer
+//       <i>Specifies buffering used for receiving data from USB Host.
+//       <i>Not used when RAW Data Access API is enabled.
+#define USBD_CDC0_NCM_NTB_OUT_BUF_CNT    1
+
+//     </h>
+
+//   </h>
+
+//   <h>OS Resources Settings
+//   <i>These settings are used to optimize usage of OS resources.
+//     <o>Communication Device Class Interrupt Endpoint Thread Stack Size <64-65536>
+#define USBD_CDC0_INT_THREAD_STACK_SIZE  512
+
+//        Communication Device Class Interrupt Endpoint Thread Priority
+#define USBD_CDC0_INT_THREAD_PRIORITY    osPriorityAboveNormal
+
+//     <o>Communication Device Class Bulk Endpoints Thread Stack Size <64-65536>
+#define USBD_CDC0_BULK_THREAD_STACK_SIZE 512
+
+//        Communication Device Class Bulk Endpoints Thread Priority
+#define USBD_CDC0_BULK_THREAD_PRIORITY   osPriorityAboveNormal
+
+//   </h>
+// </h>

+ 3771 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/RTE/USB/USBD_Config_CustomClass_0.h

@@ -0,0 +1,3771 @@
+/*------------------------------------------------------------------------------
+ * MDK Middleware - Component ::USB:Device
+ * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved.
+ *------------------------------------------------------------------------------
+ * Name:    USBD_Config_CustomClass_0.h
+ * Purpose: USB Device Custom Class Configuration
+ * Rev.:    V5.2.0
+ *----------------------------------------------------------------------------*/
+
+//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
+
+// <h>USB Device: Custom Class 0
+// <i>Custom Class can be used to make support for Standard or Vendor-Specific Class
+//   <o>Assign Device Class to USB Device # <0-3>
+//   <i>Select USB Device that is used for this Device Class instance
+#define USBD_CUSTOM_CLASS0_DEV                                     0
+
+//   <e0.0>Interface Association
+//   <i>Used for grouping of multiple interfaces to a single class.
+#define USBD_CUSTOM_CLASS0_IAD_EN                                  0
+
+//       <o.0..7>Class Code
+//         <i>Class Codes are defined by USB-IF. For more information refer to
+//         <i>http://www.usb.org/developers/defined_class.
+//         <0x00=>0x00: Indicate a Null Class Code triple
+//         <0x01=>0x01: Audio
+//         <0x02=>0x02: Communications and CDC Control
+//         <0x03=>0x03: HID (Human Interface Device)
+//         <0x05=>0x05: Physical
+//         <0x06=>0x06: Image
+//         <0x07=>0x07: Printer
+//         <0x08=>0x08: Mass Storage
+//         <0x0A=>0x0A: CDC-Data
+//         <0x0B=>0x0B: Smart Card
+//         <0x0D=>0x0D: Content Security
+//         <0x0E=>0x0E: Video
+//         <0x0F=>0x0F: Personal Healthcare
+//         <0x10=>0x10: Audio/Video Devices
+//         <0xDC=>0xDC: Diagnostic Device
+//         <0xE0=>0xE0: Wireless Controller
+//         <0xEF=>0xEF: Miscellaneous
+//         <0xFE=>0xFE: Application Specific
+//         <0xFF=>0xFF: Vendor Specific
+#define USBD_CUSTOM_CLASS0_IAD_CLASS                               0xFF
+
+//       <o.0..7>Subclass Code <0x00-0xFF>
+//       <i>The possible values depend on the Class Code:
+//       <i>Class Code 0x00: Subclass Code must be 0
+//       <i>Class Code 0x01 .. 0xFE: Subclass Code is defined by USB-IF
+//       <i>Class Code 0xFF: Subclass Code can be 0x00 .. 0xFF
+#define USBD_CUSTOM_CLASS0_IAD_SUBCLASS                            0x00
+
+//       <o.0..7>Protocol Code <0x00-0xFF>
+//       <i>The Protocol Code value defines the protocol used on this interface:
+//       <i>Protocol Code 0x00: class-specific protocol not used
+//       <i>Protocol Code 0x01 .. 0xFE: class-specific protocol used
+//       <i>Protocol Code 0xFF: vendor-specific protocol used
+#define USBD_CUSTOM_CLASS0_IAD_PROTOCOL                            0x00
+
+//   </e>
+
+
+//   <e>Interface
+#define USBD_CUSTOM_CLASS0_IF0_EN                                  1
+
+//     <h>Interface Settings
+//     <i>The Interface Settings are used to create the Interface Descriptor.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about the Interface Descriptor.
+
+//       <o>Interface Number <0-255>
+//       <i>Defines the value for bInterfaceNumber
+//       <i>Each USB Device Interface has a sequential Interface Number starting with 0.
+//       <i>Several Interfaces may have the same Interface Number; in this case the value
+//       <i>of Alternate Setting is used to differ between the Interfaces. For a
+//       <i>composite device the Interface Numbers of the custom classes must be contiguous.
+#define USBD_CUSTOM_CLASS0_IF0_NUM                                 0
+
+//       <o>Alternate Setting <0=>0 <1=>1 <2=>2 <3=>3
+//       <i>Defines the value for bAlternateSetting
+//       <i>A sequential number starting with 0 to identify the Interface Descriptors
+//       <i>that share the same value for Interface Number.
+#define USBD_CUSTOM_CLASS0_IF0_ALT                                 0
+
+//       <o.0..7>Class Code
+//         <i>Class Codes are defined by USB-IF. For more information refer to
+//         <i>http://www.usb.org/developers/defined_class.
+//         <0x00=>0x00: Indicate a Null Class Code triple
+//         <0x01=>0x01: Audio
+//         <0x02=>0x02: Communications and CDC Control
+//         <0x03=>0x03: HID (Human Interface Device)
+//         <0x05=>0x05: Physical
+//         <0x06=>0x06: Image
+//         <0x07=>0x07: Printer
+//         <0x08=>0x08: Mass Storage
+//         <0x0A=>0x0A: CDC-Data
+//         <0x0B=>0x0B: Smart Card
+//         <0x0D=>0x0D: Content Security
+//         <0x0E=>0x0E: Video
+//         <0x0F=>0x0F: Personal Healthcare
+//         <0x10=>0x10: Audio/Video Devices
+//         <0xDC=>0xDC: Diagnostic Device
+//         <0xE0=>0xE0: Wireless Controller
+//         <0xEF=>0xEF: Miscellaneous
+//         <0xFE=>0xFE: Application Specific
+//         <0xFF=>0xFF: Vendor Specific
+#define USBD_CUSTOM_CLASS0_IF0_CLASS                               0xFF
+
+//       <o.0..7>Subclass Code <0x00-0xFF>
+//       <i>The possible values depend on the Class Code:
+//       <i>Class Code 0x00: Subclass Code must be 0
+//       <i>Class Code 0x01 .. 0xFE: Subclass Code is defined by USB-IF
+//       <i>Class Code 0xFF: Subclass Code can be 0x00 .. 0xFF
+#define USBD_CUSTOM_CLASS0_IF0_SUBCLASS                            0x00
+
+//       <o.0..7>Protocol Code <0x00-0xFF>
+//       <i>The Protocol Code value defines the protocol used on this interface:
+//       <i>Protocol Code 0x00: class-specific protocol not used
+//       <i>Protocol Code 0x01 .. 0xFE: class-specific protocol used
+//       <i>Protocol Code 0xFF: vendor-specific protocol used
+#define USBD_CUSTOM_CLASS0_IF0_PROTOCOL                            0x00
+
+//     </h>
+
+//     <h>Endpoint Settings
+//     <i>Following settings are used to create the Endpoint Descriptors.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about Endpoint Descriptors.
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP0_EN                              1
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP0_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP0_BENDPOINTADDRESS                0x01
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP0_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP0_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP0_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP0_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP1_EN                              1
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP1_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP1_BENDPOINTADDRESS                0x81
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP1_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP1_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP1_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP1_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP2_EN                              1
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP2_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP2_BENDPOINTADDRESS                0x82
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP2_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP2_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP2_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP2_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP3_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP3_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP3_BENDPOINTADDRESS                0x82
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP3_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP3_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP3_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP3_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP4_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP4_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP4_BENDPOINTADDRESS                0x03
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP4_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP4_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP4_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP4_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP5_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP5_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP5_BENDPOINTADDRESS                0x83
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP5_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP5_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP5_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP5_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP6_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP6_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP6_BENDPOINTADDRESS                0x04
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP6_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP6_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP6_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP6_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_EP7_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF0_EP7_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF0_EP7_BENDPOINTADDRESS                0x84
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF0_EP7_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP7_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF0_EP7_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF0_EP7_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+//     </h>
+
+//     <h>String Settings
+//     <i>Following settings are used to create String Descriptor(s)
+
+//       <e.0>Interface String Enable
+//       <i>Enable Interface String.
+//       <i>If disabled Interface String will not be assigned to USB Device Custom Class Interface 0.
+#define USBD_CUSTOM_CLASS0_IF0_STR_EN                              1
+
+//         <s.126>Interface String
+#define USBD_CUSTOM_CLASS0_IF0_STR                                 L"MCU-LINK CMSIS-DAP"
+
+//       </e>
+//     </h>
+
+//     <h>Microsoft OS Descriptor Settings
+//     <i>Following settings are used to create Extended Compat ID OS Feature Descriptor
+
+//       <e.0>Extended Compat ID OS Feature Descriptor Function Section
+//       <i>Enable creation of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_COMPAT_ID_EN                 1
+
+//         <s.7>compatibleID
+//         <i>compatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_COMPAT_ID                    "WINUSB"
+
+//         <s.7>subCompatibleID
+//         <i>subCompatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_SUBCOMPAT_ID                 ""
+
+//       </e>
+
+//       <h>Extended Properties OS Feature Descriptor
+//         <e.0>Custom Property Section 0
+//         <i>Enable creation of custom property 0 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP0_EN                     1
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 0 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP0_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP0_NAME                   L"DeviceInterfaceGUID"
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP0_DATA_STR               L"{CDB3B5AD-293B-4663-AA36-1AAE46463776}"
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP0_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 1
+//         <i>Enable creation of custom property 1 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP1_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 1 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP1_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP1_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP1_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP1_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 2
+//         <i>Enable creation of custom property 2 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP2_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 2 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP2_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP2_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP2_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP2_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 3
+//         <i>Enable creation of custom property 3 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP3_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 3 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP3_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP3_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP3_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF0_OS_EXT_PROP3_DATA_INT               0
+
+//           </h>
+//         </e>
+//       </h>
+//     </h>
+//   </e>
+
+
+//   <e>Interface
+#define USBD_CUSTOM_CLASS0_IF1_EN                                  0
+
+//     <h>Interface Settings
+//     <i>The Interface Settings are used to create the Interface Descriptor.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about the Interface Descriptor.
+
+//       <o>Interface Number <0-255>
+//       <i>Defines the value for bInterfaceNumber
+//       <i>Each USB Device Interface has a sequential Interface Number starting with 0.
+//       <i>Several Interfaces may have the same Interface Number; in this case the value
+//       <i>of Alternate Setting is used to differ between the Interfaces. For a
+//       <i>composite device the Interface Numbers of the custom classes must be contiguous.
+#define USBD_CUSTOM_CLASS0_IF1_NUM                                 1
+
+//       <o>Alternate Setting <0=>0 <1=>1 <2=>2 <3=>3
+//       <i>Defines the value for bAlternateSetting
+//       <i>A sequential number starting with 0 to identify the Interface Descriptors
+//       <i>that share the same value for Interface Number.
+#define USBD_CUSTOM_CLASS0_IF1_ALT                                 0
+
+//       <o.0..7>Class Code
+//         <i>Class Codes are defined by USB-IF. For more information refer to
+//         <i>http://www.usb.org/developers/defined_class.
+//         <0x00=>0x00: Indicate a Null Class Code triple
+//         <0x01=>0x01: Audio
+//         <0x02=>0x02: Communications and CDC Control
+//         <0x03=>0x03: HID (Human Interface Device)
+//         <0x05=>0x05: Physical
+//         <0x06=>0x06: Image
+//         <0x07=>0x07: Printer
+//         <0x08=>0x08: Mass Storage
+//         <0x0A=>0x0A: CDC-Data
+//         <0x0B=>0x0B: Smart Card
+//         <0x0D=>0x0D: Content Security
+//         <0x0E=>0x0E: Video
+//         <0x0F=>0x0F: Personal Healthcare
+//         <0x10=>0x10: Audio/Video Devices
+//         <0xDC=>0xDC: Diagnostic Device
+//         <0xE0=>0xE0: Wireless Controller
+//         <0xEF=>0xEF: Miscellaneous
+//         <0xFE=>0xFE: Application Specific
+//         <0xFF=>0xFF: Vendor Specific
+#define USBD_CUSTOM_CLASS0_IF1_CLASS                               0xFF
+
+//       <o.0..7>Subclass Code <0x00-0xFF>
+//       <i>The possible values depend on the Class Code:
+//       <i>Class Code 0x00: Subclass Code must be 0
+//       <i>Class Code 0x01 .. 0xFE: Subclass Code is defined by USB-IF
+//       <i>Class Code 0xFF: Subclass Code can be 0x00 .. 0xFF
+#define USBD_CUSTOM_CLASS0_IF1_SUBCLASS                            0x00
+
+//       <o.0..7>Protocol Code <0x00-0xFF>
+//       <i>The Protocol Code value defines the protocol used on this interface:
+//       <i>Protocol Code 0x00: class-specific protocol not used
+//       <i>Protocol Code 0x01 .. 0xFE: class-specific protocol used
+//       <i>Protocol Code 0xFF: vendor-specific protocol used
+#define USBD_CUSTOM_CLASS0_IF1_PROTOCOL                            0x00
+
+//     </h>
+
+//     <h>Endpoint Settings
+//     <i>Following settings are used to create the Endpoint Descriptors.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about Endpoint Descriptors.
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP0_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP0_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP0_BENDPOINTADDRESS                0x01
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP0_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP0_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP0_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP0_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP1_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP1_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP1_BENDPOINTADDRESS                0x81
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP1_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP1_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP1_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP1_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP2_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP2_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP2_BENDPOINTADDRESS                0x02
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP2_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP2_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP2_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP2_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP3_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP3_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP3_BENDPOINTADDRESS                0x82
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP3_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP3_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP3_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP3_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP4_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP4_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP4_BENDPOINTADDRESS                0x03
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP4_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP4_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP4_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP4_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP5_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP5_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP5_BENDPOINTADDRESS                0x83
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP5_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP5_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP5_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP5_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP6_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP6_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP6_BENDPOINTADDRESS                0x04
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP6_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP6_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP6_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP6_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_EP7_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF1_EP7_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF1_EP7_BENDPOINTADDRESS                0x84
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF1_EP7_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP7_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF1_EP7_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF1_EP7_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+//     </h>
+
+//     <h>String Settings
+//     <i>Following settings are used to create String Descriptor(s)
+
+//       <e.0>Interface String Enable
+//       <i>Enable Interface String.
+//       <i>If disabled Interface String will not be assigned to USB Device Custom Class Interface 1.
+#define USBD_CUSTOM_CLASS0_IF1_STR_EN                              0
+
+//         <s.126>Interface String
+#define USBD_CUSTOM_CLASS0_IF1_STR                                 L"USB_CUSTOM_CLASS0_IF1"
+
+//       </e>
+//     </h>
+
+//     <h>Microsoft OS Descriptor Settings
+//     <i>Following settings are used to create Extended Compat ID OS Feature Descriptor
+
+//       <e.0>Extended Compat ID OS Feature Descriptor Function Section
+//       <i>Enable creation of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_COMPAT_ID_EN                 0
+
+//         <s.7>compatibleID
+//         <i>compatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_COMPAT_ID                    "WINUSB"
+
+//         <s.7>subCompatibleID
+//         <i>subCompatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_SUBCOMPAT_ID                 ""
+
+//       </e>
+
+//       <h>Extended Properties OS Feature Descriptor
+//         <e.0>Custom Property Section 0
+//         <i>Enable creation of custom property 0 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP0_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 0 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP0_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP0_NAME                   L"DeviceInterfaceGUID"
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP0_DATA_STR               L"{7D9ADCFC-E570-4B38-BF4E-8F81F68964E0}"
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP0_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 1
+//         <i>Enable creation of custom property 1 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP1_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 1 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP1_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP1_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP1_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP1_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 2
+//         <i>Enable creation of custom property 2 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP2_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 2 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP2_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP2_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP2_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP2_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 3
+//         <i>Enable creation of custom property 3 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP3_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 3 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP3_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP3_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP3_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF1_OS_EXT_PROP3_DATA_INT               0
+
+//           </h>
+//         </e>
+//       </h>
+//     </h>
+//   </e>
+
+
+//   <e>Interface
+#define USBD_CUSTOM_CLASS0_IF2_EN                                  0
+
+//     <h>Interface Settings
+//     <i>The Interface Settings are used to create the Interface Descriptor.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about the Interface Descriptor.
+
+//       <o>Interface Number <0-255>
+//       <i>Defines the value for bInterfaceNumber
+//       <i>Each USB Device Interface has a sequential Interface Number starting with 0.
+//       <i>Several Interfaces may have the same Interface Number; in this case the value
+//       <i>of Alternate Setting is used to differ between the Interfaces. For a
+//       <i>composite device the Interface Numbers of the custom classes must be contiguous.
+#define USBD_CUSTOM_CLASS0_IF2_NUM                                 2
+
+//       <o>Alternate Setting <0=>0 <1=>1 <2=>2 <3=>3
+//       <i>Defines the value for bAlternateSetting
+//       <i>A sequential number starting with 0 to identify the Interface Descriptors
+//       <i>that share the same value for Interface Number.
+#define USBD_CUSTOM_CLASS0_IF2_ALT                                 0
+
+//       <o.0..7>Class Code
+//         <i>Class Codes are defined by USB-IF. For more information refer to
+//         <i>http://www.usb.org/developers/defined_class.
+//         <0x00=>0x00: Indicate a Null Class Code triple
+//         <0x01=>0x01: Audio
+//         <0x02=>0x02: Communications and CDC Control
+//         <0x03=>0x03: HID (Human Interface Device)
+//         <0x05=>0x05: Physical
+//         <0x06=>0x06: Image
+//         <0x07=>0x07: Printer
+//         <0x08=>0x08: Mass Storage
+//         <0x0A=>0x0A: CDC-Data
+//         <0x0B=>0x0B: Smart Card
+//         <0x0D=>0x0D: Content Security
+//         <0x0E=>0x0E: Video
+//         <0x0F=>0x0F: Personal Healthcare
+//         <0x10=>0x10: Audio/Video Devices
+//         <0xDC=>0xDC: Diagnostic Device
+//         <0xE0=>0xE0: Wireless Controller
+//         <0xEF=>0xEF: Miscellaneous
+//         <0xFE=>0xFE: Application Specific
+//         <0xFF=>0xFF: Vendor Specific
+#define USBD_CUSTOM_CLASS0_IF2_CLASS                               0xFF
+
+//       <o.0..7>Subclass Code <0x00-0xFF>
+//       <i>The possible values depend on the Class Code:
+//       <i>Class Code 0x00: Subclass Code must be 0
+//       <i>Class Code 0x01 .. 0xFE: Subclass Code is defined by USB-IF
+//       <i>Class Code 0xFF: Subclass Code can be 0x00 .. 0xFF
+#define USBD_CUSTOM_CLASS0_IF2_SUBCLASS                            0x00
+
+//       <o.0..7>Protocol Code <0x00-0xFF>
+//       <i>The Protocol Code value defines the protocol used on this interface:
+//       <i>Protocol Code 0x00: class-specific protocol not used
+//       <i>Protocol Code 0x01 .. 0xFE: class-specific protocol used
+//       <i>Protocol Code 0xFF: vendor-specific protocol used
+#define USBD_CUSTOM_CLASS0_IF2_PROTOCOL                            0x00
+
+//     </h>
+
+//     <h>Endpoint Settings
+//     <i>Following settings are used to create the Endpoint Descriptors.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about Endpoint Descriptors.
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP0_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP0_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP0_BENDPOINTADDRESS                0x01
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP0_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP0_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP0_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP0_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP1_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP1_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP1_BENDPOINTADDRESS                0x81
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP1_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP1_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP1_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP1_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP2_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP2_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP2_BENDPOINTADDRESS                0x02
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP2_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP2_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP2_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP2_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP3_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP3_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP3_BENDPOINTADDRESS                0x82
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP3_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP3_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP3_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP3_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP4_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP4_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP4_BENDPOINTADDRESS                0x03
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP4_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP4_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP4_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP4_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP5_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP5_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP5_BENDPOINTADDRESS                0x83
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP5_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP5_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP5_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP5_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP6_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP6_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP6_BENDPOINTADDRESS                0x04
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP6_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP6_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP6_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP6_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_EP7_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF2_EP7_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF2_EP7_BENDPOINTADDRESS                0x84
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF2_EP7_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP7_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF2_EP7_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF2_EP7_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+//     </h>
+
+//     <h>String Settings
+//     <i>Following settings are used to create String Descriptor(s)
+
+//       <e.0>Interface String Enable
+//       <i>Enable Interface String.
+//       <i>If disabled Interface String will not be assigned to USB Device Custom Class Interface 2.
+#define USBD_CUSTOM_CLASS0_IF2_STR_EN                              0
+
+//         <s.126>Interface String
+#define USBD_CUSTOM_CLASS0_IF2_STR                                 L"USB_CUSTOM_CLASS0_IF2"
+
+//       </e>
+//     </h>
+
+//     <h>Microsoft OS Descriptor Settings
+//     <i>Following settings are used to create Extended Compat ID OS Feature Descriptor
+
+//       <e.0>Extended Compat ID OS Feature Descriptor Function Section
+//       <i>Enable creation of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_COMPAT_ID_EN                 0
+
+//         <s.7>compatibleID
+//         <i>compatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_COMPAT_ID                    "WINUSB"
+
+//         <s.7>subCompatibleID
+//         <i>subCompatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_SUBCOMPAT_ID                 ""
+
+//       </e>
+
+//       <h>Extended Properties OS Feature Descriptor
+//         <e.0>Custom Property Section 0
+//         <i>Enable creation of custom property 0 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP0_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 0 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP0_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP0_NAME                   L"DeviceInterfaceGUID"
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP0_DATA_STR               L"{7D9ADCFC-E570-4B38-BF4E-8F81F68964E0}"
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP0_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 1
+//         <i>Enable creation of custom property 1 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP1_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 1 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP1_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP1_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP1_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP1_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 2
+//         <i>Enable creation of custom property 2 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP2_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 2 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP2_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP2_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP2_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP2_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 3
+//         <i>Enable creation of custom property 3 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP3_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 3 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP3_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP3_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP3_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF2_OS_EXT_PROP3_DATA_INT               0
+
+//           </h>
+//         </e>
+//       </h>
+//     </h>
+//   </e>
+
+
+//   <e>Interface
+#define USBD_CUSTOM_CLASS0_IF3_EN                                  0
+
+//     <h>Interface Settings
+//     <i>The Interface Settings are used to create the Interface Descriptor.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about the Interface Descriptor.
+
+//       <o>Interface Number <0-255>
+//       <i>Defines the value for bInterfaceNumber
+//       <i>Each USB Device Interface has a sequential Interface Number starting with 0.
+//       <i>Several Interfaces may have the same Interface Number; in this case the value
+//       <i>of Alternate Setting is used to differ between the Interfaces. For a
+//       <i>composite device the Interface Numbers of the custom classes must be contiguous.
+#define USBD_CUSTOM_CLASS0_IF3_NUM                                 3
+
+//       <o>Alternate Setting <0=>0 <1=>1 <2=>2 <3=>3
+//       <i>Defines the value for bAlternateSetting
+//       <i>A sequential number starting with 0 to identify the Interface Descriptors
+//       <i>that share the same value for Interface Number.
+#define USBD_CUSTOM_CLASS0_IF3_ALT                                 0
+
+//       <o.0..7>Class Code
+//         <i>Class Codes are defined by USB-IF. For more information refer to
+//         <i>http://www.usb.org/developers/defined_class.
+//         <0x00=>0x00: Indicate a Null Class Code triple
+//         <0x01=>0x01: Audio
+//         <0x02=>0x02: Communications and CDC Control
+//         <0x03=>0x03: HID (Human Interface Device)
+//         <0x05=>0x05: Physical
+//         <0x06=>0x06: Image
+//         <0x07=>0x07: Printer
+//         <0x08=>0x08: Mass Storage
+//         <0x0A=>0x0A: CDC-Data
+//         <0x0B=>0x0B: Smart Card
+//         <0x0D=>0x0D: Content Security
+//         <0x0E=>0x0E: Video
+//         <0x0F=>0x0F: Personal Healthcare
+//         <0x10=>0x10: Audio/Video Devices
+//         <0xDC=>0xDC: Diagnostic Device
+//         <0xE0=>0xE0: Wireless Controller
+//         <0xEF=>0xEF: Miscellaneous
+//         <0xFE=>0xFE: Application Specific
+//         <0xFF=>0xFF: Vendor Specific
+#define USBD_CUSTOM_CLASS0_IF3_CLASS                               0xFF
+
+//       <o.0..7>Subclass Code <0x00-0xFF>
+//       <i>The possible values depend on the Class Code:
+//       <i>Class Code 0x00: Subclass Code must be 0
+//       <i>Class Code 0x01 .. 0xFE: Subclass Code is defined by USB-IF
+//       <i>Class Code 0xFF: Subclass Code can be 0x00 .. 0xFF
+#define USBD_CUSTOM_CLASS0_IF3_SUBCLASS                            0x00
+
+//       <o.0..7>Protocol Code <0x00-0xFF>
+//       <i>The Protocol Code value defines the protocol used on this interface:
+//       <i>Protocol Code 0x00: class-specific protocol not used
+//       <i>Protocol Code 0x01 .. 0xFE: class-specific protocol used
+//       <i>Protocol Code 0xFF: vendor-specific protocol used
+#define USBD_CUSTOM_CLASS0_IF3_PROTOCOL                            0x00
+
+//     </h>
+
+//     <h>Endpoint Settings
+//     <i>Following settings are used to create the Endpoint Descriptors.
+//     <i>Refer to USB - USB Concepts - USB Descriptor in the MDK Components
+//     <i>User's Guide for more information about Endpoint Descriptors.
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP0_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP0_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP0_BENDPOINTADDRESS                0x01
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP0_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP0_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP0_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP0_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP1_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP1_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP1_BENDPOINTADDRESS                0x81
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP1_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP1_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP1_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP1_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP2_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP2_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP2_BENDPOINTADDRESS                0x02
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP2_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP2_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP2_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP2_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP3_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP3_BMATTRIBUTES                    0x03
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP3_BENDPOINTADDRESS                0x82
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP3_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP3_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP3_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP3_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP4_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP4_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP4_BENDPOINTADDRESS                0x03
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP4_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP4_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP4_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP4_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP5_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP5_BMATTRIBUTES                    0x01
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP5_BENDPOINTADDRESS                0x83
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP5_FS_WMAXPACKETSIZE               1023
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP5_FS_BINTERVAL                    1
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP5_HS_WMAXPACKETSIZE               1024
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP5_HS_BINTERVAL                    1
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP6_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP6_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP6_BENDPOINTADDRESS                0x04
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP6_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP6_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP6_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP6_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+
+//       <e>Endpoint
+//       <i>Enable Endpoint for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_EP7_EN                              0
+
+//         <o.0..1>Type
+//           <i>Select Endpoint Type.
+//           <i>Endpoint Descriptor: bmAttributes field bits 0 .. 1.
+//           <i>If required, for Isochronous Endpoint, Synchronization and Usage Type 
+//           <i>can be set by manually editing define value of BMATTRIBUTES.
+//           <2=>Bulk
+//           <3=>Interrupt
+//           <1=>Isochronous
+#define USBD_CUSTOM_CLASS0_IF3_EP7_BMATTRIBUTES                    0x02
+
+//         <o.0..3>Number
+//           <i>Select Endpoint Number.
+//           <i>Endpoint Descriptor: bEndpointAddress field bits 0 .. 3.
+//                   <1=>1   <2=>2   <3=>3   <4=>4   <5=>5   <6=>6   <7=>7
+//           <8=>8   <9=>9   <10=>10 <11=>11 <12=>12 <13=>13 <14=>14 <15=>15
+//         <o.7>Direction
+//           <i>Select Endpoint Direction.
+//           <i>Endpoint Descriptor: bEndpointAddress field bit 7.
+//           <0=>OUT
+//           <1=>IN
+#define USBD_CUSTOM_CLASS0_IF3_EP7_BENDPOINTADDRESS                0x84
+
+//         <h>Speed Settings
+//           <i>Settings that are different depending on device operating speed.
+//
+//           <h>Full/Low-speed
+//             <i>Parameters apply when device operates in Full/Low-speed.
+//
+//             <o.0..9>Maximum Packet Size <0-1023>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 8, 16, 32 or 64.
+//               <i>For Interrupt Endpoint set value to 1 .. 64.
+//               <i>For Isochronous Endpoint set value to 1 .. 1023.
+#define USBD_CUSTOM_CLASS0_IF3_EP7_FS_WMAXPACKETSIZE               64
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in ms).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>Setting is not used for Bulk Endpoint (set value to 0).
+//               <i>For Interrupt Endpoint set value to 1 .. 255 (polling interval).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP7_FS_BINTERVAL                    0
+
+//           </h>
+
+//           <h>High-speed
+//             <i>Parameters apply when High-speed is enabled in corresponding USBD_Config_n.c
+//             <i>(n is the index of device on which this interface will be used) and when
+//             <i>device operates in High-speed.
+//
+//             <o.0..10>Maximum Packet Size <0-1024>
+//               <i>Specifies the physical packet size used for information exchange (in bytes).
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 0 .. 10.
+//               <i>For Bulk Endpoint set value to 512.
+//               <i>For Interrupt Endpoint set value to 1 .. 1024.
+//               <i>For Isochronous Endpoint set value to 1 .. 1024.
+//             <o.11..12>Additional Transactions per Microframe
+//               <i>Specifies additional transactions per microframe to improve communication performance.
+//               <i>Endpoint Descriptor: wMaxPacketSize field bits 11 .. 12.
+//               <i>Relevant only if Endpoint Type is Isochronous or Interrupt.
+//               <i>Value: None = 1 transaction per microframe
+//               <i>Value: 1 additional = 2 transaction per microframe
+//               <i>Value: 2 additional = 3 transaction per microframe
+//                 <0=>None
+//                 <1=>1 additional
+//                 <2=>2 additional
+#define USBD_CUSTOM_CLASS0_IF3_EP7_HS_WMAXPACKETSIZE               512
+
+//             <o.0..7>Endpoint Polling Interval <0-255>
+//               <i>Specifies the frequency of requests initiated by USB Host (in 125 us units).
+//               <i>Endpoint Descriptor: bInterval field.
+//               <i>For Bulk Endpoint this setting represents maximum NAK rate, set value to 0 .. 255.
+//               <i>For Interrupt Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+//               <i>For Isochronous Endpoint set value to 1 .. 16 (polling interval is 2^(value-1)).
+#define USBD_CUSTOM_CLASS0_IF3_EP7_HS_BINTERVAL                    0
+
+//           </h>
+//         </h>
+//       </e>
+//     </h>
+
+//     <h>String Settings
+//     <i>Following settings are used to create String Descriptor(s)
+
+//       <e.0>Interface String Enable
+//       <i>Enable Interface String.
+//       <i>If disabled Interface String will not be assigned to USB Device Custom Class Interface 3.
+#define USBD_CUSTOM_CLASS0_IF3_STR_EN                              0
+
+//         <s.126>Interface String
+#define USBD_CUSTOM_CLASS0_IF3_STR                                 L"USB_CUSTOM_CLASS0_IF3"
+
+//       </e>
+//     </h>
+
+//     <h>Microsoft OS Descriptor Settings
+//     <i>Following settings are used to create Extended Compat ID OS Feature Descriptor
+
+//       <e.0>Extended Compat ID OS Feature Descriptor Function Section
+//       <i>Enable creation of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_COMPAT_ID_EN                 0
+
+//         <s.7>compatibleID
+//         <i>compatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_COMPAT_ID                    "WINUSB"
+
+//         <s.7>subCompatibleID
+//         <i>subCompatibleID field of function section in Extended Compat ID OS Feature Descriptor for this interface.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_SUBCOMPAT_ID                 ""
+
+//       </e>
+
+//       <h>Extended Properties OS Feature Descriptor
+//         <e.0>Custom Property Section 0
+//         <i>Enable creation of custom property 0 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP0_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 0 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP0_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP0_NAME                   L"DeviceInterfaceGUID"
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP0_DATA_STR               L"{7D9ADCFC-E570-4B38-BF4E-8F81F68964E0}"
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP0_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 1
+//         <i>Enable creation of custom property 1 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP1_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 1 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP1_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP1_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP1_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP1_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 2
+//         <i>Enable creation of custom property 2 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP2_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 2 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP2_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP2_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP2_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP2_DATA_INT               0
+
+//           </h>
+//         </e>
+
+//         <e.0>Custom Property Section 3
+//         <i>Enable creation of custom property 3 section in Extended Properties OS Feature Descriptor.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP3_EN                     0
+
+//           <o>Data Type
+//           <i>Specifies the dwPropertyDataType field of custom property 3 section in Extended Properties OS Feature Descriptor.
+//           <i>Values 3 (Free-form binary) and 7 (Multiple Unicode Strings) are not supported.
+//             <1=>Unicode String (REG_SZ)
+//             <2=>Unicode String with environment variables (REG_EXPAND_SZ)
+//             <4=>Little-endian 32-bit integer (REG_DWORD_LITTLE_ENDIAN)
+//             <5=>Big-endian 32-bit integer (REG_DWORD_BIG_ENDIAN)
+//             <6=>Unicode String with symbolic link (REG_LINK)
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP3_DATA_TYP               1
+
+//           <s.512>Name
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP3_NAME                   L""
+
+//           <h>Data
+//             <s.1024>Unicode String
+//             <i>Property Data in case Data Type is selected as Unicode String.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP3_DATA_STR               L""
+
+//             <o>32-bit Integer
+//             <i>Property Data in case Data Type is selected as Little/Big-endian 32-bit Integer.
+#define USBD_CUSTOM_CLASS0_IF3_OS_EXT_PROP3_DATA_INT               0
+
+//           </h>
+//         </e>
+//       </h>
+//     </h>
+//   </e>
+
+
+//   <h>OS Resources Settings
+//   <i>These settings are used to optimize usage of OS resources.
+//     <o>Endpoint 1 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 1 is enabled.
+#define USBD_CUSTOM_CLASS0_EP1_THREAD_STACK_SIZE                   512
+
+//        Endpoint 1 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP1_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 2 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 2 is enabled.
+#define USBD_CUSTOM_CLASS0_EP2_THREAD_STACK_SIZE                   512
+
+//        Endpoint 2 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP2_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 3 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 3 is enabled.
+#define USBD_CUSTOM_CLASS0_EP3_THREAD_STACK_SIZE                   512
+
+//        Endpoint 3 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP3_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 4 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 4 is enabled.
+#define USBD_CUSTOM_CLASS0_EP4_THREAD_STACK_SIZE                   512
+
+//        Endpoint 4 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP4_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 5 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 5 is enabled.
+#define USBD_CUSTOM_CLASS0_EP5_THREAD_STACK_SIZE                   512
+
+//        Endpoint 5 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP5_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 6 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 6 is enabled.
+#define USBD_CUSTOM_CLASS0_EP6_THREAD_STACK_SIZE                   512
+
+//        Endpoint 6 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP6_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 7 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 7 is enabled.
+#define USBD_CUSTOM_CLASS0_EP7_THREAD_STACK_SIZE                   512
+
+//        Endpoint 7 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP7_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 8 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 8 is enabled.
+#define USBD_CUSTOM_CLASS0_EP8_THREAD_STACK_SIZE                   512
+
+//        Endpoint 8 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP8_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 9 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 9 is enabled.
+#define USBD_CUSTOM_CLASS0_EP9_THREAD_STACK_SIZE                   512
+
+//        Endpoint 9 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP9_THREAD_PRIORITY                     osPriorityAboveNormal
+
+//     <o>Endpoint 10 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 10 is enabled.
+#define USBD_CUSTOM_CLASS0_EP10_THREAD_STACK_SIZE                  512
+
+//        Endpoint 10 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP10_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//     <o>Endpoint 11 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 11 is enabled.
+#define USBD_CUSTOM_CLASS0_EP11_THREAD_STACK_SIZE                  512
+
+//        Endpoint 11 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP11_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//     <o>Endpoint 12 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 12 is enabled.
+#define USBD_CUSTOM_CLASS0_EP12_THREAD_STACK_SIZE                  512
+
+//        Endpoint 12 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP12_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//     <o>Endpoint 13 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 13 is enabled.
+#define USBD_CUSTOM_CLASS0_EP13_THREAD_STACK_SIZE                  512
+
+//        Endpoint 13 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP13_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//     <o>Endpoint 14 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 14 is enabled.
+#define USBD_CUSTOM_CLASS0_EP14_THREAD_STACK_SIZE                  512
+
+//        Endpoint 14 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP14_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//     <o>Endpoint 15 Thread Stack Size <64-65536>
+//     <i>This setting is used if Endpoint 15 is enabled.
+#define USBD_CUSTOM_CLASS0_EP15_THREAD_STACK_SIZE                  512
+
+//        Endpoint 15 Thread Priority
+#define USBD_CUSTOM_CLASS0_EP15_THREAD_PRIORITY                    osPriorityAboveNormal
+
+//   </h>
+// </h>

+ 984 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD1_LPC55xxx.c

@@ -0,0 +1,984 @@
+/* -----------------------------------------------------------------------------
+ * Copyright (c) 2021 ARM Ltd.
+ *
+ * This software is provided 'as-is', without any express or implied warranty.
+ * In no event will the authors be held liable for any damages arising from
+ * the use of this software. Permission is granted to anyone to use this
+ * software for any purpose, including commercial applications, and to alter
+ * it and redistribute it freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software in
+ *    a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ *
+ * $Date:        28. June 2021
+ * $Revision:    V1.0
+ *
+ * Driver:       Driver_USBD1
+ * Project:      USB1 High-Speed Device Driver for NXP LPC55xxx
+ * --------------------------------------------------------------------------
+ * Use the following configuration settings in the middleware component
+ * to connect to this driver.
+ *
+ *   Configuration Setting                  Value
+ *   ---------------------                  -----
+ *   Connect to hardware via Driver_USBD# = 1
+ * --------------------------------------------------------------------------
+ * Defines used for driver configuration (at compile time):
+ *
+ *   USBD1_MAX_ENDPOINT_NUM: defines maximum number of IN/OUT Endpoint pairs 
+ *                           that driver will support with Control Endpoint 0
+ *                           not included, this value impacts driver memory
+ *                           requirements
+ *     - default value: 5
+ *     - maximum value: 5
+ *
+ *   USBD1_OUT_EP0_BUF_SZ:   defines Out Endpoint0 buffer size (in Bytes)
+ *   USBD1_IN_EP0_BUF_SZ:    defines In  Endpoint0 buffer size (in Bytes)
+ *   USBD1_OUT_EP1_BUF_SZ:   defines Out Endpoint1 buffer size (in Bytes)
+ *   USBD1_IN_EP1_BUF_SZ:    defines In  Endpoint1 buffer size (in Bytes)
+ *   USBD1_OUT_EP2_BUF_SZ:   defines Out Endpoint2 buffer size (in Bytes)
+ *   USBD1_IN_EP2_BUF_SZ:    defines In  Endpoint2 buffer size (in Bytes)
+ *   USBD1_OUT_EP3_BUF_SZ:   defines Out Endpoint3 buffer size (in Bytes)
+ *   USBD1_IN_EP3_BUF_SZ:    defines In  Endpoint3 buffer size (in Bytes)
+ *   USBD1_OUT_EP4_BUF_SZ:   defines Out Endpoint4 buffer size (in Bytes)
+ *   USBD1_IN_EP4_BUF_SZ:    defines In  Endpoint4 buffer size (in Bytes)
+ *   USBD1_OUT_EP5_BUF_SZ:   defines Out Endpoint5 buffer size (in Bytes)
+ *   USBD1_IN_EP5_BUF_SZ:    defines In  Endpoint5 buffer size (in Bytes)
+ * -------------------------------------------------------------------------- */
+
+/* History:
+ *  Version 1.0
+ *    Initial release
+ */
+
+#include <stdint.h>
+#include <string.h>
+
+#include "Driver_USBD.h"
+
+#include "RTE_Device.h"
+#include "RTE_Components.h"
+
+#include "fsl_common.h"
+#include "fsl_power.h"
+#include "fsl_clock.h"
+#include "fsl_reset.h"
+
+#include "USB_LPC55xxx.h"
+
+// Endpoint buffer must be 64Byte aligned
+#define ALIGN_64(n)                    (n == 0U ? (0U) : (64U * (((n - 1U) / 64U) + 1U)))
+
+#ifndef USBD1_MAX_ENDPOINT_NUM
+#define USBD1_MAX_ENDPOINT_NUM         (5U)
+#endif
+#if    (USBD1_MAX_ENDPOINT_NUM > 5)
+#error  Too many Endpoints, maximum IN/OUT Endpoint pairs that this driver supports is 5 !!!
+#endif
+
+// Endpoint Bufer size definitions
+#ifndef USBD1_OUT_EP0_BUF_SZ
+#define USBD1_OUT_EP0_BUF_SZ           (64U)
+#endif
+#ifndef USBD1_IN_EP0_BUF_SZ
+#define USBD1_IN_EP0_BUF_SZ            (64U)
+#endif
+#define USBD1_OUT_EP0_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP0_BUF_SZ))
+#define USBD1_IN_EP0_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP0_BUF_SZ))
+
+#if (USBD1_MAX_ENDPOINT_NUM > 0)
+#ifndef USBD1_OUT_EP1_BUF_SZ
+#define USBD1_OUT_EP1_BUF_SZ           (1024U)
+#endif
+#ifndef USBD1_IN_EP1_BUF_SZ
+#define USBD1_IN_EP1_BUF_SZ            (1024U)
+#endif                     
+#else
+#define USBD1_OUT_EP1_BUF_SZ           (0U)
+#define USBD1_IN_EP1_BUF_SZ            (0U)
+#endif
+#define USBD1_OUT_EP1_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP1_BUF_SZ))
+#define USBD1_IN_EP1_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP1_BUF_SZ))
+
+#if (USBD1_MAX_ENDPOINT_NUM > 1)
+#ifndef USBD1_OUT_EP2_BUF_SZ
+#define USBD1_OUT_EP2_BUF_SZ           (1024U)
+#endif
+#ifndef USBD1_IN_EP2_BUF_SZ
+#define USBD1_IN_EP2_BUF_SZ            (1024U)
+#endif
+#else
+#define USBD1_OUT_EP2_BUF_SZ           (0U)
+#define USBD1_IN_EP2_BUF_SZ            (0U)
+#endif
+#define USBD1_OUT_EP2_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP2_BUF_SZ))
+#define USBD1_IN_EP2_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP2_BUF_SZ))
+
+#if (USBD1_MAX_ENDPOINT_NUM > 2)
+#ifndef USBD1_OUT_EP3_BUF_SZ
+#define USBD1_OUT_EP3_BUF_SZ           (1024U)
+#endif
+#ifndef USBD1_IN_EP3_BUF_SZ
+#define USBD1_IN_EP3_BUF_SZ            (1024U)
+#endif
+#else
+#define USBD1_OUT_EP3_BUF_SZ           (0U)
+#define USBD1_IN_EP3_BUF_SZ            (0U)
+#endif
+#define USBD1_OUT_EP3_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP3_BUF_SZ))
+#define USBD1_IN_EP3_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP3_BUF_SZ))
+
+#if (USBD1_MAX_ENDPOINT_NUM > 3)
+#ifndef USBD1_OUT_EP4_BUF_SZ
+#define USBD1_OUT_EP4_BUF_SZ           (1024U)
+#endif
+#ifndef USBD1_IN_EP4_BUF_SZ
+#define USBD1_IN_EP4_BUF_SZ            (1024U)
+#endif
+#else
+#define USBD1_OUT_EP4_BUF_SZ           (0U)
+#define USBD1_IN_EP4_BUF_SZ            (0U)
+#endif
+#define USBD1_OUT_EP4_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP4_BUF_SZ))
+#define USBD1_IN_EP4_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP4_BUF_SZ))
+
+#if (USBD1_MAX_ENDPOINT_NUM > 4)
+#ifndef USBD1_OUT_EP5_BUF_SZ
+#define USBD1_OUT_EP5_BUF_SZ           (1024U)
+#endif
+#ifndef USBD1_IN_EP5_BUF_SZ
+#define USBD1_IN_EP5_BUF_SZ            (1024U)
+#endif
+#else
+#define USBD1_OUT_EP5_BUF_SZ           (0U)
+#define USBD1_IN_EP5_BUF_SZ            (0U)
+#endif
+#define USBD1_OUT_EP5_BUF_SZ_64        (ALIGN_64(USBD1_OUT_EP5_BUF_SZ))
+#define USBD1_IN_EP5_BUF_SZ_64         (ALIGN_64(USBD1_IN_EP5_BUF_SZ))
+
+#define USBD1_OUT_EP0_BUF_OFFSET       (0U)
+#define USBD1_IN_EP0_BUF_OFFSET        (USBD1_OUT_EP0_BUF_SZ_64)
+#define USBD1_OUT_EP1_BUF_OFFSET       (USBD1_IN_EP0_BUF_OFFSET  + USBD1_IN_EP0_BUF_SZ_64)
+#define USBD1_IN_EP1_BUF_OFFSET        (USBD1_OUT_EP1_BUF_OFFSET + USBD1_OUT_EP1_BUF_SZ_64)
+#define USBD1_OUT_EP2_BUF_OFFSET       (USBD1_IN_EP1_BUF_OFFSET  + USBD1_IN_EP1_BUF_SZ_64)
+#define USBD1_IN_EP2_BUF_OFFSET        (USBD1_OUT_EP2_BUF_OFFSET + USBD1_OUT_EP2_BUF_SZ_64)
+#define USBD1_OUT_EP3_BUF_OFFSET       (USBD1_IN_EP2_BUF_OFFSET  + USBD1_IN_EP2_BUF_SZ_64)
+#define USBD1_IN_EP3_BUF_OFFSET        (USBD1_OUT_EP3_BUF_OFFSET + USBD1_OUT_EP3_BUF_SZ_64)
+#define USBD1_OUT_EP4_BUF_OFFSET       (USBD1_IN_EP3_BUF_OFFSET  + USBD1_IN_EP3_BUF_SZ_64)
+#define USBD1_IN_EP4_BUF_OFFSET        (USBD1_OUT_EP4_BUF_OFFSET + USBD1_OUT_EP4_BUF_SZ_64)
+#define USBD1_OUT_EP5_BUF_OFFSET       (USBD1_IN_EP4_BUF_OFFSET  + USBD1_IN_EP4_BUF_SZ_64)
+#define USBD1_IN_EP5_BUF_OFFSET        (USBD1_OUT_EP5_BUF_OFFSET + USBD1_OUT_EP5_BUF_SZ_64)
+
+#define USBD_EP_BUFFER_SZ              (USBD1_OUT_EP0_BUF_SZ_64 + USBD1_IN_EP0_BUF_SZ_64 + \
+                                        USBD1_OUT_EP1_BUF_SZ_64 + USBD1_IN_EP1_BUF_SZ_64 + \
+                                        USBD1_OUT_EP2_BUF_SZ_64 + USBD1_IN_EP2_BUF_SZ_64 + \
+                                        USBD1_OUT_EP3_BUF_SZ_64 + USBD1_IN_EP3_BUF_SZ_64 + \
+                                        USBD1_OUT_EP4_BUF_SZ_64 + USBD1_IN_EP4_BUF_SZ_64 + \
+                                        USBD1_OUT_EP5_BUF_SZ_64 + USBD1_IN_EP5_BUF_SZ_64 )
+
+#if (USBD_EP_BUFFER_SZ > 0x3C00U)
+  #error "Endpoint buffers do not fit into RAMx!"
+#endif
+
+#define EP_NUM(ep_addr)   (ep_addr & ARM_USB_ENDPOINT_NUMBER_MASK)
+#define EP_IDX(ep_addr)  ((ep_addr & 0x80U) ? ((EP_NUM(ep_addr)) * 2U + 1U)  : (ep_addr * 2U))
+#define CMD_IDX(ep_addr) ((ep_addr & 0x80U) ? ((EP_NUM(ep_addr)) * 4U + 2U)  : (ep_addr * 4U))
+
+// Resource allocation
+static uint8_t           ep_buf[USBD_EP_BUFFER_SZ]                __attribute__((section(".bss.ARM.__at_0x40100000")));
+static EP_CMD            ep_cmd[(USBD1_MAX_ENDPOINT_NUM + 1) * 4] __attribute__((section(".bss.ARM.__at_0x40103C00")));
+static EP_TRANSFER       ep_transfer[(USBD1_MAX_ENDPOINT_NUM + 1) * 2];
+
+// Global variables
+static ARM_USBD_STATE    usbd_state;
+static uint8_t           usbd_flags;
+
+static uint8_t           setup_packet[8];     // Setup packet data
+static volatile uint8_t  setup_received;      // Setup packet received
+
+static ARM_USBD_SignalDeviceEvent_t   SignalDeviceEvent;
+static ARM_USBD_SignalEndpointEvent_t SignalEndpointEvent;
+
+static const EP endpoint[] = {
+  // Endpoint 0
+  { &(ep_cmd[0]),  &(ep_buf[USBD1_OUT_EP0_BUF_OFFSET]), &(ep_transfer[0]), USBD1_OUT_EP0_BUF_OFFSET, },
+  { &(ep_cmd[2]),  &(ep_buf[USBD1_IN_EP0_BUF_OFFSET]),  &(ep_transfer[1]), USBD1_IN_EP0_BUF_OFFSET,  },
+
+#if (USBD1_MAX_ENDPOINT_NUM > 0U)
+  // Endpoint 1
+  { &(ep_cmd[4]),  &(ep_buf[USBD1_OUT_EP1_BUF_OFFSET]), &(ep_transfer[2]), USBD1_OUT_EP1_BUF_OFFSET, },
+  { &(ep_cmd[6]),  &(ep_buf[USBD1_IN_EP1_BUF_OFFSET]),  &(ep_transfer[3]), USBD1_IN_EP1_BUF_OFFSET,  },
+#endif
+
+#if (USBD1_MAX_ENDPOINT_NUM > 1U)
+  // Endpoint 2
+  { &(ep_cmd[8]),  &(ep_buf[USBD1_OUT_EP2_BUF_OFFSET]), &(ep_transfer[4]), USBD1_OUT_EP2_BUF_OFFSET, },
+  { &(ep_cmd[10]), &(ep_buf[USBD1_IN_EP2_BUF_OFFSET]),  &(ep_transfer[5]), USBD1_IN_EP2_BUF_OFFSET,  },
+#endif
+
+#if (USBD1_MAX_ENDPOINT_NUM > 2U)
+  // Endpoint 3
+  { &(ep_cmd[12]), &(ep_buf[USBD1_OUT_EP3_BUF_OFFSET]), &(ep_transfer[6]), USBD1_OUT_EP3_BUF_OFFSET, },
+  { &(ep_cmd[14]), &(ep_buf[USBD1_IN_EP3_BUF_OFFSET]),  &(ep_transfer[7]), USBD1_IN_EP3_BUF_OFFSET,  },
+#endif
+
+#if (USBD1_MAX_ENDPOINT_NUM > 3U)
+  // Endpoint 4
+  { &(ep_cmd[16]), &(ep_buf[USBD1_OUT_EP4_BUF_OFFSET]), &(ep_transfer[8]), USBD1_OUT_EP4_BUF_OFFSET, },
+  { &(ep_cmd[18]), &(ep_buf[USBD1_IN_EP4_BUF_OFFSET]),  &(ep_transfer[9]), USBD1_IN_EP4_BUF_OFFSET,  },
+#endif
+#if (USBD1_MAX_ENDPOINT_NUM > 4U)
+  // Endpoint 5
+  { &(ep_cmd[16]), &(ep_buf[USBD1_OUT_EP5_BUF_OFFSET]), &(ep_transfer[8]), USBD1_OUT_EP5_BUF_OFFSET, },
+  { &(ep_cmd[18]), &(ep_buf[USBD1_IN_EP5_BUF_OFFSET]),  &(ep_transfer[9]), USBD1_IN_EP5_BUF_OFFSET,  },
+#endif
+};
+
+
+// USBD Driver *****************************************************************
+
+#define ARM_USBD_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(1,0)
+
+// Driver Version
+static const ARM_DRIVER_VERSION usbd_driver_version = { ARM_USBD_API_VERSION, ARM_USBD_DRV_VERSION };
+
+// Driver Capabilities
+static const ARM_USBD_CAPABILITIES usbd_driver_capabilities = {
+#if (USBD_VBUS_DETECT == 1)
+  1U,   // VBUS Detection
+  1U,   // Event VBUS On
+  1U,   // Event VBUS Off
+#else
+  0U,   // VBUS Detection
+  0U,   // Event VBUS On
+  0U    // Event VBUS Off
+#endif
+};
+
+/**
+  \fn          void USBD_Reset (void)
+  \brief       Reset USB Endpoint settings and variables.
+*/
+static void USBD_Reset (void) {
+  // Clear USB Endpoint command/status list
+  memset((void *)ep_cmd, 0, sizeof(ep_cmd));
+
+  memset((void *)&usbd_state, 0, sizeof(usbd_state));
+}
+
+// USBD Driver functions
+
+/**
+  \fn          ARM_DRIVER_VERSION USBD_GetVersion (void)
+  \brief       Get driver version.
+  \return      \ref ARM_DRIVER_VERSION
+*/
+static ARM_DRIVER_VERSION USBD_GetVersion (void) { return usbd_driver_version; }
+
+/**
+  \fn          ARM_USBD_CAPABILITIES USBD_GetCapabilities (void)
+  \brief       Get driver capabilities.
+  \return      \ref ARM_USBD_CAPABILITIES
+*/
+static ARM_USBD_CAPABILITIES USBD_GetCapabilities (void) { return usbd_driver_capabilities; }
+
+/**
+  \fn          int32_t USBD_Initialize (ARM_USBD_SignalDeviceEvent_t   cb_device_event,
+                                        ARM_USBD_SignalEndpointEvent_t cb_endpoint_event)
+  \brief       Initialize USB Device Interface.
+  \param[in]   cb_device_event    Pointer to \ref ARM_USBD_SignalDeviceEvent
+  \param[in]   cb_endpoint_event  Pointer to \ref ARM_USBD_SignalEndpointEvent
+  \return      \ref execution_status
+*/
+static int32_t USBD_Initialize (ARM_USBD_SignalDeviceEvent_t   cb_device_event,
+                                ARM_USBD_SignalEndpointEvent_t cb_endpoint_event) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_INITIALIZED) != 0U) { return ARM_DRIVER_OK; }
+
+  SignalDeviceEvent   = cb_device_event;
+  SignalEndpointEvent = cb_endpoint_event;
+
+  usbd_flags =  USBD_DRIVER_FLAG_INITIALIZED;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_Uninitialize (void)
+  \brief       De-initialize USB Device Interface.
+  \return      \ref execution_status
+*/
+static int32_t USBD_Uninitialize (void) {
+
+  usbd_flags &= ~USBD_DRIVER_FLAG_INITIALIZED;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_PowerControl (ARM_POWER_STATE state)
+  \brief       Control USB Device Interface Power.
+  \param[in]   state  Power state
+  \return      \ref execution_status
+*/
+static int32_t USBD_PowerControl (ARM_POWER_STATE state) {
+
+  switch (state) {
+    case ARM_POWER_OFF:
+      NVIC_DisableIRQ      (USB1_IRQn);                 // Disable interrupt
+      NVIC_ClearPendingIRQ (USB1_IRQn);                 // Clear pending interrupt
+
+      usbd_flags &= ~USBD_DRIVER_FLAG_POWERED;          // Clear powered flag
+
+      RESET_PeripheralReset(kUSB1D_RST_SHIFT_RSTn);     // Reset USB1 Device controller
+      RESET_PeripheralReset(kUSB1_RST_SHIFT_RSTn);      // Reset USB1 PHY
+      RESET_PeripheralReset(kUSB1RAM_RST_SHIFT_RSTn);   // Reset USB1 RAM controller
+
+      // Disable USB IP clock
+      SYSCON->AHBCLKCTRLSET[2] &= ~SYSCON_AHBCLKCTRL2_USB1_RAM(1);
+      SYSCON->AHBCLKCTRLSET[2] &= ~SYSCON_AHBCLKCTRL2_USB1_DEV(1);
+      SYSCON->AHBCLKCTRLSET[2] &= ~SYSCON_AHBCLKCTRL2_USB1_PHY(1);
+
+      // Clear USB Endpoint command/status list
+      memset((void *)ep_cmd, 0, sizeof(ep_cmd));
+
+      // Clear Endpoint transfer structure
+      memset((void *)ep_transfer, 0, sizeof(ep_transfer));
+      break;
+
+    case ARM_POWER_FULL:
+      if ((usbd_flags & USBD_DRIVER_FLAG_INITIALIZED) == 0U) { return ARM_DRIVER_ERROR; }
+      if ((usbd_flags & USBD_DRIVER_FLAG_POWERED)     != 0U) { return ARM_DRIVER_OK; }
+
+      // Enable USB IP clock
+      CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_UsbPhySrcExt, 16000000U);
+      CLOCK_EnableUsbhs0DeviceClock(kCLOCK_UsbSrcUnused, 0U);
+
+      // Enable device operation (through USB1 Host PORTMODE register)
+      CLOCK_EnableClock(kCLOCK_Usbh1);
+      USBHSH->PORTMODE  = USBHSH_PORTMODE_SW_PDCOM_MASK;
+      USBHSH->PORTMODE |= USBHSH_PORTMODE_DEV_ENABLE_MASK;
+      CLOCK_DisableClock(kCLOCK_Usbh1);
+
+      // Setup PHY
+      USBPHY->PWD = 0U;
+      USBPHY->CTRL_SET = USBPHY_CTRL_SET_ENAUTOCLR_CLKGATE_MASK;
+      USBPHY->CTRL_SET = USBPHY_CTRL_SET_ENAUTOCLR_PHY_PWD_MASK;
+
+      // Clear USB RAM
+      memset((void *)FSL_FEATURE_USBHSD_USB_RAM_BASE_ADDRESS, 0, FSL_FEATURE_USBHSD_USB_RAM);
+
+      // Reset variables and endpoint settings
+      USBD_Reset ();
+
+      // Set Endpoint list start address
+      USBHSD->EPLISTSTART = (uint32_t)ep_cmd;
+
+      // Set USB Data buffer start address
+      USBHSD->DATABUFSTART = (uint32_t)ep_buf;
+
+      // Enable device status interrupt
+      USBHSD->INTEN = USB_INTSTAT_DEV_INT_MASK;
+
+      usbd_flags |=  USBD_DRIVER_FLAG_POWERED;
+
+      // Enable USB interrupt
+      NVIC_EnableIRQ (USB1_IRQn);
+      break;
+
+    default:
+      return ARM_DRIVER_ERROR_UNSUPPORTED;
+  }
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_DeviceConnect (void)
+  \brief       Connect USB Device.
+  \return      \ref execution_status
+*/
+static int32_t USBD_DeviceConnect (void) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  // Attach Device
+  USBHSD->DEVCMDSTAT |= USB_DEVCMDSTAT_DCON_MASK;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_DeviceDisconnect (void)
+  \brief       Disconnect USB Device.
+  \return      \ref execution_status
+*/
+static int32_t USBD_DeviceDisconnect (void) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  // Detach Device
+  USBHSD->DEVCMDSTAT &= ~USB_DEVCMDSTAT_DCON_MASK;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          ARM_USBD_STATE USBD_DeviceGetState (void)
+  \brief       Get current USB Device State.
+  \return      Device State \ref ARM_USBD_STATE
+*/
+static ARM_USBD_STATE USBD_DeviceGetState (void) {
+  ARM_USBD_STATE dev_state = { 0U, 0U, 0U };
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return dev_state; }
+
+
+  return usbd_state;
+}
+
+/**
+  \fn          int32_t USBD_DeviceRemoteWakeup (void)
+  \brief       Trigger USB Remote Wakeup.
+  \return      \ref execution_status
+*/
+static int32_t USBD_DeviceRemoteWakeup (void) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  // Force remote wakeup
+  USBHSD->DEVCMDSTAT &= ~USB_DEVCMDSTAT_DSUS_MASK;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_DeviceSetAddress (uint8_t dev_addr)
+  \brief       Set USB Device Address.
+  \param[in]   dev_addr  Device Address
+  \return      \ref execution_status
+*/
+static int32_t USBD_DeviceSetAddress (uint8_t dev_addr) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_ReadSetupPacket (uint8_t *setup)
+  \brief       Read setup packet received over Control Endpoint.
+  \param[out]  setup  Pointer to buffer for setup packet
+  \return      \ref execution_status
+*/
+static int32_t USBD_ReadSetupPacket (uint8_t *setup) {
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+  if (setup_received                          == 0U) { return ARM_DRIVER_ERROR; }
+
+  setup_received = 0U;
+  memcpy(setup, setup_packet, 8);
+
+  if (setup_received != 0U) {           // If new setup packet was received while this was being read
+    return ARM_DRIVER_ERROR;
+  }
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_EndpointConfigure (uint8_t  ep_addr,
+                                               uint8_t  ep_type,
+                                               uint16_t ep_max_packet_size)
+  \brief       Configure USB Endpoint.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \param[in]   ep_type  Endpoint Type (ARM_USB_ENDPOINT_xxx)
+  \param[in]   ep_max_packet_size Endpoint Maximum Packet Size
+  \return      \ref execution_status
+*/
+static int32_t USBD_EndpointConfigure (uint8_t  ep_addr,
+                                       uint8_t  ep_type,
+                                       uint16_t ep_max_packet_size) {
+  uint8_t ep_num, ep_idx;
+  EP const * ep;
+  volatile uint32_t DBG1 = 0;
+  volatile uint32_t DBG2 = 0;
+  volatile uint32_t DBG3 = 0;
+  volatile uint32_t DBG4 = 0;
+  volatile uint32_t DBG5 = ep_addr;
+  volatile uint32_t DBG6 = ep_type;
+  volatile uint32_t DBG7 = ep_max_packet_size;
+
+  ep_num = EP_NUM(ep_addr);
+  ep_idx = EP_IDX(ep_addr);
+  ep     = &endpoint[ep_idx];
+
+  if (ep_num > USBD1_MAX_ENDPOINT_NUM) {
+    DBG1++;
+    return ARM_DRIVER_ERROR;
+  }
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) {
+    DBG2++;
+    return ARM_DRIVER_ERROR;
+  }
+
+  if (ep->cmd->active == 1U) {
+    // Endpoint is "owned" by hardware
+    DBG3++;
+    return ARM_DRIVER_ERROR_BUSY;
+  }
+
+  if (ep_max_packet_size > ((ep+1)->buf_offset - ep->buf_offset)) {
+    // Configured Endpoint buffer size is too small
+    DBG4++;
+    return ARM_DRIVER_ERROR;
+  }
+
+  // Clear Endpoint command/status
+  memset((void *)ep->cmd, 0, sizeof(EP_CMD) * 2U);
+
+  // Clear Endpoint transfer structure
+  memset((void *)ep->transfer, 0, sizeof(EP_TRANSFER));
+
+  ep_transfer[ep_idx].max_packet_sz = ep_max_packet_size & ARM_USB_ENDPOINT_MAX_PACKET_SIZE_MASK;
+
+  ep->cmd->buff_addr_offset = ep->buf_offset >> 6;
+
+  if (ep_num != 0U) {
+    ep->cmd->ep_disabled  = 1U;
+
+    // Reset data toggle
+    ep->cmd->ep_type_periodic = 0U;
+    ep->cmd->toggle_value     = 0U;
+    ep->cmd->toggle_reset     = 1U;
+
+    switch (ep_type) {
+      case ARM_USB_ENDPOINT_CONTROL:
+        break;
+      case ARM_USB_ENDPOINT_ISOCHRONOUS:
+        ep->cmd->toggle_value     = 0U;
+        ep->cmd->ep_type_periodic = 1U;
+        break;
+      case ARM_USB_ENDPOINT_BULK:
+        ep->cmd->toggle_value     = 0U;
+        ep->cmd->ep_type_periodic = 0U;
+        break;
+      case ARM_USB_ENDPOINT_INTERRUPT:
+        ep->cmd->toggle_value     = 1U;
+        ep->cmd->ep_type_periodic = 1U;
+        break;
+      default:                            // Unknown endpoint type
+        return ARM_DRIVER_ERROR;
+    }
+    ep->cmd->ep_disabled  = 0U;
+
+    /* Double-buffering not configured/used */
+    ep->cmd[1].buff_addr_offset = ep->buf_offset >> 6;
+    ep->cmd[1].ep_disabled = 1U;
+  }
+
+  // Clear Endpoint Interrupt
+  USBHSD->INTSTAT = USB_INT_EP(ep_idx);
+
+  // Enable endpoint interrupt
+  USBHSD->INTEN  |= USB_INT_EP(ep_idx);
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_EndpointUnconfigure (uint8_t ep_addr)
+  \brief       Unconfigure USB Endpoint.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \return      \ref execution_status
+*/
+static int32_t USBD_EndpointUnconfigure (uint8_t ep_addr) {
+  uint8_t ep_num, ep_idx;
+  EP const * ep;
+
+  ep_num = EP_NUM(ep_addr);
+  ep_idx = EP_IDX(ep_addr);
+  ep     = &endpoint[ep_idx];
+
+  if (ep_num > USBD1_MAX_ENDPOINT_NUM)               { return ARM_DRIVER_ERROR; }
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  if (ep->cmd->active == 1U) {
+    // Endpoint is "owned" by hardware
+    return ARM_DRIVER_ERROR_BUSY;
+  }
+
+  // Disable endpoint interrupt
+  USBHSD->INTEN &= ~USB_INT_EP(ep_idx);
+
+  if (ep->cmd->active) {
+    USBHSD->EPSKIP |= (1U << ep_idx);
+    while (USBHSD->EPSKIP & (1U << ep_idx));
+  }
+
+  // Clear Endpoint command/status
+  memset((void *)ep->cmd, 0, sizeof(EP_CMD) * 2U);
+
+  ep->cmd->ep_disabled = 1U;
+
+  // Clear Endpoint Interrupt
+  USBHSD->INTSTAT = USB_INT_EP(ep_idx);
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_EndpointStall (uint8_t ep_addr, bool stall)
+  \brief       Set/Clear Stall for USB Endpoint.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \param[in]   stall  Operation
+                - \b false Clear
+                - \b true Set
+  \return      \ref execution_status
+*/
+static int32_t USBD_EndpointStall (uint8_t ep_addr, bool stall) {
+  uint8_t ep_num;
+  EP const * ep;
+
+  ep_num = EP_NUM(ep_addr);
+  ep     = &endpoint[EP_IDX(ep_addr)];
+
+  if (ep_num > USBD1_MAX_ENDPOINT_NUM)               { return ARM_DRIVER_ERROR; }
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  if (ep->cmd->active == 1U) {
+    // Endpoint is "owned" by hardware
+    return ARM_DRIVER_ERROR_BUSY;
+  }
+
+  if (stall != 0U) {
+    // Set Endpoint stall
+    ep->cmd->stall = 1U;
+  } else {
+    ep->cmd->toggle_value     = 0U;
+    ep->cmd->toggle_reset     = 1U;
+
+    // Clear Stall
+    ep->cmd->stall = 0U;
+  }
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          int32_t USBD_EndpointTransfer (uint8_t ep_addr, uint8_t *data, uint32_t num)
+  \brief       Read data from or Write data to USB Endpoint.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \param[out]  data Pointer to buffer for data to read or with data to write
+  \param[in]   num  Number of data bytes to transfer
+  \return      \ref execution_status
+*/
+static int32_t USBD_EndpointTransfer (uint8_t ep_addr, uint8_t *data, uint32_t num) {
+  uint8_t      ep_num, ep_idx;
+  EP const * ep;
+
+  ep_num = EP_NUM(ep_addr);
+  ep_idx = EP_IDX(ep_addr);
+  ep     = &endpoint[ep_idx];
+
+  if (ep_num > USBD1_MAX_ENDPOINT_NUM)               { return ARM_DRIVER_ERROR; }
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U)  { return ARM_DRIVER_ERROR; }
+
+  if (ep->cmd->active == 1U) {
+    // Endpoint is "owned" by hardware
+    return ARM_DRIVER_ERROR_BUSY;
+  }
+
+  ep->transfer->num = num;
+  ep->transfer->buf = data;
+  ep->transfer->num_transferred_total = 0U;
+  if (num > ep->transfer->max_packet_sz) { num = ep->transfer->max_packet_sz; }
+
+  if (ep_addr & ARM_USB_ENDPOINT_DIRECTION_MASK) {
+    // Copy data into IN Endpoint buffer
+    memcpy (ep->buf, ep->transfer->buf, num);
+  }
+
+  ep->cmd->buff_addr_offset = ep->buf_offset >> 6;
+
+  ep->transfer->num_transferring = num;
+
+  // Set number of bytes to send/receive
+  ep->cmd->NBytes = num;
+
+  // Activate endpoint
+  ep->cmd->active |= 1U;
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          uint32_t USBD_EndpointTransferGetResult (uint8_t ep_addr)
+  \brief       Get result of USB Endpoint transfer.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \return      number of successfully transferred data bytes
+*/
+static uint32_t USBD_EndpointTransferGetResult (uint8_t ep_addr) {
+
+  if (EP_NUM(ep_addr) > USBD1_MAX_ENDPOINT_NUM) { return 0U; }
+
+  return (ep_transfer[EP_IDX(ep_addr)].num_transferred_total);
+}
+
+/**
+  \fn          int32_t USBD_EndpointTransferAbort (uint8_t ep_addr)
+  \brief       Abort current USB Endpoint transfer.
+  \param[in]   ep_addr  Endpoint Address
+                - ep_addr.0..3: Address
+                - ep_addr.7:    Direction
+  \return      \ref execution_status
+*/
+static int32_t USBD_EndpointTransferAbort (uint8_t ep_addr) {
+  uint8_t      ep_num, ep_idx;
+  EP const * ep;
+
+  ep_num = EP_NUM(ep_addr);
+  ep_idx = EP_IDX(ep_addr);
+  ep     = &endpoint[ep_idx];
+
+  if (ep_num > USBD1_MAX_ENDPOINT_NUM)               { return ARM_DRIVER_ERROR; }
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return ARM_DRIVER_ERROR; }
+
+  // Disable endpoint interrupt
+  USBHSD->INTEN  &= ~USB_INT_EP(ep_idx);
+
+  if (ep->cmd->active == 1U) {
+    USBHSD->EPSKIP |= (1U << EP_IDX(ep_addr));
+    while (USBHSD->EPSKIP & (1U << EP_IDX(ep_addr)));
+    ep->cmd->active = 0U;
+  }
+
+  // Clear transfer info
+  ep->transfer->num                   = 0U;
+  ep->transfer->num_transferred_total = 0U;
+  ep->transfer->num_transferring      = 0U;
+
+  // Clear Endpoint Interrupt
+  USBHSD->INTSTAT = USB_INT_EP(ep_idx);
+
+  // Enable endpoint interrupt
+  USBHSD->INTEN  |= USB_INT_EP(ep_idx);
+
+  return ARM_DRIVER_OK;
+}
+
+/**
+  \fn          uint16_t USBD_GetFrameNumber (void)
+  \brief       Get current USB Frame Number.
+  \return      Frame Number
+*/
+static uint16_t USBD_GetFrameNumber (void) {
+
+  if ((usbd_flags & USBD_DRIVER_FLAG_POWERED) == 0U) { return 0; }
+
+  return ((USBHSD->INFO & USB_INFO_FRAME_NR_MASK) >> USB_INFO_FRAME_NR_SHIFT);
+}
+
+/**
+  \fn          void USB1_IRQHandler (void)
+  \brief       USB1 Device Interrupt Routine (IRQ).
+*/
+void USB1_IRQHandler (void) {
+  uint32_t num, ep_idx, intstat, cmdstat, dev_evt = 0U;
+  uint16_t val;
+  EP const * ep;
+
+  intstat = USBHSD->INTSTAT & USBHSD->INTEN;
+  cmdstat = USBHSD->DEVCMDSTAT;
+
+  // Clear interrupt flags
+  USBHSD->INTSTAT = intstat;
+
+  // Device Status interrupt
+  if (intstat & USB_INTSTAT_DEV_INT_MASK) {
+
+    // Reset
+    if (cmdstat & USB_DEVCMDSTAT_DRES_C_MASK) {
+      USBD_Reset ();
+      usbd_state.active = 1U;
+      usbd_state.speed  = ARM_USB_SPEED_FULL;
+      USBHSD->DEVCMDSTAT |= USB_DEVCMDSTAT_DRES_C_MASK | USB_DEVCMDSTAT_DEV_EN_MASK;
+      SignalDeviceEvent(ARM_USBD_EVENT_RESET);
+
+      if (((USBHSD->DEVCMDSTAT & USBHSD_DEVCMDSTAT_Speed_MASK) >> USBHSD_DEVCMDSTAT_Speed_SHIFT) == 2U) {
+        SignalDeviceEvent(ARM_USBD_EVENT_HIGH_SPEED);
+      }
+    }
+
+    // Suspend
+    if (cmdstat & USB_DEVCMDSTAT_DSUS_MASK) {
+      usbd_state.active = 0U;
+      USBHSD->DEVCMDSTAT |= USB_DEVCMDSTAT_DSUS_MASK;
+      SignalDeviceEvent(ARM_USBD_EVENT_SUSPEND);
+    }
+
+#if (USBD_VBUS_DETECT == 1)
+    // Disconnect
+    if (cmdstat & USB_DEVCMDSTAT_DCON_C) {
+      usbd_state.active = 0U;
+      usbd_state.vbus   = 0U;
+      LPC_USB->DEVCMDSTAT |= USB_DEVCMDSTAT_DCON_C;
+      SignalDeviceEvent(ARM_USBD_EVENT_VBUS_OFF);
+    }
+
+    // VBUS De-bounced
+    if (cmdstat & USB_DEVCMDSTAT_VBUS_DEBOUNCED) {
+      usbd_state.vbus   = 1U;
+      SignalDeviceEvent(ARM_USBD_EVENT_VBUS_ON);
+    }
+#endif
+  }
+
+  // Endpoint interrupt
+  if (intstat & USB_INT_EP_MSK) {
+    for (ep_idx = 0; ep_idx <= USBD1_MAX_ENDPOINT_NUM * 2U; ep_idx += 2U) {
+
+      if (intstat & (USB_INT_EP(ep_idx))) {
+
+        // Clear Interrupt status
+        USBHSD->INTSTAT = (1 << ep_idx);
+        // Setup Packet
+        if ((ep_idx == 0U) && ((cmdstat & USB_DEVCMDSTAT_SETUP_MASK) != 0U)) {
+          ep_cmd[0].stall = 0U;
+          ep_cmd[1].stall = 0U;
+          ep_cmd[2].stall = 0U;
+          ep_cmd[3].stall = 0U;
+
+          USBHSD->DEVCMDSTAT |= USB_DEVCMDSTAT_SETUP_MASK;
+          memcpy(setup_packet, ep_buf, 8);
+
+          // Analyze Setup packet for SetAddress
+          val = setup_packet[0] | (setup_packet[1] << 8);
+          if (val == 0x0500U) {
+            val = (setup_packet[2] | (setup_packet[3] << 8)) & USB_DEVCMDSTAT_DEV_ADDR_MASK;
+            // Set device address
+            USBHSD->DEVCMDSTAT = (USBHSD->DEVCMDSTAT & ~USB_DEVCMDSTAT_DEV_ADDR_MASK) |
+                                   USB_DEVCMDSTAT_DEV_ADDR(val) | USB_DEVCMDSTAT_DEV_EN_MASK;
+          }
+
+          setup_received = 1U;
+          if (SignalEndpointEvent != NULL) {
+            SignalEndpointEvent(0U, ARM_USBD_EVENT_SETUP);
+          }
+        } else {
+        // OUT Packet
+          ep = &endpoint[ep_idx];
+
+          num = ep->transfer->num_transferring - ep->cmd->NBytes;
+
+          // Copy EP data
+          memcpy (ep->transfer->buf, ep->buf, num);
+
+          ep->transfer->buf                   += num;
+          ep->transfer->num_transferred_total += num;
+
+          // Check if all OUT data received:
+          //  - data terminated with ZLP or short packet or
+          //  - all required data received
+          if ((ep->transfer->num_transferred_total == ep->transfer->num) || 
+              (num == 0U) || (num != ep->transfer->max_packet_sz)) {
+
+            if (SignalEndpointEvent != NULL) {
+              SignalEndpointEvent(ep_idx / 2U, ARM_USBD_EVENT_OUT);
+            }
+          } else {
+            // Remaining data to transfer
+            num = ep->transfer->num - ep->transfer->num_transferred_total;
+            if (num > ep->transfer->max_packet_sz) { num = ep->transfer->max_packet_sz; }
+
+            ep->transfer->num_transferring = num;
+            ep->cmd->NBytes                = num;
+            ep->cmd->buff_addr_offset      = ep->buf_offset >> 6;
+
+            // Activate EP to receive next packet
+            ep->cmd->active = 1U;
+          }
+        }
+      }
+    }
+
+    // IN Packet
+    for (ep_idx = 1; ep_idx <= USBD1_MAX_ENDPOINT_NUM * 2U; ep_idx += 2U) {
+
+      if (intstat & (USB_INT_EP(ep_idx))) {
+        // Clear Interrupt status
+        USBHSD->INTSTAT = (1 << ep_idx);
+
+        ep = &endpoint[ep_idx];
+
+        ep->transfer->buf                   += ep->transfer->num_transferring;
+        ep->transfer->num_transferred_total += ep->transfer->num_transferring;
+
+        if (ep->transfer->num_transferred_total == ep->transfer->num) {
+          // All data has been transfered
+          if (SignalEndpointEvent != NULL) {
+            SignalEndpointEvent(0x80 | (ep_idx / 2), ARM_USBD_EVENT_IN);
+          }
+        } else {
+          // Still data to transfer
+          num = ep->transfer->num - ep->transfer->num_transferred_total;
+          if (num > ep->transfer->max_packet_sz) {
+            // Remaining data bigger than max packet
+            num = ep->transfer->max_packet_sz;
+          }
+
+          ep->transfer->num_transferring = num;
+
+          // Copy data into IN Endpoint buffer
+          memcpy (ep->buf, ep->transfer->buf, num);
+
+          ep->cmd->buff_addr_offset = ep->buf_offset >> 6;
+
+          // Set number of bytes to send
+          ep->cmd->NBytes = num;
+
+          // Activate EP to send next packet
+          ep->cmd->active = 1U;
+        }
+      }
+    }
+  }
+}
+
+ARM_DRIVER_USBD Driver_USBD1 = {
+  USBD_GetVersion,
+  USBD_GetCapabilities,
+  USBD_Initialize,
+  USBD_Uninitialize,
+  USBD_PowerControl,
+  USBD_DeviceConnect,
+  USBD_DeviceDisconnect,
+  USBD_DeviceGetState,
+  USBD_DeviceRemoteWakeup,
+  USBD_DeviceSetAddress,
+  USBD_ReadSetupPacket,
+  USBD_EndpointConfigure,
+  USBD_EndpointUnconfigure,
+  USBD_EndpointStall,
+  USBD_EndpointTransfer,
+  USBD_EndpointTransferGetResult,
+  USBD_EndpointTransferAbort,
+  USBD_GetFrameNumber
+};

+ 381 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD_User_CDC_ACM_UART_0.c

@@ -0,0 +1,381 @@
+/*------------------------------------------------------------------------------
+ * MDK Middleware - Component ::USB:Device:CDC
+ * Copyright (c) 2004-2021 Arm Limited (or its affiliates). All rights reserved.
+ *------------------------------------------------------------------------------
+ * Name:    USBD_User_CDC_ACM_UART_0.c
+ * Purpose: USB Device Communication Device Class (CDC)
+ *          Abstract Control Model (ACM) USB <-> UART Bridge User module
+ * Rev.:    V1.0.8
+ *----------------------------------------------------------------------------*/
+/**
+ * \addtogroup usbd_cdcFunctions
+ *
+ * USBD_User_CDC_ACM_UART_0.c implements the application specific
+ * functionality of the CDC ACM class and is used to demonstrate a USB <-> UART
+ * bridge. All data received on USB is transmitted on UART and all data
+ * received on UART is transmitted on USB.
+ *
+ * Details of operation:
+ *   UART -> USB:
+ *     Initial reception on UART is started after the USB Host sets line coding
+ *     with SetLineCoding command. Having received a full UART buffer, any
+ *     new reception is restarted on the same buffer. Any data received on
+ *     the UART is sent over USB using the CDC0_ACM_UART_to_USB_Thread thread.
+ *   USB -> UART:
+ *     While the UART transmit is not busy, data transmission on the UART is
+ *     started in the USBD_CDC0_ACM_DataReceived callback as soon as data is
+ *     received on the USB. Further data received on USB is transmitted on
+ *     UART in the UART callback routine until there is no more data available.
+ *     In this case, the next UART transmit is restarted from the
+ *     USBD_CDC0_ACM_DataReceived callback as soon as new data is received
+ *     on the USB.
+ *
+ * The following constants in this module affect the module functionality:
+ *
+ *  - UART_PORT:        specifies UART Port
+ *      default value:  0 (=UART0)
+ *  - UART_BUFFER_SIZE: specifies UART data Buffer Size
+ *      default value:  512
+ *
+ * Notes:
+ *   If the USB is slower than the UART, data can get lost. This may happen
+ *   when USB is pausing during data reception because of the USB Host being
+ *   too loaded with other tasks and not polling the Bulk IN Endpoint often
+ *   enough (up to 2 seconds of gap in polling Bulk IN Endpoint may occur).
+ *   This problem can be solved by using a large enough UART buffer to
+ *   compensate up to a few seconds of received UART data or by using UART
+ *   flow control.
+ *   If the device that receives the UART data (usually a PC) is too loaded
+ *   with other tasks it can also loose UART data. This problem can only be
+ *   solved by using UART flow control.
+ *
+ *   This file has to be adapted in case of UART flow control usage.
+ */
+ 
+ 
+//! [code_USBD_User_CDC_ACM]
+#include <stdio.h>
+#include <string.h>
+ 
+#include "rl_usb.h"
+ 
+#include "Driver_USART.h"
+ 
+#include "DAP_config.h"
+#include "DAP.h"
+ 
+// UART Configuration ----------------------------------------------------------
+ 
+#define  UART_BUFFER_SIZE      (512)       // UART Buffer Size
+ 
+//------------------------------------------------------------------------------
+ 
+#define _UART_Driver_(n)        Driver_USART##n
+#define  UART_Driver_(n)       _UART_Driver_(n)
+extern   ARM_DRIVER_USART       UART_Driver_(DAP_UART_DRIVER);
+#define  ptrUART              (&UART_Driver_(DAP_UART_DRIVER))
+ 
+// Local Variables
+static            uint8_t       uart_rx_buf[UART_BUFFER_SIZE];
+static            uint8_t       uart_tx_buf[UART_BUFFER_SIZE];
+ 
+static   volatile int32_t       uart_rx_cnt         =   0;
+static   volatile int32_t       usb_tx_cnt          =   0;
+ 
+static   void                  *cdc_acm_bridge_tid  =   0U;
+static   CDC_LINE_CODING        cdc_acm_line_coding = { 0U, 0U, 0U, 0U };
+ 
+static            uint8_t       cdc_acm_active      =   1U;
+static        osMutexId_t       cdc_acm_mutex_id    =   NULL;
+ 
+// Acquire mutex
+__STATIC_INLINE void CDC_ACM_Lock (void) {
+  if (cdc_acm_mutex_id == NULL) {
+    cdc_acm_mutex_id = osMutexNew(NULL);
+  }
+  osMutexAcquire(cdc_acm_mutex_id, osWaitForever);
+}
+ 
+// Release mutex
+__STATIC_INLINE void CDC_ACM_Unlock (void) {
+  osMutexRelease(cdc_acm_mutex_id);
+}
+ 
+// Change communication settings.
+// \param[in]   line_coding   pointer to CDC_LINE_CODING structure.
+// \return      true          set line coding request processed.
+// \return      false         set line coding request not supported or not processed.
+static bool CDC_ACM_SetLineCoding (const CDC_LINE_CODING *line_coding) {
+  uint32_t data_bits = 0U, parity = 0U, stop_bits = 0U;
+  int32_t  status;
+ 
+  (void)ptrUART->Control (ARM_USART_ABORT_SEND,    0U);
+  (void)ptrUART->Control (ARM_USART_ABORT_RECEIVE, 0U);
+  (void)ptrUART->Control (ARM_USART_CONTROL_TX,    0U);
+  (void)ptrUART->Control (ARM_USART_CONTROL_RX,    0U);
+ 
+  switch (line_coding->bCharFormat) {
+    case 0:                             // 1 Stop bit
+      stop_bits = ARM_USART_STOP_BITS_1;
+      break;
+    case 1:                             // 1.5 Stop bits
+      stop_bits = ARM_USART_STOP_BITS_1_5;
+      break;
+    case 2:                             // 2 Stop bits
+      stop_bits = ARM_USART_STOP_BITS_2;
+      break;
+    default:
+      return false;
+  }
+ 
+  switch (line_coding->bParityType) {
+    case 0:                             // None
+      parity = ARM_USART_PARITY_NONE;
+      break;
+    case 1:                             // Odd
+      parity = ARM_USART_PARITY_ODD;
+      break;
+    case 2:                             // Even
+      parity = ARM_USART_PARITY_EVEN;
+      break;
+    default:
+      return false;
+  }
+ 
+  switch (line_coding->bDataBits) {
+    case 5:
+      data_bits = ARM_USART_DATA_BITS_5;
+      break;
+    case 6:
+      data_bits = ARM_USART_DATA_BITS_6;
+      break;
+    case 7:
+      data_bits = ARM_USART_DATA_BITS_7;
+      break;
+    case 8:
+      data_bits = ARM_USART_DATA_BITS_8;
+      break;
+    default:
+      return false;
+  }
+ 
+  status = ptrUART->Control(ARM_USART_MODE_ASYNCHRONOUS  |
+                            data_bits                    |
+                            parity                       |
+                            stop_bits                    ,
+                            line_coding->dwDTERate       );
+ 
+  if (status != ARM_DRIVER_OK) {
+    return false;
+  }
+ 
+  // Store requested settings to local variable
+  memcpy(&cdc_acm_line_coding, line_coding, sizeof(cdc_acm_line_coding));
+ 
+  uart_rx_cnt = 0;
+  usb_tx_cnt  = 0;
+ 
+  (void)ptrUART->Control (ARM_USART_CONTROL_TX, 1U);
+  (void)ptrUART->Control (ARM_USART_CONTROL_RX, 1U);
+ 
+  (void)ptrUART->Receive (uart_rx_buf, UART_BUFFER_SIZE);
+ 
+  return true;
+}
+ 
+// Activate or Deactivate USBD COM PORT
+// \param[in]   cmd  0=deactivate, 1=activate
+// \return      0=Ok, 0xFF=Error
+uint8_t USB_COM_PORT_Activate (uint32_t cmd) {
+  switch (cmd) {
+    case 0U:
+      cdc_acm_active = 0U;
+      USBD_CDC0_ACM_Uninitialize();
+      break;
+    case 1U:
+      USBD_CDC0_ACM_Initialize();
+      CDC_ACM_Lock();
+      CDC_ACM_SetLineCoding(&cdc_acm_line_coding);
+      cdc_acm_active = 1U;
+      CDC_ACM_Unlock();
+      break;
+  }
+
+  return 0U;
+}
+ 
+// Called when UART has transmitted or received requested number of bytes.
+// \param[in]   event         UART event
+//               - ARM_USART_EVENT_SEND_COMPLETE:    all requested data was sent
+//               - ARM_USART_EVENT_RECEIVE_COMPLETE: all requested data was received
+static void UART_Callback (uint32_t event) {
+  int32_t cnt;
+ 
+  if (cdc_acm_active == 0U) {
+    return;
+  }
+ 
+  if (event & ARM_USART_EVENT_SEND_COMPLETE) {
+    // USB -> UART
+    cnt = USBD_CDC_ACM_ReadData(0U, uart_tx_buf, UART_BUFFER_SIZE);
+    if (cnt > 0) {
+      (void)ptrUART->Send(uart_tx_buf, (uint32_t)(cnt));
+    }
+  }
+ 
+  if (event & ARM_USART_EVENT_RECEIVE_COMPLETE) {
+    // UART data received, restart new reception
+    uart_rx_cnt += UART_BUFFER_SIZE;
+    (void)ptrUART->Receive(uart_rx_buf, UART_BUFFER_SIZE);
+  }
+}
+ 
+// Thread: Sends data received on UART to USB
+// \param[in]     arg           not used.
+__NO_RETURN static void CDC0_ACM_UART_to_USB_Thread (void *arg) {
+  int32_t cnt, cnt_to_wrap;
+ 
+  (void)(arg);
+ 
+  for (;;) {
+    // UART - > USB
+    if (ptrUART->GetStatus().rx_busy != 0U) {
+      cnt  = uart_rx_cnt;
+      cnt += (int32_t)ptrUART->GetRxCount();
+      cnt -= usb_tx_cnt;
+      if (cnt >= (UART_BUFFER_SIZE - 32)) {
+        // Dump old data in UART receive buffer if USB is not consuming fast enough
+        cnt = (UART_BUFFER_SIZE - 32);
+        usb_tx_cnt = uart_rx_cnt - (UART_BUFFER_SIZE - 32);
+      }
+      if (cnt > 0) {
+        cnt_to_wrap = (int32_t)(UART_BUFFER_SIZE - ((uint32_t)usb_tx_cnt & (UART_BUFFER_SIZE - 1)));
+        if (cnt > cnt_to_wrap) {
+          cnt = cnt_to_wrap;
+        }
+        cnt = USBD_CDC_ACM_WriteData(0U, (uart_rx_buf + ((uint32_t)usb_tx_cnt & (UART_BUFFER_SIZE - 1))), cnt);
+        if (cnt > 0) {
+          usb_tx_cnt += cnt;
+        }
+      }
+    }
+    (void)osDelay(10U);
+  }
+}
+ 
+static osRtxThread_t        cdc0_acm_uart_to_usb_thread_cb_mem               __SECTION(.bss.os.thread.cb);
+static uint64_t             cdc0_acm_uart_to_usb_thread_stack_mem[512U / 8U] __SECTION(.bss.os.thread.cdc.stack);
+static const osThreadAttr_t cdc0_acm_uart_to_usb_thread_attr = {
+  "CDC0_ACM_UART_to_USB_Thread",
+  0U,
+ &cdc0_acm_uart_to_usb_thread_cb_mem,
+  sizeof(osRtxThread_t),
+ &cdc0_acm_uart_to_usb_thread_stack_mem[0],
+  sizeof(cdc0_acm_uart_to_usb_thread_stack_mem),
+  osPriorityNormal,
+  0U,
+  0U
+};
+ 
+ 
+// CDC ACM Callbacks -----------------------------------------------------------
+ 
+// Called when new data was received from the USB Host.
+// \param[in]   len           number of bytes available to read.
+void USBD_CDC0_ACM_DataReceived (uint32_t len) {
+  int32_t cnt;
+ 
+  (void)(len);
+ 
+  if (cdc_acm_active == 0U) {
+    return;
+  }
+ 
+  if (ptrUART->GetStatus().tx_busy == 0U) {
+    // Start USB -> UART
+    cnt = USBD_CDC_ACM_ReadData(0U, uart_tx_buf, UART_BUFFER_SIZE);
+    if (cnt > 0) {
+      (void)ptrUART->Send(uart_tx_buf, (uint32_t)(cnt));
+    }
+  }
+}
+ 
+// Called during USBD_Initialize to initialize the USB CDC class instance (ACM).
+void USBD_CDC0_ACM_Initialize (void) {
+  (void)ptrUART->Initialize   (UART_Callback);
+  (void)ptrUART->PowerControl (ARM_POWER_FULL);
+ 
+  cdc_acm_bridge_tid = osThreadNew (CDC0_ACM_UART_to_USB_Thread, NULL, &cdc0_acm_uart_to_usb_thread_attr);
+}
+ 
+ 
+// Called during USBD_Uninitialize to de-initialize the USB CDC class instance (ACM).
+void USBD_CDC0_ACM_Uninitialize (void) {
+  if (osThreadTerminate (cdc_acm_bridge_tid) == osOK) {
+    cdc_acm_bridge_tid = NULL;
+  }
+  (void)ptrUART->Control      (ARM_USART_ABORT_RECEIVE, 0U);
+  (void)ptrUART->PowerControl (ARM_POWER_OFF);
+  (void)ptrUART->Uninitialize ();
+}
+ 
+ 
+// Called upon USB Bus Reset Event.
+void USBD_CDC0_ACM_Reset (void) {
+  if (cdc_acm_active == 0U ) {
+    return;
+  }
+  (void)ptrUART->Control      (ARM_USART_ABORT_SEND,    0U);
+  (void)ptrUART->Control      (ARM_USART_ABORT_RECEIVE, 0U);
+}
+ 
+ 
+// Called upon USB Host request to change communication settings.
+// \param[in]   line_coding   pointer to CDC_LINE_CODING structure.
+// \return      true          set line coding request processed.
+// \return      false         set line coding request not supported or not processed.
+bool USBD_CDC0_ACM_SetLineCoding (const CDC_LINE_CODING *line_coding) {
+  bool ret = false;
+ 
+  CDC_ACM_Lock();
+  if (cdc_acm_active == 0U) {
+    // Store requested settings to local variable
+    memcpy(&cdc_acm_line_coding, line_coding, sizeof(cdc_acm_line_coding));
+    ret = true;
+  } else {
+    ret = CDC_ACM_SetLineCoding(line_coding);
+  }
+  CDC_ACM_Unlock();
+ 
+  return ret;
+}
+ 
+ 
+// Called upon USB Host request to retrieve communication settings.
+// \param[out]  line_coding   pointer to CDC_LINE_CODING structure.
+// \return      true          get line coding request processed.
+// \return      false         get line coding request not supported or not processed.
+bool USBD_CDC0_ACM_GetLineCoding (CDC_LINE_CODING *line_coding) {
+ 
+  // Load settings from ones stored on USBD_CDC0_ACM_SetLineCoding callback
+  *line_coding = cdc_acm_line_coding;
+ 
+  return true;
+}
+ 
+ 
+// Called upon USB Host request to set control line states.
+// \param [in]  state         control line settings bitmap.
+//                - bit 0: DTR state
+//                - bit 1: RTS state
+// \return      true          set control line state request processed.
+// \return      false         set control line state request not supported or not processed.
+bool USBD_CDC0_ACM_SetControlLineState (uint16_t state) {
+  // Add code for set control line state
+ 
+  (void)(state);
+ 
+  return true;
+}
+ 
+//! [code_USBD_User_CDC_ACM]

+ 358 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/USBD_User_CustomClass_0.c

@@ -0,0 +1,358 @@
+/*------------------------------------------------------------------------------
+ * MDK Middleware - Component ::USB:Device
+ * Copyright (c) 2004-2016 ARM Germany GmbH. All rights reserved.
+ *------------------------------------------------------------------------------
+ * Name:    USBD_User_CustomClass_0.c
+ * Purpose: USB Device Custom Class User module
+ * Rev.:    V6.7.3
+ *----------------------------------------------------------------------------*/
+/*
+ * USBD_User_CustomClass_0.c is a code template for the Custom Class 0 
+ * class request handling. It allows user to handle all Custom Class class 
+ * requests.
+ *
+ * Uncomment "Example code" lines to see example that receives data on 
+ * Endpoint 1 OUT and echoes it back on Endpoint 1 IN.
+ * To try the example you also have to enable Bulk Endpoint 1 IN/OUT in Custom 
+ * Class configuration in USBD_Config_CustomClass_0.h file.
+ */
+
+/**
+ * \addtogroup usbd_custom_classFunctions
+ *
+ */
+
+
+//! [code_USBD_User_CustomClass]
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+#include "cmsis_os2.h"
+#define   osObjectsExternal
+#include "osObjects.h"
+#include "rl_usb.h"
+#include "Driver_USBD.h"
+#include "DAP_config.h"
+#include "DAP.h"
+
+static volatile uint16_t USB_RequestIndexI;     // Request  Index In
+static volatile uint16_t USB_RequestIndexO;     // Request  Index Out
+static volatile uint16_t USB_RequestCountI;     // Request  Count In
+static volatile uint16_t USB_RequestCountO;     // Request  Count Out
+static volatile uint8_t  USB_RequestIdle;       // Request  Idle  Flag
+
+static volatile uint16_t USB_ResponseIndexI;    // Response Index In
+static volatile uint16_t USB_ResponseIndexO;    // Response Index Out
+static volatile uint16_t USB_ResponseCountI;    // Response Count In
+static volatile uint16_t USB_ResponseCountO;    // Response Count Out
+static volatile uint8_t  USB_ResponseIdle;      // Response Idle  Flag
+
+static uint8_t  USB_Request [DAP_PACKET_COUNT][DAP_PACKET_SIZE] __attribute__((section(".bss.USB_IO")));  // Request  Buffer
+static uint8_t  USB_Response[DAP_PACKET_COUNT][DAP_PACKET_SIZE] __attribute__((section(".bss.USB_IO")));  // Response Buffer
+static uint16_t USB_RespSize[DAP_PACKET_COUNT];                                                           // Response Size
+
+// \brief Callback function called during USBD_Initialize to initialize the USB Custom class instance
+void USBD_CustomClass0_Initialize (void) {
+  // Handle Custom Class Initialization
+
+  // Initialize variables
+  USB_RequestIndexI  = 0U;
+  USB_RequestIndexO  = 0U;
+  USB_RequestCountI  = 0U;
+  USB_RequestCountO  = 0U;
+  USB_RequestIdle    = 1U;
+  USB_ResponseIndexI = 0U;
+  USB_ResponseIndexO = 0U;
+  USB_ResponseCountI = 0U;
+  USB_ResponseCountO = 0U;
+  USB_ResponseIdle   = 1U;
+}
+
+// \brief Callback function called during USBD_Uninitialize to de-initialize the USB Custom class instance
+void USBD_CustomClass0_Uninitialize (void) {
+  // Handle Custom Class De-initialization
+}
+
+// \brief Callback function called upon USB Bus Reset signaling
+void USBD_CustomClass0_Reset (void) {
+  // Handle USB Bus Reset Event
+}
+
+// \brief Callback function called when Endpoint Start was requested (by activating interface or configuration)
+// \param[in]     ep_addr       endpoint address.
+void USBD_CustomClass0_EndpointStart (uint8_t ep_addr) {
+  // Start communication on Endpoint
+  if (ep_addr == USB_ENDPOINT_OUT(1U)) {
+    USB_RequestIdle = 0U;
+    USBD_EndpointRead(0U, USB_ENDPOINT_OUT(1U), USB_Request[0], DAP_PACKET_SIZE);
+  }
+}
+
+// \brief Callback function called when Endpoint Stop was requested (by de-activating interface or activating configuration 0)
+// \param[in]     ep_addr       endpoint address.
+void USBD_CustomClass0_EndpointStop (uint8_t ep_addr) {
+  // Handle Endpoint communication stopped
+  (void)ep_addr;
+}
+
+// \brief Callback function called when Custom Class 0 received SETUP PACKET on Control Endpoint 0
+//        (this callback will be called only for Class Requests (USB_REQUEST_CLASS) if it was not processed 
+//         previously by Device callback)
+// \param[in]     setup_packet            pointer to received setup packet.
+// \param[out]    buf                     pointer to data buffer used for data stage requested by setup packet.
+// \param[out]    len                     pointer to number of data bytes in data stage requested by setup packet.
+// \return        usbdRequestStatus       enumerator value indicating the function execution status
+// \return        usbdRequestNotProcessed:request was not processed; processing will be done by USB library
+// \return        usbdRequestOK:          request was processed successfully (send Zero-Length Packet if no data stage)
+// \return        usbdRequestStall:       request was processed but is not supported (stall Endpoint 0)
+usbdRequestStatus USBD_CustomClass0_Endpoint0_SetupPacketReceived (const USB_SETUP_PACKET *setup_packet, uint8_t **buf, uint32_t *len) {
+  (void)setup_packet;
+  (void)buf;
+  (void)len;
+
+  switch (setup_packet->bmRequestType.Recipient) {
+    case USB_REQUEST_TO_DEVICE:
+      break;
+    case USB_REQUEST_TO_INTERFACE:
+      break;
+    case USB_REQUEST_TO_ENDPOINT:
+      break;
+    default:
+      break;
+  }
+
+  return usbdRequestNotProcessed;
+}
+
+// \brief Callback function called when SETUP PACKET was processed by USB library
+//        (this callback will be called only for Class Requests (USB_REQUEST_CLASS) if it was not processed 
+//         previously by Device callback nor by Custom Class callback)
+// \param[in]     setup_packet            pointer to processed setup packet.
+void USBD_CustomClass0_Endpoint0_SetupPacketProcessed (const USB_SETUP_PACKET *setup_packet) {
+  (void)setup_packet;
+
+  switch (setup_packet->bmRequestType.Recipient) {
+    case USB_REQUEST_TO_DEVICE:
+      break;
+    case USB_REQUEST_TO_INTERFACE:
+      break;
+    case USB_REQUEST_TO_ENDPOINT:
+      break;
+    default:
+      break;
+  }
+}
+
+// \brief Callback function called when Custom Class 0 received OUT DATA on Control Endpoint 0
+//        (this callback will be called only for Class Requests (USB_REQUEST_CLASS) if it was not processed 
+//         previously by Device callback)
+// \param[in]     len                     number of received data bytes.
+// \return        usbdRequestStatus       enumerator value indicating the function execution status
+// \return        usbdRequestNotProcessed:request was not processed; processing will be done by USB library
+// \return        usbdRequestOK:          request was processed successfully (send Zero-Length Packet)
+// \return        usbdRequestStall:       request was processed but is not supported (stall Endpoint 0)
+// \return        usbdRequestNAK:         request was processed but the device is busy (return NAK)
+usbdRequestStatus USBD_CustomClass0_Endpoint0_OutDataReceived (uint32_t len) {
+  (void)len;
+  return usbdRequestNotProcessed;
+}
+
+// \brief Callback function called when Custom Class 0 sent IN DATA on Control Endpoint 0
+//        (this callback will be called only for Class Requests (USB_REQUEST_CLASS) if it was not processed 
+//         previously by Device callback)
+// \param[in]     len                     number of sent data bytes.
+// \return        usbdRequestStatus       enumerator value indicating the function execution status
+// \return        usbdRequestNotProcessed:request was not processed; processing will be done by USB library
+// \return        usbdRequestOK:          request was processed successfully (return ACK)
+// \return        usbdRequestStall:       request was processed but is not supported (stall Endpoint 0)
+// \return        usbdRequestNAK:         request was processed but the device is busy (return NAK)
+usbdRequestStatus USBD_CustomClass0_Endpoint0_InDataSent (uint32_t len) {
+  (void)len;
+  return usbdRequestNotProcessed;
+}
+
+// \brief Callback function called when DATA was sent or received on Endpoint n
+// \param[in]     event                   event on Endpoint:
+//                                          - ARM_USBD_EVENT_OUT = data OUT received
+//                                          - ARM_USBD_EVENT_IN  = data IN  sent
+void USBD_CustomClass0_Endpoint1_Event  (uint32_t event) {
+  // Handle Endpoint 1 events
+  uint32_t n;
+
+  if (event & ARM_USBD_EVENT_OUT) {
+    n = USBD_EndpointReadGetResult(0U, USB_ENDPOINT_OUT(1U));
+    if (n != 0U) {
+      if (USB_Request[USB_RequestIndexI][0] == ID_DAP_TransferAbort) {
+        DAP_TransferAbort = 1U;
+      } else {
+        USB_RequestIndexI++;
+        if (USB_RequestIndexI == DAP_PACKET_COUNT) {
+          USB_RequestIndexI = 0U;
+        }
+        USB_RequestCountI++;
+        osThreadFlagsSet(DAP_ThreadId, 0x01);
+      }
+    }
+    // Start reception of next request packet
+    if ((uint16_t)(USB_RequestCountI - USB_RequestCountO) != DAP_PACKET_COUNT) {
+      USBD_EndpointRead(0U, USB_ENDPOINT_OUT(1U), USB_Request[USB_RequestIndexI], DAP_PACKET_SIZE);
+    } else {
+      USB_RequestIdle = 1U;
+    }
+  }
+  if (event & ARM_USBD_EVENT_IN) {
+    if (USB_ResponseCountI != USB_ResponseCountO) {
+      // Load data from response buffer to be sent back
+      USBD_EndpointWrite(0U, USB_ENDPOINT_IN(1U), USB_Response[USB_ResponseIndexO], USB_RespSize[USB_ResponseIndexO]);
+      USB_ResponseIndexO++;
+      if (USB_ResponseIndexO == DAP_PACKET_COUNT) {
+        USB_ResponseIndexO = 0U;
+      }
+      USB_ResponseCountO++;
+    } else {
+      USB_ResponseIdle = 1U;
+    }
+  }
+}
+void USBD_CustomClass0_Endpoint2_Event  (uint32_t event) {
+  // Handle Endpoint 2 events
+  if (event & ARM_USBD_EVENT_IN) {
+    SWO_TransferComplete();
+  }
+}
+void USBD_CustomClass0_Endpoint3_Event  (uint32_t event) {
+  // Handle Endpoint 3 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint4_Event  (uint32_t event) {
+  // Handle Endpoint 4 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint5_Event  (uint32_t event) {
+  // Handle Endpoint 5 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint6_Event  (uint32_t event) {
+  // Handle Endpoint 6 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint7_Event  (uint32_t event) {
+  // Handle Endpoint 7 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint8_Event  (uint32_t event) {
+  // Handle Endpoint 8 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint9_Event  (uint32_t event) {
+  // Handle Endpoint 9 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint10_Event (uint32_t event) {
+  // Handle Endpoint 10 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint11_Event (uint32_t event) {
+  // Handle Endpoint 11 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint12_Event (uint32_t event) {
+  // Handle Endpoint 12 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint13_Event (uint32_t event) {
+  // Handle Endpoint 13 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint14_Event (uint32_t event) {
+  // Handle Endpoint 14 events
+  (void)event;
+}
+void USBD_CustomClass0_Endpoint15_Event (uint32_t event) {
+  // Handle Endpoint 15 events
+  (void)event;
+}
+
+// DAP Thread.
+__NO_RETURN void DAP_Thread (void *argument) {
+  uint32_t flags;
+  uint32_t n;
+  (void)   argument;
+
+  for (;;) {
+    osThreadFlagsWait(0x81U, osFlagsWaitAny, osWaitForever);
+
+    // Process pending requests
+    while (USB_RequestCountI != USB_RequestCountO) {
+
+      // Handle Queue Commands
+      n = USB_RequestIndexO;
+      while (USB_Request[n][0] == ID_DAP_QueueCommands) {
+        USB_Request[n][0] = ID_DAP_ExecuteCommands;
+        n++;
+        if (n == DAP_PACKET_COUNT) {
+          n = 0U;
+        }
+        if (n == USB_RequestIndexI) {
+          flags = osThreadFlagsWait(0x81U, osFlagsWaitAny, osWaitForever);
+          if (flags & 0x80U) {
+            break;
+          }
+        }
+      }
+
+      // Execute DAP Command (process request and prepare response)
+      USB_RespSize[USB_ResponseIndexI] =
+        (uint16_t)DAP_ExecuteCommand(USB_Request[USB_RequestIndexO], USB_Response[USB_ResponseIndexI]);
+
+      // Update Request Index and Count
+      USB_RequestIndexO++;
+      if (USB_RequestIndexO == DAP_PACKET_COUNT) {
+        USB_RequestIndexO = 0U;
+      }
+      USB_RequestCountO++;
+
+      if (USB_RequestIdle) {
+        if ((uint16_t)(USB_RequestCountI - USB_RequestCountO) != DAP_PACKET_COUNT) {
+          USB_RequestIdle = 0U;
+          USBD_EndpointRead(0U, USB_ENDPOINT_OUT(1U), USB_Request[USB_RequestIndexI], DAP_PACKET_SIZE);
+        }
+      }
+
+      // Update Response Index and Count
+      USB_ResponseIndexI++;
+      if (USB_ResponseIndexI == DAP_PACKET_COUNT) {
+        USB_ResponseIndexI = 0U;
+      }
+      USB_ResponseCountI++;
+
+      if (USB_ResponseIdle) {
+        if (USB_ResponseCountI != USB_ResponseCountO) {
+          // Load data from response buffer to be sent back
+          n = USB_ResponseIndexO++;
+          if (USB_ResponseIndexO == DAP_PACKET_COUNT) {
+            USB_ResponseIndexO = 0U;
+          }
+          USB_ResponseCountO++;
+          USB_ResponseIdle = 0U;
+          USBD_EndpointWrite(0U, USB_ENDPOINT_IN(1U), USB_Response[n], USB_RespSize[n]);
+        }
+      }
+    }
+  }
+}
+
+// SWO Data Queue Transfer
+//   buf:    pointer to buffer with data
+//   num:    number of bytes to transfer
+void SWO_QueueTransfer (uint8_t *buf, uint32_t num) {
+  USBD_EndpointWrite(0U, USB_ENDPOINT_IN(2U), buf, num);
+}
+
+// SWO Data Abort Transfer
+void SWO_AbortTransfer (void) {
+  USBD_EndpointAbort(0U, USB_ENDPOINT_IN(2U));
+}
+
+//! [code_USBD_User_CustomClass]

+ 70 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/USB_LPC55xxx.h

@@ -0,0 +1,70 @@
+/* -----------------------------------------------------------------------------
+ * Copyright (c) 2021 ARM Ltd.
+ *
+ * This software is provided 'as-is', without any express or implied warranty.
+ * In no event will the authors be held liable for any damages arising from
+ * the use of this software. Permission is granted to anyone to use this
+ * software for any purpose, including commercial applications, and to alter
+ * it and redistribute it freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software in
+ *    a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ *
+ * $Date:        28. June 2021
+ * $Revision:    V1.0
+ *
+ * Project:      USB Driver Definitions for NXP LPC55xxx
+ * -------------------------------------------------------------------------- */
+
+#ifndef __USB_LPC55XXX_H
+#define __USB_LPC55XXX_H
+
+#include <stdint.h>
+
+// USB Device Endpoint Interrupt definitions
+#define USB_INT_EP_MSK                    (0x0FFFU)
+#define USB_INT_EP(ep_idx)                ((1U << (ep_idx)) & USB_INT_EP_MSK)
+
+// USB Driver State Flags
+// Device State Flags
+#define USBD_DRIVER_FLAG_INITIALIZED      (1U      )
+#define USBD_DRIVER_FLAG_POWERED          (1U << 1 )
+
+// Transfer information structure
+typedef struct {
+  uint32_t max_packet_sz;
+  uint32_t num;
+  uint32_t num_transferred_total;
+  uint32_t num_transferring;
+  uint8_t *buf;
+} EP_TRANSFER;
+
+// Endpoint command/status
+typedef struct {
+  uint32_t buff_addr_offset     : 11;
+  uint32_t NBytes               : 15;
+  uint32_t ep_type_periodic     : 1;
+  uint32_t toggle_value         : 1;
+  uint32_t toggle_reset         : 1;
+  uint32_t stall                : 1;
+  uint32_t ep_disabled          : 1;
+  uint32_t active               : 1;
+} EP_CMD;
+
+// Endpoint structure
+typedef struct __EP {
+  EP_CMD      * const cmd;
+  uint8_t     * const buf;
+  EP_TRANSFER * const transfer;
+  uint16_t            buf_offset;
+} EP;
+
+#endif /* __USB_LPC55XXX_H */

+ 150 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/clock_config.c

@@ -0,0 +1,150 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+/*
+ * How to set up clock using clock driver functions:
+ *
+ * 1. Setup clock sources.
+ *
+ * 2. Set up wait states of the flash.
+ *
+ * 3. Set up all dividers.
+ *
+ * 4. Set up all selectors to provide selected clocks.
+ */
+
+/* clang-format off */
+/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+!!GlobalInfo
+product: Clocks v7.0
+processor: LPC55S69
+package_id: LPC55S69JBD64
+mcu_data: ksdk2_0
+processor_version: 9.0.3
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
+/* clang-format on */
+
+#include "fsl_power.h"
+#include "fsl_clock.h"
+#include "clock_config.h"
+
+/*******************************************************************************
+ * Definitions
+ ******************************************************************************/
+
+/*******************************************************************************
+ * Variables
+ ******************************************************************************/
+/* System clock frequency. */
+extern uint32_t SystemCoreClock;
+
+/*******************************************************************************
+ ************************ BOARD_InitBootClocks function ************************
+ ******************************************************************************/
+void BOARD_InitBootClocks(void)
+{
+    BOARD_BootClockRUN();
+}
+
+/*******************************************************************************
+ ********************** Configuration BOARD_BootClockRUN ***********************
+ ******************************************************************************/
+/* clang-format off */
+/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+!!Configuration
+name: BOARD_BootClockRUN
+called_from_default_init: true
+outputs:
+- {id: FXCOM0_clock.outFreq, value: 48 MHz}
+- {id: FXCOM3_clock.outFreq, value: 48 MHz}
+- {id: System_clock.outFreq, value: 150 MHz, locked: true, accuracy: '0.001'}
+- {id: USB1_PHY_clock.outFreq, value: 16 MHz}
+settings:
+- {id: PLL0_Mode, value: Normal}
+- {id: ANALOG_CONTROL_FRO192M_CTRL_ENDI_FRO_96M_CFG, value: Enable}
+- {id: ENABLE_CLKIN_ENA, value: Enabled}
+- {id: ENABLE_PLL_USB_OUT, value: Enabled}
+- {id: ENABLE_SYSTEM_CLK_OUT, value: Enabled}
+- {id: SYSCON.FCCLKSEL0.sel, value: SYSCON.FROHFDIV}
+- {id: SYSCON.FCCLKSEL3.sel, value: SYSCON.FROHFDIV}
+- {id: SYSCON.FRGCTRL3_DIV.scale, value: '256', locked: true}
+- {id: SYSCON.FROHFDIV.scale, value: '2', locked: true}
+- {id: SYSCON.MAINCLKSELB.sel, value: SYSCON.PLL0_BYPASS}
+- {id: SYSCON.PLL0CLKSEL.sel, value: SYSCON.CLK_IN_EN}
+- {id: SYSCON.PLL0M_MULT.scale, value: '150', locked: true}
+- {id: SYSCON.PLL0N_DIV.scale, value: '8', locked: true}
+- {id: SYSCON.PLL0_PDEC.scale, value: '2'}
+sources:
+- {id: ANACTRL.fro_hf.outFreq, value: 96 MHz}
+- {id: SYSCON.XTAL32M.outFreq, value: 16 MHz, enabled: true}
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
+/* clang-format on */
+
+/*******************************************************************************
+ * Variables for BOARD_BootClockRUN configuration
+ ******************************************************************************/
+/*******************************************************************************
+ * Code for BOARD_BootClockRUN configuration
+ ******************************************************************************/
+void BOARD_BootClockRUN(void)
+{
+#ifndef SDK_SECONDARY_CORE
+    /*!< Set up the clock sources */
+    /*!< Configure FRO192M */
+    POWER_DisablePD(kPDRUNCFG_PD_FRO192M);               /*!< Ensure FRO is on  */
+    CLOCK_SetupFROClocking(12000000U);                   /*!< Set up FRO to the 12 MHz, just for sure */
+    CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);                /*!< Switch to FRO 12MHz first to ensure we can change the clock setting */
+
+    CLOCK_SetupFROClocking(96000000U);                   /* Enable FRO HF(96MHz) output */
+
+    /*!< Configure XTAL32M */
+    POWER_DisablePD(kPDRUNCFG_PD_XTAL32M);                        /* Ensure XTAL32M is powered */
+    POWER_DisablePD(kPDRUNCFG_PD_LDOXO32M);                       /* Ensure XTAL32M is powered */
+    CLOCK_SetupExtClocking(16000000U);                            /* Enable clk_in clock */
+    SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_CLKIN_ENA_MASK;       /* Enable clk_in from XTAL32M clock  */
+    ANACTRL->XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_SYSTEM_CLK_OUT_MASK;    /* Enable clk_in to system  */
+    ANACTRL->XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_PLL_USB_OUT_MASK;       /* Enable clk_in to HS USB  */
+
+    POWER_SetVoltageForFreq(150000000U);                  /*!< Set voltage for the one of the fastest clock outputs: System clock output */
+    CLOCK_SetFLASHAccessCyclesForFreq(150000000U);          /*!< Set FLASH wait states for core */
+
+    /*!< Set up PLL */
+    CLOCK_AttachClk(kEXT_CLK_to_PLL0);                    /*!< Switch PLL0CLKSEL to EXT_CLK */
+    POWER_DisablePD(kPDRUNCFG_PD_PLL0);                  /* Ensure PLL is on  */
+    POWER_DisablePD(kPDRUNCFG_PD_PLL0_SSCG);
+    const pll_setup_t pll0Setup = {
+        .pllctrl = SYSCON_PLL0CTRL_CLKEN_MASK | SYSCON_PLL0CTRL_SELI(53U) | SYSCON_PLL0CTRL_SELP(31U),
+        .pllndec = SYSCON_PLL0NDEC_NDIV(8U),
+        .pllpdec = SYSCON_PLL0PDEC_PDIV(1U),
+        .pllsscg = {0x0U,(SYSCON_PLL0SSCG1_MDIV_EXT(150U) | SYSCON_PLL0SSCG1_SEL_EXT_MASK)},
+        .pllRate = 150000000U,
+        .flags =  PLL_SETUPFLAG_WAITLOCK
+    };
+    CLOCK_SetPLL0Freq(&pll0Setup);                       /*!< Configure PLL0 to the desired values */
+
+    /*!< Set up dividers */
+    #if FSL_CLOCK_DRIVER_VERSION >= MAKE_VERSION(2, 3, 4)
+      CLOCK_SetClkDiv(kCLOCK_DivFlexFrg0, 0U, false);         /*!< Set DIV to value 0xFF and MULT to value 0U in related FLEXFRGCTRL register */
+    #else
+      CLOCK_SetClkDiv(kCLOCK_DivFlexFrg0, 256U, false);         /*!< Set DIV to value 0xFF and MULT to value 0U in related FLEXFRGCTRL register */
+    #endif
+    #if FSL_CLOCK_DRIVER_VERSION >= MAKE_VERSION(2, 3, 4)
+      CLOCK_SetClkDiv(kCLOCK_DivFlexFrg3, 0U, false);         /*!< Set DIV to value 0xFF and MULT to value 0U in related FLEXFRGCTRL register */
+    #else
+      CLOCK_SetClkDiv(kCLOCK_DivFlexFrg3, 256U, false);         /*!< Set DIV to value 0xFF and MULT to value 0U in related FLEXFRGCTRL register */
+    #endif
+    CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);         /*!< Set AHBCLKDIV divider to value 1 */
+    CLOCK_SetClkDiv(kCLOCK_DivFrohfClk, 0U, true);               /*!< Reset FROHFDIV divider counter and halt it */
+    CLOCK_SetClkDiv(kCLOCK_DivFrohfClk, 2U, false);         /*!< Set FROHFDIV divider to value 2 */
+
+    /*!< Set up clock selectors - Attach clocks to the peripheries */
+    CLOCK_AttachClk(kPLL0_to_MAIN_CLK);                 /*!< Switch MAIN_CLK to PLL0 */
+    CLOCK_AttachClk(kFRO_HF_DIV_to_FLEXCOMM0);                 /*!< Switch FLEXCOMM0 to FRO_HF_DIV */
+    CLOCK_AttachClk(kFRO_HF_DIV_to_FLEXCOMM3);                 /*!< Switch FLEXCOMM3 to FRO_HF_DIV */
+
+    /*!< Set SystemCoreClock variable. */
+    SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
+#endif
+}
+

+ 62 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/clock_config.h

@@ -0,0 +1,62 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+
+#ifndef _CLOCK_CONFIG_H_
+#define _CLOCK_CONFIG_H_
+
+#include "fsl_common.h"
+
+/*******************************************************************************
+ * Definitions
+ ******************************************************************************/
+#define BOARD_XTAL0_CLK_HZ                         16000000U  /*!< Board xtal frequency in Hz */
+#define BOARD_XTAL32K_CLK_HZ                          32768U  /*!< Board xtal32K frequency in Hz */
+
+/*******************************************************************************
+ ************************ BOARD_InitBootClocks function ************************
+ ******************************************************************************/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif /* __cplusplus*/
+
+/*!
+ * @brief This function executes default configuration of clocks.
+ *
+ */
+void BOARD_InitBootClocks(void);
+
+#if defined(__cplusplus)
+}
+#endif /* __cplusplus*/
+
+/*******************************************************************************
+ ********************** Configuration BOARD_BootClockRUN ***********************
+ ******************************************************************************/
+/*******************************************************************************
+ * Definitions for BOARD_BootClockRUN configuration
+ ******************************************************************************/
+#define BOARD_BOOTCLOCKRUN_CORE_CLOCK             150000000U  /*!< Core clock frequency: 150000000Hz */
+
+
+/*******************************************************************************
+ * API for BOARD_BootClockRUN configuration
+ ******************************************************************************/
+#if defined(__cplusplus)
+extern "C" {
+#endif /* __cplusplus*/
+
+/*!
+ * @brief This function executes configuration of clocks.
+ *
+ */
+void BOARD_BootClockRUN(void);
+
+#if defined(__cplusplus)
+}
+#endif /* __cplusplus*/
+
+#endif /* _CLOCK_CONFIG_H_ */
+

+ 77 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/peripherals.c

@@ -0,0 +1,77 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+
+/* clang-format off */
+/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+!!GlobalInfo
+product: Peripherals v9.0
+processor: LPC55S69
+package_id: LPC55S69JBD64
+mcu_data: ksdk2_0
+processor_version: 9.0.3
+functionalGroups:
+- name: BOARD_InitPeripherals
+  UUID: 85f4cd0c-3b58-4e23-a413-239f6952f139
+  called_from_default_init: true
+  selectedCore: cm33_core0
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
+
+/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+component:
+- type: 'system'
+- type_id: 'system_54b53072540eeeb8f8e9343e71f28176'
+- global_system_definitions:
+  - user_definitions: ''
+  - user_includes: ''
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
+/* clang-format on */
+
+/***********************************************************************************************************************
+ * Included files
+ **********************************************************************************************************************/
+#include "peripherals.h"
+
+/***********************************************************************************************************************
+ * BOARD_InitPeripherals functional group
+ **********************************************************************************************************************/
+/***********************************************************************************************************************
+ * NVIC initialization code
+ **********************************************************************************************************************/
+/* clang-format off */
+/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+instance:
+- name: 'NVIC'
+- type: 'nvic'
+- mode: 'general'
+- custom_name_enabled: 'false'
+- type_id: 'nvic_57b5eef3774cc60acaede6f5b8bddc67'
+- functional_group: 'BOARD_InitPeripherals'
+- peripheral: 'NVIC'
+- config_sets:
+  - nvic:
+    - interrupt_table: []
+    - interrupts: []
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
+/* clang-format on */
+
+/* Empty initialization function (commented out)
+static void NVIC_init(void) {
+} */
+
+/***********************************************************************************************************************
+ * Initialization functions
+ **********************************************************************************************************************/
+void BOARD_InitPeripherals(void)
+{
+  /* Initialize components */
+}
+
+/***********************************************************************************************************************
+ * BOARD_InitBootPeripherals function
+ **********************************************************************************************************************/
+void BOARD_InitBootPeripherals(void)
+{
+  BOARD_InitPeripherals();
+}

+ 33 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/peripherals.h

@@ -0,0 +1,33 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+
+#ifndef _PERIPHERALS_H_
+#define _PERIPHERALS_H_
+
+/***********************************************************************************************************************
+ * Included files
+ **********************************************************************************************************************/
+#include "fsl_common.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif /* __cplusplus */
+
+/***********************************************************************************************************************
+ * Initialization functions
+ **********************************************************************************************************************/
+
+void BOARD_InitPeripherals(void);
+
+/***********************************************************************************************************************
+ * BOARD_InitBootPeripherals function
+ **********************************************************************************************************************/
+void BOARD_InitBootPeripherals(void);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* _PERIPHERALS_H_ */

+ 337 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/pin_mux.c

@@ -0,0 +1,337 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+
+/* clang-format off */
+/*
+ * TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+!!GlobalInfo
+product: Pins v9.0
+processor: LPC55S69
+package_id: LPC55S69JBD64
+mcu_data: ksdk2_0
+processor_version: 9.0.3
+pin_labels:
+- {pin_num: '36', pin_signal: PIO0_0/FC3_SCK/CTIMER0_MAT0/SCT_GPI0/SD1_CARD_INT_N/SECURE_GPIO0_0/ACMP0_A, label: _DBGIF_TCK_SWCLK, identifier: DBGIF_TCK_SWCLK}
+- {pin_num: '2', pin_signal: PIO0_1/FC3_CTS_SDA_SSEL0/CT_INP0/SCT_GPI1/SD1_CLK/CMP0_OUT/SECURE_GPIO0_1, label: _DBGIF_TDI, identifier: DBGIF_TDI}
+- {pin_num: '52', pin_signal: PIO0_2/FC3_TXD_SCL_MISO_WS/CT_INP1/SCT0_OUT0/SCT_GPI2/SECURE_GPIO0_2, label: _DBGIF_TMS_SWDIO, identifier: DBGIF_TMS_SWDIO}
+- {pin_num: '44', pin_signal: PIO0_28/FC0_SCK/SD1_CMD/CT_INP11/SCT0_OUT7/USB0_OVERCURRENTN/PLU_OUT1/SECURE_GPIO0_28, label: _DBGIF_TMS_SWDIO_TXEN, identifier: DBGIF_TMS_SWDIO_TXEN}
+- {pin_num: '58', pin_signal: PIO0_19/FC4_RTS_SCL_SSEL1/UTICK_CAP0/CTIMER0_MAT2/SCT0_OUT2/FC7_TXD_SCL_MISO_WS/PLU_IN4/SECURE_GPIO0_19, label: _DBGIF_RESET, identifier: DBG_IF_RESET;DBGIF_RESET}
+- {pin_num: '46', pin_signal: PIO0_13/FC1_CTS_SDA_SSEL0/UTICK_CAP0/CT_INP0/SCT_GPI0/FC1_RXD_SDA_MOSI_DATA/PLU_IN0/SECURE_GPIO0_13, label: _DBGIF_RESET_TXEN, identifier: DBG_IF_RESET_TXEN;DBGIF_RESET_TXEN}
+- {pin_num: '53', pin_signal: PIO0_3/FC3_RXD_SDA_MOSI_DATA/CTIMER0_MAT1/SCT0_OUT1/SCT_GPI3/SECURE_GPIO0_3, label: _DBGIF_TDO_SWO, identifier: DBG_IF_TDO_SWO;DBGIF_TDO_SWO}
+- {pin_num: '45', pin_signal: PIO0_24/FC0_RXD_SDA_MOSI_DATA/SD0_D0/CT_INP8/SCT_GPI0/SECURE_GPIO0_24, label: _FC0_TARGET_RXD, identifier: FC0_TARGET_RXD}
+- {pin_num: '51', pin_signal: PIO0_25/FC0_TXD_SCL_MISO_WS/SD0_D1/CT_INP9/SCT_GPI1/SECURE_GPIO0_25, label: _FC0_TARGET_TXD, identifier: FC0_TARGET_TXD}
+- {pin_num: '56', pin_signal: PIO0_5/FC4_RXD_SDA_MOSI_DATA/CTIMER3_MAT0/SCT_GPI5/FC3_RTS_SCL_SSEL1/MCLK/SECURE_GPIO0_5, label: _LED1, identifier: LED1}
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
+ */
+/* clang-format on */
+
+#include "fsl_common.h"
+#include "fsl_gpio.h"
+#include "pin_mux.h"
+
+/* FUNCTION ************************************************************************************************************
+ *
+ * Function Name : BOARD_InitBootPins
+ * Description   : Calls initialization functions.
+ *
+ * END ****************************************************************************************************************/
+void BOARD_InitBootPins(void)
+{
+    MCU_LINK_InitPins();
+}
+
+/* clang-format off */
+/*
+ * TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
+MCU_LINK_InitPins:
+- options: {callFromInitBoot: 'true', prefix: '', coreID: cm33_core0, enableClock: 'true'}
+- pin_list:
+  - {pin_num: '36', peripheral: GPIO, signal: 'PIO0, 0', pin_signal: PIO0_0/FC3_SCK/CTIMER0_MAT0/SCT_GPI0/SD1_CARD_INT_N/SECURE_GPIO0_0/ACMP0_A, direction: INPUT,
+    slew_rate: fast}
+  - {pin_num: '2', peripheral: GPIO, signal: 'PIO0, 1', pin_signal: PIO0_1/FC3_CTS_SDA_SSEL0/CT_INP0/SCT_GPI1/SD1_CLK/CMP0_OUT/SECURE_GPIO0_1, direction: INPUT, slew_rate: fast}
+  - {pin_num: '52', peripheral: GPIO, signal: 'PIO0, 2', pin_signal: PIO0_2/FC3_TXD_SCL_MISO_WS/CT_INP1/SCT0_OUT0/SCT_GPI2/SECURE_GPIO0_2, direction: INPUT, mode: inactive,
+    slew_rate: fast}
+  - {pin_num: '44', peripheral: GPIO, signal: 'PIO0, 28', pin_signal: PIO0_28/FC0_SCK/SD1_CMD/CT_INP11/SCT0_OUT7/USB0_OVERCURRENTN/PLU_OUT1/SECURE_GPIO0_28, direction: OUTPUT,
+    gpio_init_state: 'false', slew_rate: fast}
+  - {pin_num: '58', peripheral: GPIO, signal: 'PIO0, 19', pin_signal: PIO0_19/FC4_RTS_SCL_SSEL1/UTICK_CAP0/CTIMER0_MAT2/SCT0_OUT2/FC7_TXD_SCL_MISO_WS/PLU_IN4/SECURE_GPIO0_19,
+    identifier: DBGIF_RESET, direction: INPUT, slew_rate: fast}
+  - {pin_num: '46', peripheral: GPIO, signal: 'PIO0, 13', pin_signal: PIO0_13/FC1_CTS_SDA_SSEL0/UTICK_CAP0/CT_INP0/SCT_GPI0/FC1_RXD_SDA_MOSI_DATA/PLU_IN0/SECURE_GPIO0_13,
+    identifier: DBGIF_RESET_TXEN, direction: OUTPUT, gpio_init_state: 'false'}
+  - {pin_num: '53', peripheral: FLEXCOMM3, signal: RXD_SDA_MOSI_DATA, pin_signal: PIO0_3/FC3_RXD_SDA_MOSI_DATA/CTIMER0_MAT1/SCT0_OUT1/SCT_GPI3/SECURE_GPIO0_3, identifier: DBGIF_TDO_SWO,
+    slew_rate: fast}
+  - {pin_num: '45', peripheral: FLEXCOMM0, signal: RXD_SDA_MOSI_DATA, pin_signal: PIO0_24/FC0_RXD_SDA_MOSI_DATA/SD0_D0/CT_INP8/SCT_GPI0/SECURE_GPIO0_24, slew_rate: fast}
+  - {pin_num: '51', peripheral: FLEXCOMM0, signal: TXD_SCL_MISO_WS, pin_signal: PIO0_25/FC0_TXD_SCL_MISO_WS/SD0_D1/CT_INP9/SCT_GPI1/SECURE_GPIO0_25, slew_rate: fast}
+  - {pin_num: '23', peripheral: USBHSH, signal: USB_DP, pin_signal: USB1_DP}
+  - {pin_num: '24', peripheral: USBHSH, signal: USB_DM, pin_signal: USB1_DM}
+  - {pin_num: '25', peripheral: USBHSH, signal: USB_VBUS, pin_signal: USB1_VBUS}
+  - {pin_num: '22', peripheral: USBHSH, signal: USB_VSS, pin_signal: USB1_VSS22}
+  - {pin_num: '26', peripheral: USBHSH, signal: USB_VSS, pin_signal: USB1_VSS26}
+  - {pin_num: '41', peripheral: USBHSH, signal: USB_PORTPWRN, pin_signal: PIO1_2/CTIMER0_MAT3/SCT_GPI6/HS_SPI_SCK/USB1_PORTPWRN/PLU_OUT5}
+  - {pin_num: '56', peripheral: GPIO, signal: 'PIO0, 5', pin_signal: PIO0_5/FC4_RXD_SDA_MOSI_DATA/CTIMER3_MAT0/SCT_GPI5/FC3_RTS_SCL_SSEL1/MCLK/SECURE_GPIO0_5, direction: OUTPUT,
+    gpio_init_state: 'true', mode: pullUp}
+ * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
+ */
+/* clang-format on */
+
+/* FUNCTION ************************************************************************************************************
+ *
+ * Function Name : MCU_LINK_InitPins
+ * Description   : Configures pin routing and optionally pin electrical features.
+ *
+ * END ****************************************************************************************************************/
+/* Function assigned for the Cortex-M33 (Core #0) */
+void MCU_LINK_InitPins(void)
+{
+    /* Enables the clock for the I/O controller.: Enable Clock. */
+    CLOCK_EnableClock(kCLOCK_Iocon);
+
+    /* Enables the clock for the GPIO0 module */
+    CLOCK_EnableClock(kCLOCK_Gpio0);
+
+    gpio_pin_config_t DBGIF_TCK_SWCLK_config = {
+        .pinDirection = kGPIO_DigitalInput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_0 (pin 36)  */
+    GPIO_PinInit(DBGIF_TCK_SWCLK_GPIO, DBGIF_TCK_SWCLK_PORT, DBGIF_TCK_SWCLK_PIN, &DBGIF_TCK_SWCLK_config);
+
+    gpio_pin_config_t DBGIF_TDI_config = {
+        .pinDirection = kGPIO_DigitalInput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_1 (pin 2)  */
+    GPIO_PinInit(DBGIF_TDI_GPIO, DBGIF_TDI_PORT, DBGIF_TDI_PIN, &DBGIF_TDI_config);
+
+    gpio_pin_config_t DBGIF_TMS_SWDIO_config = {
+        .pinDirection = kGPIO_DigitalInput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_2 (pin 52)  */
+    GPIO_PinInit(DBGIF_TMS_SWDIO_GPIO, DBGIF_TMS_SWDIO_PORT, DBGIF_TMS_SWDIO_PIN, &DBGIF_TMS_SWDIO_config);
+
+    gpio_pin_config_t LED1_config = {
+        .pinDirection = kGPIO_DigitalOutput,
+        .outputLogic = 1U
+    };
+    /* Initialize GPIO functionality on pin PIO0_5 (pin 56)  */
+    GPIO_PinInit(LED1_GPIO, LED1_PORT, LED1_PIN, &LED1_config);
+
+    gpio_pin_config_t DBGIF_RESET_TXEN_config = {
+        .pinDirection = kGPIO_DigitalOutput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_13 (pin 46)  */
+    GPIO_PinInit(DBGIF_RESET_TXEN_GPIO, DBGIF_RESET_TXEN_PORT, DBGIF_RESET_TXEN_PIN, &DBGIF_RESET_TXEN_config);
+
+    gpio_pin_config_t DBGIF_RESET_config = {
+        .pinDirection = kGPIO_DigitalInput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_19 (pin 58)  */
+    GPIO_PinInit(DBGIF_RESET_GPIO, DBGIF_RESET_PORT, DBGIF_RESET_PIN, &DBGIF_RESET_config);
+
+    gpio_pin_config_t DBGIF_TMS_SWDIO_TXEN_config = {
+        .pinDirection = kGPIO_DigitalOutput,
+        .outputLogic = 0U
+    };
+    /* Initialize GPIO functionality on pin PIO0_28 (pin 44)  */
+    GPIO_PinInit(DBGIF_TMS_SWDIO_TXEN_GPIO, DBGIF_TMS_SWDIO_TXEN_PORT, DBGIF_TMS_SWDIO_TXEN_PIN, &DBGIF_TMS_SWDIO_TXEN_config);
+
+    IOCON->PIO[0][0] = ((IOCON->PIO[0][0] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT00 (pin 36) is configured as PIO0_0. */
+                        | IOCON_PIO_FUNC(PIO0_0_FUNC_ALT0)
+
+                        /* Driver slew rate.
+                         * : Fast-mode, output slew rate is faster.
+                         * Refer to the appropriate specific device data sheet for details. */
+                        | IOCON_PIO_SLEW(PIO0_0_SLEW_FAST)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO0_0_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][1] = ((IOCON->PIO[0][1] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT01 (pin 2) is configured as PIO0_1. */
+                        | IOCON_PIO_FUNC(PIO0_1_FUNC_ALT0)
+
+                        /* Driver slew rate.
+                         * : Fast-mode, output slew rate is faster.
+                         * Refer to the appropriate specific device data sheet for details. */
+                        | IOCON_PIO_SLEW(PIO0_1_SLEW_FAST)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO0_1_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][13] = ((IOCON->PIO[0][13] &
+                          /* Mask bits to zero which are setting */
+                          (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                         /* Selects pin function.
+                          * : PORT013 (pin 46) is configured as PIO0_13. */
+                         | IOCON_PIO_FUNC(PIO0_13_FUNC_ALT0)
+
+                         /* Select Digital mode.
+                          * : Enable Digital mode.
+                          * Digital input is enabled. */
+                         | IOCON_PIO_DIGIMODE(PIO0_13_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][19] = ((IOCON->PIO[0][19] &
+                          /* Mask bits to zero which are setting */
+                          (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                         /* Selects pin function.
+                          * : PORT019 (pin 58) is configured as PIO0_19. */
+                         | IOCON_PIO_FUNC(PIO0_19_FUNC_ALT0)
+
+                         /* Driver slew rate.
+                          * : Fast-mode, output slew rate is faster.
+                          * Refer to the appropriate specific device data sheet for details. */
+                         | IOCON_PIO_SLEW(PIO0_19_SLEW_FAST)
+
+                         /* Select Digital mode.
+                          * : Enable Digital mode.
+                          * Digital input is enabled. */
+                         | IOCON_PIO_DIGIMODE(PIO0_19_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][2] = ((IOCON->PIO[0][2] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_MODE_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT02 (pin 52) is configured as PIO0_2. */
+                        | IOCON_PIO_FUNC(PIO0_2_FUNC_ALT0)
+
+                        /* Selects function mode (on-chip pull-up/pull-down resistor control).
+                         * : Inactive.
+                         * Inactive (no pull-down/pull-up resistor enabled). */
+                        | IOCON_PIO_MODE(PIO0_2_MODE_INACTIVE)
+
+                        /* Driver slew rate.
+                         * : Fast-mode, output slew rate is faster.
+                         * Refer to the appropriate specific device data sheet for details. */
+                        | IOCON_PIO_SLEW(PIO0_2_SLEW_FAST)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO0_2_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][24] = ((IOCON->PIO[0][24] &
+                          /* Mask bits to zero which are setting */
+                          (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                         /* Selects pin function.
+                          * : PORT024 (pin 45) is configured as FC0_RXD_SDA_MOSI_DATA. */
+                         | IOCON_PIO_FUNC(PIO0_24_FUNC_ALT1)
+
+                         /* Driver slew rate.
+                          * : Fast-mode, output slew rate is faster.
+                          * Refer to the appropriate specific device data sheet for details. */
+                         | IOCON_PIO_SLEW(PIO0_24_SLEW_FAST)
+
+                         /* Select Digital mode.
+                          * : Enable Digital mode.
+                          * Digital input is enabled. */
+                         | IOCON_PIO_DIGIMODE(PIO0_24_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][25] = ((IOCON->PIO[0][25] &
+                          /* Mask bits to zero which are setting */
+                          (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                         /* Selects pin function.
+                          * : PORT025 (pin 51) is configured as FC0_TXD_SCL_MISO_WS. */
+                         | IOCON_PIO_FUNC(PIO0_25_FUNC_ALT1)
+
+                         /* Driver slew rate.
+                          * : Fast-mode, output slew rate is faster.
+                          * Refer to the appropriate specific device data sheet for details. */
+                         | IOCON_PIO_SLEW(PIO0_25_SLEW_FAST)
+
+                         /* Select Digital mode.
+                          * : Enable Digital mode.
+                          * Digital input is enabled. */
+                         | IOCON_PIO_DIGIMODE(PIO0_25_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][28] = ((IOCON->PIO[0][28] &
+                          /* Mask bits to zero which are setting */
+                          (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                         /* Selects pin function.
+                          * : PORT028 (pin 44) is configured as PIO0_28. */
+                         | IOCON_PIO_FUNC(PIO0_28_FUNC_ALT0)
+
+                         /* Driver slew rate.
+                          * : Fast-mode, output slew rate is faster.
+                          * Refer to the appropriate specific device data sheet for details. */
+                         | IOCON_PIO_SLEW(PIO0_28_SLEW_FAST)
+
+                         /* Select Digital mode.
+                          * : Enable Digital mode.
+                          * Digital input is enabled. */
+                         | IOCON_PIO_DIGIMODE(PIO0_28_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][3] = ((IOCON->PIO[0][3] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_SLEW_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT03 (pin 53) is configured as FC3_RXD_SDA_MOSI_DATA. */
+                        | IOCON_PIO_FUNC(PIO0_3_FUNC_ALT1)
+
+                        /* Driver slew rate.
+                         * : Fast-mode, output slew rate is faster.
+                         * Refer to the appropriate specific device data sheet for details. */
+                        | IOCON_PIO_SLEW(PIO0_3_SLEW_FAST)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO0_3_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[0][5] = ((IOCON->PIO[0][5] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_MODE_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT05 (pin 56) is configured as PIO0_5. */
+                        | IOCON_PIO_FUNC(PIO0_5_FUNC_ALT0)
+
+                        /* Selects function mode (on-chip pull-up/pull-down resistor control).
+                         * : Pull-up.
+                         * Pull-up resistor enabled. */
+                        | IOCON_PIO_MODE(PIO0_5_MODE_PULL_UP)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO0_5_DIGIMODE_DIGITAL));
+
+    IOCON->PIO[1][2] = ((IOCON->PIO[1][2] &
+                         /* Mask bits to zero which are setting */
+                         (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_DIGIMODE_MASK)))
+
+                        /* Selects pin function.
+                         * : PORT12 (pin 41) is configured as USB1_PORTPWRN. */
+                        | IOCON_PIO_FUNC(PIO1_2_FUNC_ALT7)
+
+                        /* Select Digital mode.
+                         * : Enable Digital mode.
+                         * Digital input is enabled. */
+                        | IOCON_PIO_DIGIMODE(PIO1_2_DIGIMODE_DIGITAL));
+}
+/***********************************************************************************************************************
+ * EOF
+ **********************************************************************************************************************/

+ 276 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/board/pin_mux.h

@@ -0,0 +1,276 @@
+/***********************************************************************************************************************
+ * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
+ * will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
+ **********************************************************************************************************************/
+
+#ifndef _PIN_MUX_H_
+#define _PIN_MUX_H_
+
+/*!
+ * @addtogroup pin_mux
+ * @{
+ */
+
+/***********************************************************************************************************************
+ * API
+ **********************************************************************************************************************/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*!
+ * @brief Calls initialization functions.
+ *
+ */
+void BOARD_InitBootPins(void);
+
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_0_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_0_FUNC_ALT0 0x00u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_0_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_13_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_13_FUNC_ALT0 0x00u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_19_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_19_FUNC_ALT0 0x00u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_19_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_1_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_1_FUNC_ALT0 0x00u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_1_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_24_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 1. */
+#define PIO0_24_FUNC_ALT1 0x01u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_24_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_25_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 1. */
+#define PIO0_25_FUNC_ALT1 0x01u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_25_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_28_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_28_FUNC_ALT0 0x00u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_28_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_2_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_2_FUNC_ALT0 0x00u
+/*!
+ * @brief
+ * Selects function mode (on-chip pull-up/pull-down resistor control).
+ * : Inactive.
+ * Inactive (no pull-down/pull-up resistor enabled).
+ */
+#define PIO0_2_MODE_INACTIVE 0x00u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_2_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_3_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 1. */
+#define PIO0_3_FUNC_ALT1 0x01u
+/*!
+ * @brief
+ * Driver slew rate.
+ * : Fast-mode, output slew rate is faster.
+ * Refer to the appropriate specific device data sheet for details.
+ */
+#define PIO0_3_SLEW_FAST 0x01u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO0_5_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 0. */
+#define PIO0_5_FUNC_ALT0 0x00u
+/*!
+ * @brief Selects function mode (on-chip pull-up/pull-down resistor control).: Pull-up. Pull-up resistor enabled. */
+#define PIO0_5_MODE_PULL_UP 0x02u
+/*!
+ * @brief Select Digital mode.: Enable Digital mode. Digital input is enabled. */
+#define PIO1_2_DIGIMODE_DIGITAL 0x01u
+/*!
+ * @brief Selects pin function.: Alternative connection 7. */
+#define PIO1_2_FUNC_ALT7 0x07u
+
+/*! @name PIO0_0 (number 36), _DBGIF_TCK_SWCLK
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_TCK_SWCLK_GPIO GPIO                /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_TCK_SWCLK_GPIO_PIN_MASK (1U << 0U) /*!<@brief GPIO pin mask */
+#define DBGIF_TCK_SWCLK_PORT 0U                  /*!<@brief PORT peripheral base pointer */
+#define DBGIF_TCK_SWCLK_PIN 0U                   /*!<@brief PORT pin number */
+#define DBGIF_TCK_SWCLK_PIN_MASK (1U << 0U)      /*!<@brief PORT pin mask */
+                                                 /* @} */
+
+/*! @name PIO0_1 (number 2), _DBGIF_TDI
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_TDI_GPIO GPIO                /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_TDI_GPIO_PIN_MASK (1U << 1U) /*!<@brief GPIO pin mask */
+#define DBGIF_TDI_PORT 0U                  /*!<@brief PORT peripheral base pointer */
+#define DBGIF_TDI_PIN 1U                   /*!<@brief PORT pin number */
+#define DBGIF_TDI_PIN_MASK (1U << 1U)      /*!<@brief PORT pin mask */
+                                           /* @} */
+
+/*! @name PIO0_2 (number 52), _DBGIF_TMS_SWDIO
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_TMS_SWDIO_GPIO GPIO                /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_TMS_SWDIO_GPIO_PIN_MASK (1U << 2U) /*!<@brief GPIO pin mask */
+#define DBGIF_TMS_SWDIO_PORT 0U                  /*!<@brief PORT peripheral base pointer */
+#define DBGIF_TMS_SWDIO_PIN 2U                   /*!<@brief PORT pin number */
+#define DBGIF_TMS_SWDIO_PIN_MASK (1U << 2U)      /*!<@brief PORT pin mask */
+                                                 /* @} */
+
+/*! @name PIO0_28 (number 44), _DBGIF_TMS_SWDIO_TXEN
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_TMS_SWDIO_TXEN_GPIO GPIO                 /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_TMS_SWDIO_TXEN_GPIO_PIN_MASK (1U << 28U) /*!<@brief GPIO pin mask */
+#define DBGIF_TMS_SWDIO_TXEN_PORT 0U                   /*!<@brief PORT peripheral base pointer */
+#define DBGIF_TMS_SWDIO_TXEN_PIN 28U                   /*!<@brief PORT pin number */
+#define DBGIF_TMS_SWDIO_TXEN_PIN_MASK (1U << 28U)      /*!<@brief PORT pin mask */
+                                                       /* @} */
+
+/*! @name PIO0_19 (number 58), _DBGIF_RESET
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_RESET_GPIO GPIO                 /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_RESET_GPIO_PIN_MASK (1U << 19U) /*!<@brief GPIO pin mask */
+#define DBGIF_RESET_PORT 0U                   /*!<@brief PORT peripheral base pointer */
+#define DBGIF_RESET_PIN 19U                   /*!<@brief PORT pin number */
+#define DBGIF_RESET_PIN_MASK (1U << 19U)      /*!<@brief PORT pin mask */
+                                              /* @} */
+
+/*! @name PIO0_13 (number 46), _DBGIF_RESET_TXEN
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define DBGIF_RESET_TXEN_GPIO GPIO                 /*!<@brief GPIO peripheral base pointer */
+#define DBGIF_RESET_TXEN_GPIO_PIN_MASK (1U << 13U) /*!<@brief GPIO pin mask */
+#define DBGIF_RESET_TXEN_PORT 0U                   /*!<@brief PORT peripheral base pointer */
+#define DBGIF_RESET_TXEN_PIN 13U                   /*!<@brief PORT pin number */
+#define DBGIF_RESET_TXEN_PIN_MASK (1U << 13U)      /*!<@brief PORT pin mask */
+                                                   /* @} */
+
+/*! @name PIO0_3 (number 53), _DBGIF_TDO_SWO
+  @{ */
+#define DBGIF_TDO_SWO_PORT 0U                  /*!<@brief PORT peripheral base pointer */
+#define DBGIF_TDO_SWO_PIN 3U                   /*!<@brief PORT pin number */
+#define DBGIF_TDO_SWO_PIN_MASK (1U << 3U)      /*!<@brief PORT pin mask */
+                                               /* @} */
+
+/*! @name PIO0_24 (number 45), _FC0_TARGET_RXD
+  @{ */
+#define FC0_TARGET_RXD_PORT 0U                   /*!<@brief PORT peripheral base pointer */
+#define FC0_TARGET_RXD_PIN 24U                   /*!<@brief PORT pin number */
+#define FC0_TARGET_RXD_PIN_MASK (1U << 24U)      /*!<@brief PORT pin mask */
+                                                 /* @} */
+
+/*! @name PIO0_25 (number 51), _FC0_TARGET_TXD
+  @{ */
+#define FC0_TARGET_TXD_PORT 0U                   /*!<@brief PORT peripheral base pointer */
+#define FC0_TARGET_TXD_PIN 25U                   /*!<@brief PORT pin number */
+#define FC0_TARGET_TXD_PIN_MASK (1U << 25U)      /*!<@brief PORT pin mask */
+                                                 /* @} */
+
+/*! @name PIO0_5 (number 56), _LED1
+  @{ */
+
+/* Symbols to be used with GPIO driver */
+#define LED1_GPIO GPIO                /*!<@brief GPIO peripheral base pointer */
+#define LED1_GPIO_PIN_MASK (1U << 5U) /*!<@brief GPIO pin mask */
+#define LED1_PORT 0U                  /*!<@brief PORT peripheral base pointer */
+#define LED1_PIN 5U                   /*!<@brief PORT pin number */
+#define LED1_PIN_MASK (1U << 5U)      /*!<@brief PORT pin mask */
+                                      /* @} */
+
+/*!
+ * @brief Configures pin routing and optionally pin electrical features.
+ *
+ */
+void MCU_LINK_InitPins(void); /* Function assigned for the Cortex-M33 (Core #0) */
+
+#if defined(__cplusplus)
+}
+#endif
+
+/*!
+ * @}
+ */
+#endif /* _PIN_MUX_H_ */
+
+/***********************************************************************************************************************
+ * EOF
+ **********************************************************************************************************************/

+ 1284 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/fsl_usart.c

@@ -0,0 +1,1284 @@
+/*
+ * Copyright (c) 2016, Freescale Semiconductor, Inc.
+ * Copyright 2016-2021 NXP
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+ 
+ /*
+ * Modified by Arm
+ */
+#define FSL_USART_MODIFIED_BY_ARM 1U
+
+#include "fsl_usart.h"
+#include "fsl_device_registers.h"
+#include "fsl_flexcomm.h"
+
+/*******************************************************************************
+ * Definitions
+ ******************************************************************************/
+
+/* Component ID definition, used by tools. */
+#ifndef FSL_COMPONENT_ID
+#define FSL_COMPONENT_ID "platform.drivers.flexcomm_usart"
+#endif
+
+/*!
+ * @brief Used for conversion from `flexcomm_usart_irq_handler_t` to `flexcomm_irq_handler_t`
+ */
+typedef union usart_to_flexcomm
+{
+    flexcomm_usart_irq_handler_t usart_master_handler;
+    flexcomm_irq_handler_t flexcomm_handler;
+} usart_to_flexcomm_t;
+
+enum
+{
+    kUSART_TxIdle, /* TX idle. */
+    kUSART_TxBusy, /* TX busy. */
+    kUSART_RxIdle, /* RX idle. */
+    kUSART_RxBusy  /* RX busy. */
+};
+
+/*******************************************************************************
+ * Variables
+ ******************************************************************************/
+
+/*! @brief IRQ name array */
+static const IRQn_Type s_usartIRQ[] = USART_IRQS;
+
+/*! @brief Array to map USART instance number to base address. */
+static const uint32_t s_usartBaseAddrs[FSL_FEATURE_SOC_USART_COUNT] = USART_BASE_ADDRS;
+
+/*******************************************************************************
+ * Code
+ ******************************************************************************/
+
+/* Get the index corresponding to the USART */
+/*! brief Returns instance number for USART peripheral base address. */
+uint32_t USART_GetInstance(USART_Type *base)
+{
+    uint32_t i;
+
+    for (i = 0; i < (uint32_t)FSL_FEATURE_SOC_USART_COUNT; i++)
+    {
+        if ((uint32_t)base == s_usartBaseAddrs[i])
+        {
+            break;
+        }
+    }
+
+    assert(i < (uint32_t)FSL_FEATURE_SOC_USART_COUNT);
+    return i;
+}
+
+/*!
+ * brief Get the length of received data in RX ring buffer.
+ *
+ * param handle USART handle pointer.
+ * return Length of received data in RX ring buffer.
+ */
+size_t USART_TransferGetRxRingBufferLength(usart_handle_t *handle)
+{
+    size_t size;
+
+    /* Check arguments */
+    assert(NULL != handle);
+    uint16_t rxRingBufferHead = handle->rxRingBufferHead;
+    uint16_t rxRingBufferTail = handle->rxRingBufferTail;
+
+    if (rxRingBufferTail > rxRingBufferHead)
+    {
+        size = (size_t)rxRingBufferHead + handle->rxRingBufferSize - (size_t)rxRingBufferTail;
+    }
+    else
+    {
+        size = (size_t)rxRingBufferHead - (size_t)rxRingBufferTail;
+    }
+    return size;
+}
+
+static bool USART_TransferIsRxRingBufferFull(usart_handle_t *handle)
+{
+    bool full;
+
+    /* Check arguments */
+    assert(NULL != handle);
+
+    if (USART_TransferGetRxRingBufferLength(handle) == (handle->rxRingBufferSize - 1U))
+    {
+        full = true;
+    }
+    else
+    {
+        full = false;
+    }
+    return full;
+}
+
+/*!
+ * brief Sets up the RX ring buffer.
+ *
+ * This function sets up the RX ring buffer to a specific USART handle.
+ *
+ * When the RX ring buffer is used, data received are stored into the ring buffer even when the
+ * user doesn't call the USART_TransferReceiveNonBlocking() API. If there is already data received
+ * in the ring buffer, the user can get the received data from the ring buffer directly.
+ *
+ * note When using the RX ring buffer, one byte is reserved for internal use. In other
+ * words, if p ringBufferSize is 32, then only 31 bytes are used for saving data.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param ringBuffer Start address of the ring buffer for background receiving. Pass NULL to disable the ring buffer.
+ * param ringBufferSize size of the ring buffer.
+ */
+void USART_TransferStartRingBuffer(USART_Type *base, usart_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize)
+{
+    /* Check arguments */
+    assert(NULL != base);
+    assert(NULL != handle);
+    assert(NULL != ringBuffer);
+
+    /* Setup the ringbuffer address */
+    handle->rxRingBuffer     = ringBuffer;
+    handle->rxRingBufferSize = ringBufferSize;
+    handle->rxRingBufferHead = 0U;
+    handle->rxRingBufferTail = 0U;
+    /* ring buffer is ready we can start receiving data */
+    base->FIFOINTENSET = USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK;
+}
+
+/*!
+ * brief Aborts the background transfer and uninstalls the ring buffer.
+ *
+ * This function aborts the background transfer and uninstalls the ring buffer.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ */
+void USART_TransferStopRingBuffer(USART_Type *base, usart_handle_t *handle)
+{
+    /* Check arguments */
+    assert(NULL != base);
+    assert(NULL != handle);
+
+    if (handle->rxState == (uint8_t)kUSART_RxIdle)
+    {
+        base->FIFOINTENCLR = USART_FIFOINTENCLR_RXLVL_MASK | USART_FIFOINTENCLR_RXERR_MASK;
+    }
+    handle->rxRingBuffer     = NULL;
+    handle->rxRingBufferSize = 0U;
+    handle->rxRingBufferHead = 0U;
+    handle->rxRingBufferTail = 0U;
+}
+
+/*!
+ * brief Initializes a USART instance with user configuration structure and peripheral clock.
+ *
+ * This function configures the USART module with the user-defined settings. The user can configure the configuration
+ * structure and also get the default configuration by using the USART_GetDefaultConfig() function.
+ * Example below shows how to use this API to configure USART.
+ * code
+ *  usart_config_t usartConfig;
+ *  usartConfig.baudRate_Bps = 115200U;
+ *  usartConfig.parityMode = kUSART_ParityDisabled;
+ *  usartConfig.stopBitCount = kUSART_OneStopBit;
+ *  USART_Init(USART1, &usartConfig, 20000000U);
+ * endcode
+ *
+ * param base USART peripheral base address.
+ * param config Pointer to user-defined configuration structure.
+ * param srcClock_Hz USART clock source frequency in HZ.
+ * retval kStatus_USART_BaudrateNotSupport Baudrate is not support in current clock source.
+ * retval kStatus_InvalidArgument USART base address is not valid
+ * retval kStatus_Success Status USART initialize succeed
+ */
+status_t USART_Init(USART_Type *base, const usart_config_t *config, uint32_t srcClock_Hz)
+{
+    int result;
+
+    /* check arguments */
+    assert(!((NULL == base) || (NULL == config) || (0U == srcClock_Hz)));
+    if ((NULL == base) || (NULL == config) || (0U == srcClock_Hz))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    /* initialize flexcomm to USART mode */
+    result = FLEXCOMM_Init(base, FLEXCOMM_PERIPH_USART);
+    if (kStatus_Success != result)
+    {
+        return result;
+    }
+
+    if (config->enableTx)
+    {
+        /* empty and enable txFIFO */
+        base->FIFOCFG |= USART_FIFOCFG_EMPTYTX_MASK | USART_FIFOCFG_ENABLETX_MASK;
+        /* setup trigger level */
+        base->FIFOTRIG &= ~(USART_FIFOTRIG_TXLVL_MASK);
+        base->FIFOTRIG |= USART_FIFOTRIG_TXLVL(config->txWatermark);
+        /* enable trigger interrupt */
+        base->FIFOTRIG |= USART_FIFOTRIG_TXLVLENA_MASK;
+    }
+
+    /* empty and enable rxFIFO */
+    if (config->enableRx)
+    {
+        base->FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK | USART_FIFOCFG_ENABLERX_MASK;
+        /* setup trigger level */
+        base->FIFOTRIG &= ~(USART_FIFOTRIG_RXLVL_MASK);
+        base->FIFOTRIG |= USART_FIFOTRIG_RXLVL(config->rxWatermark);
+        /* enable trigger interrupt */
+        base->FIFOTRIG |= USART_FIFOTRIG_RXLVLENA_MASK;
+    }
+    /* setup configuration and enable USART */
+    base->CFG = USART_CFG_PARITYSEL(config->parityMode) | USART_CFG_STOPLEN(config->stopBitCount) |
+                USART_CFG_DATALEN(config->bitCountPerChar) | USART_CFG_LOOP(config->loopback) |
+                USART_CFG_SYNCEN((uint32_t)config->syncMode >> 1) | USART_CFG_SYNCMST((uint8_t)config->syncMode) |
+                USART_CFG_CLKPOL(config->clockPolarity) | USART_CFG_MODE32K(config->enableMode32k) |
+                USART_CFG_CTSEN(config->enableHardwareFlowControl) | USART_CFG_ENABLE_MASK;
+
+    /* Setup baudrate */
+    if (config->enableMode32k)
+    {
+        if ((9600U % config->baudRate_Bps) == 0U)
+        {
+            base->BRG = 9600U / config->baudRate_Bps;
+        }
+        else
+        {
+            return kStatus_USART_BaudrateNotSupport;
+        }
+    }
+    else
+    {
+        result = USART_SetBaudRate(base, config->baudRate_Bps, srcClock_Hz);
+        if (kStatus_Success != result)
+        {
+            return result;
+        }
+    }
+    /* Setting continuous Clock configuration. used for synchronous mode. */
+    USART_EnableContinuousSCLK(base, config->enableContinuousSCLK);
+
+    return kStatus_Success;
+}
+
+/*!
+ * brief Deinitializes a USART instance.
+ *
+ * This function waits for TX complete, disables TX and RX, and disables the USART clock.
+ *
+ * param base USART peripheral base address.
+ */
+void USART_Deinit(USART_Type *base)
+{
+    /* Check arguments */
+    assert(NULL != base);
+    while (0U == (base->STAT & USART_STAT_TXIDLE_MASK))
+    {
+    }
+    /* Disable interrupts, disable dma requests, disable peripheral */
+    base->FIFOINTENCLR = USART_FIFOINTENCLR_TXERR_MASK | USART_FIFOINTENCLR_RXERR_MASK | USART_FIFOINTENCLR_TXLVL_MASK |
+                         USART_FIFOINTENCLR_RXLVL_MASK;
+    base->FIFOCFG &= ~(USART_FIFOCFG_DMATX_MASK | USART_FIFOCFG_DMARX_MASK);
+    base->CFG &= ~(USART_CFG_ENABLE_MASK);
+}
+
+/*!
+ * brief Gets the default configuration structure.
+ *
+ * This function initializes the USART configuration structure to a default value. The default
+ * values are:
+ *   usartConfig->baudRate_Bps = 115200U;
+ *   usartConfig->parityMode = kUSART_ParityDisabled;
+ *   usartConfig->stopBitCount = kUSART_OneStopBit;
+ *   usartConfig->bitCountPerChar = kUSART_8BitsPerChar;
+ *   usartConfig->loopback = false;
+ *   usartConfig->enableTx = false;
+ *   usartConfig->enableRx = false;
+ *
+ * param config Pointer to configuration structure.
+ */
+void USART_GetDefaultConfig(usart_config_t *config)
+{
+    /* Check arguments */
+    assert(NULL != config);
+
+    /* Initializes the configure structure to zero. */
+    (void)memset(config, 0, sizeof(*config));
+
+    /* Set always all members ! */
+    config->baudRate_Bps              = 115200U;
+    config->parityMode                = kUSART_ParityDisabled;
+    config->stopBitCount              = kUSART_OneStopBit;
+    config->bitCountPerChar           = kUSART_8BitsPerChar;
+    config->loopback                  = false;
+    config->enableRx                  = false;
+    config->enableTx                  = false;
+    config->enableMode32k             = false;
+    config->txWatermark               = kUSART_TxFifo0;
+    config->rxWatermark               = kUSART_RxFifo1;
+    config->syncMode                  = kUSART_SyncModeDisabled;
+    config->enableContinuousSCLK      = false;
+    config->clockPolarity             = kUSART_RxSampleOnFallingEdge;
+    config->enableHardwareFlowControl = false;
+}
+
+#ifdef  FSL_USART_MODIFIED_BY_ARM
+#define FRACT_BITS                 12U
+#define BAUDRATE_DIVIDER_MAX_ERROR  3U
+ /*!
+ * brief Sets the USART instance baud rate.
+ *
+ * This function configures the USART module baud rate. 
+ *
+ *  USART_SetBaudRate(USART1, 115200U, 20000000U);
+ * endcode
+ *
+ * param base USART peripheral base address.
+ * param baudrate_Bps USART baudrate to be set.
+ * param srcClock_Hz USART   clock source frequency in HZ (not used)
+ * retval kStatus_USART_BaudrateNotSupport Baudrate is not support in current clock source.
+ * retval kStatus_Success Set baudrate succeed.
+ * retval kStatus_InvalidArgument One or more arguments are invalid.
+ *
+ * Requirement:
+ *   FlexComm input clock must be set 48MHz (fro_hf / 2).
+ */
+status_t USART_SetBaudRate(USART_Type *base, uint32_t baudrate_Bps, uint32_t srcClock_Hz)
+{
+    uint32_t flexcomm_idx;
+    uint32_t flexcomm_clock;
+    uint32_t div, div_calc;         /* divider, 12 LSBs are fractonal part */
+    uint8_t  ovs, ovs_best;         /* oversampling                        */
+    uint32_t br_div, br_div_best;   /* baudate divider                      */
+    uint8_t  mul;
+    uint32_t delta;
+
+    (void)srcClock_Hz;
+
+    flexcomm_idx = FLEXCOMM_GetInstance(base);
+    flexcomm_clock   = CLOCK_GetFlexCommInputClock(flexcomm_idx);
+    if (flexcomm_clock != 48000000U)
+    {
+        /* FlexComm input clock must be 48000000 */
+        return kStatus_USART_BaudrateNotSupport;
+    }
+  
+    /* Calculate fixed point divider (12 LSBs are fractional part) */
+    div = (uint32_t)(((uint64_t)flexcomm_clock << FRACT_BITS) / (uint64_t)baudrate_Bps);
+
+    if ((div >> FRACT_BITS) < 5U)
+    {
+        return kStatus_USART_BaudrateNotSupport;
+    }
+  
+    br_div_best = 0U;
+    if ((div & ((1 << FRACT_BITS) - 1U)) == 0U)
+    {
+        /* Divider has no fractional part */
+        for (ovs = 16; ovs > 8U; ovs--)
+        {
+            br_div = div / ovs;
+            if ((br_div & ((1 << FRACT_BITS) - 1U)) == 0U)
+            {
+                ovs_best    = ovs;
+                br_div_best = br_div >> FRACT_BITS;
+                mul         = 0U;
+                break;
+            }
+        }
+    }
+
+    if (br_div_best == 0U)
+    {
+        /* Divider has fractional part */
+        if ((div >> FRACT_BITS) > 16)
+        {
+            /* Oversampling is fixed to 16 */
+            ovs_best = 16U;
+            br_div = (div / ovs_best)>> FRACT_BITS;
+            if (br_div <= 0xFFFFU)
+            {
+                br_div_best = br_div;
+            }
+            else
+            {
+              return kStatus_USART_BaudrateNotSupport;
+            }
+            /* div = (1 + (mul / 256)) * (ovs * br_div)  =>  mul = (256 * div) / (ovs * br_div) - 256 */
+            mul = ((((uint64_t)div * (uint64_t)256U) / ((uint64_t)ovs_best * (uint64_t)br_div_best)) >> FRACT_BITS) - 256U;
+
+        }
+        else
+        {
+            /* Baudrate divider is fixed to 1. */
+            br_div_best = 1U;
+            ovs_best = div >> FRACT_BITS;
+            mul = ((((uint64_t)div * (uint64_t)256U) / ((uint64_t)ovs_best * (uint64_t)br_div_best)) >> FRACT_BITS) - 256U;
+        }
+    }
+
+    div_calc = (uint32_t)(((uint64_t)ovs_best * (uint64_t)br_div_best * (uint64_t)mul) << FRACT_BITS) / 256U + (((uint64_t)ovs_best * (uint64_t)br_div_best) << FRACT_BITS);
+    delta    = (div < div_calc) ? (div_calc - div) : (div - div_calc);
+    if (((delta * 100U) / div) > BAUDRATE_DIVIDER_MAX_ERROR)
+    {
+        return kStatus_USART_BaudrateNotSupport;
+    }
+
+    CLOCK_SetClkDiv(kCLOCK_DivFlexFrg0 + flexcomm_idx, mul, false);
+    base->OSR = ovs_best - 1U;
+    base->BRG = br_div_best - 1U;
+
+    return kStatus_Success;
+}
+#else
+/*!
+ * brief Sets the USART instance baud rate.
+ *
+ * This function configures the USART module baud rate. This function is used to update
+ * the USART module baud rate after the USART module is initialized by the USART_Init.
+ * code
+ *  USART_SetBaudRate(USART1, 115200U, 20000000U);
+ * endcode
+ *
+ * param base USART peripheral base address.
+ * param baudrate_Bps USART baudrate to be set.
+ * param srcClock_Hz USART clock source frequency in HZ.
+ * retval kStatus_USART_BaudrateNotSupport Baudrate is not support in current clock source.
+ * retval kStatus_Success Set baudrate succeed.
+ * retval kStatus_InvalidArgument One or more arguments are invalid.
+ */
+status_t USART_SetBaudRate(USART_Type *base, uint32_t baudrate_Bps, uint32_t srcClock_Hz)
+{
+    uint32_t best_diff = (uint32_t)-1, best_osrval = 0xf, best_brgval = (uint32_t)-1;
+    uint32_t osrval, brgval, diff, baudrate;
+
+    /* check arguments */
+    assert(!((NULL == base) || (0U == baudrate_Bps) || (0U == srcClock_Hz)));
+    if ((NULL == base) || (0U == baudrate_Bps) || (0U == srcClock_Hz))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    /* If synchronous master mode is enabled, only configure the BRG value. */
+    if ((base->CFG & USART_CFG_SYNCEN_MASK) != 0U)
+    {
+        if ((base->CFG & USART_CFG_SYNCMST_MASK) != 0U)
+        {
+            brgval    = srcClock_Hz / baudrate_Bps;
+            base->BRG = brgval - 1U;
+        }
+    }
+    else
+    {
+        /*
+         * Smaller values of OSR can make the sampling position within a data bit less accurate and may
+         * potentially cause more noise errors or incorrect data.
+         */
+        for (osrval = best_osrval; osrval >= 8U; osrval--)
+        {
+            brgval = (((srcClock_Hz * 10U) / ((osrval + 1U) * baudrate_Bps)) - 5U) / 10U;
+            if (brgval > 0xFFFFU)
+            {
+                continue;
+            }
+            baudrate = srcClock_Hz / ((osrval + 1U) * (brgval + 1U));
+            diff     = (baudrate_Bps < baudrate) ? (baudrate - baudrate_Bps) : (baudrate_Bps - baudrate);
+            if (diff < best_diff)
+            {
+                best_diff   = diff;
+                best_osrval = osrval;
+                best_brgval = brgval;
+            }
+        }
+
+        /* Check to see if actual baud rate is within 3% of desired baud rate
+         * based on the best calculated OSR and BRG value */
+        baudrate = srcClock_Hz / ((best_osrval + 1U) * (best_brgval + 1U));
+        diff     = (baudrate_Bps < baudrate) ? (baudrate - baudrate_Bps) : (baudrate_Bps - baudrate);
+        if (diff > ((baudrate_Bps / 100U) * 3U))
+        {
+            return kStatus_USART_BaudrateNotSupport;
+        }
+
+        /* value over range */
+        if (best_brgval > 0xFFFFU)
+        {
+            return kStatus_USART_BaudrateNotSupport;
+        }
+
+        base->OSR = best_osrval;
+        base->BRG = best_brgval;
+    }
+
+    return kStatus_Success;
+}
+#endif
+
+/*!
+ * brief Enable 32 kHz mode which USART uses clock from the RTC oscillator as the clock source.
+ *
+ * Please note that in order to use a 32 kHz clock to operate USART properly, the RTC oscillator
+ * and its 32 kHz output must be manully enabled by user, by calling RTC_Init and setting
+ * SYSCON_RTCOSCCTRL_EN bit to 1.
+ * And in 32kHz clocking mode the USART can only work at 9600 baudrate or at the baudrate that
+ * 9600 can evenly divide, eg: 4800, 3200.
+ *
+ * param base USART peripheral base address.
+ * param baudRate_Bps USART baudrate to be set..
+ * param enableMode32k true is 32k mode, false is normal mode.
+ * param srcClock_Hz USART clock source frequency in HZ.
+ * retval kStatus_USART_BaudrateNotSupport Baudrate is not support in current clock source.
+ * retval kStatus_Success Set baudrate succeed.
+ * retval kStatus_InvalidArgument One or more arguments are invalid.
+ */
+status_t USART_Enable32kMode(USART_Type *base, uint32_t baudRate_Bps, bool enableMode32k, uint32_t srcClock_Hz)
+{
+#ifdef FSL_USART_MODIFIED_BY_ARM
+  (void)base;
+  (void)baudRate_Bps;
+  (void)enableMode32k;
+  (void)srcClock_Hz;
+
+  return kStatus_USART_BaudrateNotSupport;
+#else
+    status_t result = kStatus_Success;
+    base->CFG &= ~(USART_CFG_ENABLE_MASK);
+    if (enableMode32k)
+    {
+        base->CFG |= USART_CFG_MODE32K_MASK;
+        if ((9600U % baudRate_Bps) == 0U)
+        {
+            base->BRG = 9600U / baudRate_Bps - 1U;
+        }
+        else
+        {
+            return kStatus_USART_BaudrateNotSupport;
+        }
+    }
+    else
+    {
+        base->CFG &= ~(USART_CFG_MODE32K_MASK);
+        result = USART_SetBaudRate(base, baudRate_Bps, srcClock_Hz);
+        if (kStatus_Success != result)
+        {
+            return result;
+        }
+    }
+    base->CFG |= USART_CFG_ENABLE_MASK;
+    return result;
+#endif
+}
+
+/*!
+ * brief Enable 9-bit data mode for USART.
+ *
+ * This function set the 9-bit mode for USART module. The 9th bit is not used for parity thus can be modified by user.
+ *
+ * param base USART peripheral base address.
+ * param enable true to enable, false to disable.
+ */
+void USART_Enable9bitMode(USART_Type *base, bool enable)
+{
+    assert(base != NULL);
+
+    uint32_t temp = 0U;
+
+    if (enable)
+    {
+        /* Set USART 9-bit mode, disable parity. */
+        temp = base->CFG & ~((uint32_t)USART_CFG_DATALEN_MASK | (uint32_t)USART_CFG_PARITYSEL_MASK);
+        temp |= (uint32_t)USART_CFG_DATALEN(0x2U);
+        base->CFG = temp;
+    }
+    else
+    {
+        /* Set USART to 8-bit mode. */
+        base->CFG &= ~((uint32_t)USART_CFG_DATALEN_MASK);
+        base->CFG |= (uint32_t)USART_CFG_DATALEN(0x1U);
+    }
+}
+
+/*!
+ * brief Transmit an address frame in 9-bit data mode.
+ *
+ * param base USART peripheral base address.
+ * param address USART slave address.
+ */
+void USART_SendAddress(USART_Type *base, uint8_t address)
+{
+    assert(base != NULL);
+    base->FIFOWR = ((uint32_t)address | 0x100UL);
+}
+
+/*!
+ * brief Writes to the TX register using a blocking method.
+ *
+ * This function polls the TX register, waits for the TX register to be empty or for the TX FIFO
+ * to have room and writes data to the TX buffer.
+ *
+ * param base USART peripheral base address.
+ * param data Start address of the data to write.
+ * param length Size of the data to write.
+ * retval kStatus_USART_Timeout Transmission timed out and was aborted.
+ * retval kStatus_InvalidArgument Invalid argument.
+ * retval kStatus_Success Successfully wrote all data.
+ */
+status_t USART_WriteBlocking(USART_Type *base, const uint8_t *data, size_t length)
+{
+    /* Check arguments */
+    assert(!((NULL == base) || (NULL == data)));
+#if UART_RETRY_TIMES
+    uint32_t waitTimes;
+#endif
+    if ((NULL == base) || (NULL == data))
+    {
+        return kStatus_InvalidArgument;
+    }
+    /* Check whether txFIFO is enabled */
+    if (0U == (base->FIFOCFG & USART_FIFOCFG_ENABLETX_MASK))
+    {
+        return kStatus_InvalidArgument;
+    }
+    for (; length > 0U; length--)
+    {
+        /* Loop until txFIFO get some space for new data */
+#if UART_RETRY_TIMES
+        waitTimes = UART_RETRY_TIMES;
+        while ((0U == (base->FIFOSTAT & USART_FIFOSTAT_TXNOTFULL_MASK)) && (--waitTimes != 0U))
+#else
+        while (0U == (base->FIFOSTAT & USART_FIFOSTAT_TXNOTFULL_MASK))
+#endif
+        {
+        }
+#if UART_RETRY_TIMES
+        if (0U == waitTimes)
+        {
+            return kStatus_USART_Timeout;
+        }
+#endif
+        base->FIFOWR = *data;
+        data++;
+    }
+    /* Wait to finish transfer */
+#if UART_RETRY_TIMES
+    waitTimes = UART_RETRY_TIMES;
+    while ((0U == (base->STAT & USART_STAT_TXIDLE_MASK)) && (--waitTimes != 0U))
+#else
+    while (0U == (base->STAT & USART_STAT_TXIDLE_MASK))
+#endif
+    {
+    }
+#if UART_RETRY_TIMES
+    if (0U == waitTimes)
+    {
+        return kStatus_USART_Timeout;
+    }
+#endif
+    return kStatus_Success;
+}
+
+/*!
+ * brief Read RX data register using a blocking method.
+ *
+ * This function polls the RX register, waits for the RX register to be full or for RX FIFO to
+ * have data and read data from the TX register.
+ *
+ * param base USART peripheral base address.
+ * param data Start address of the buffer to store the received data.
+ * param length Size of the buffer.
+ * retval kStatus_USART_FramingError Receiver overrun happened while receiving data.
+ * retval kStatus_USART_ParityError Noise error happened while receiving data.
+ * retval kStatus_USART_NoiseError Framing error happened while receiving data.
+ * retval kStatus_USART_RxError Overflow or underflow rxFIFO happened.
+ * retval kStatus_USART_Timeout Transmission timed out and was aborted.
+ * retval kStatus_Success Successfully received all data.
+ */
+status_t USART_ReadBlocking(USART_Type *base, uint8_t *data, size_t length)
+{
+    uint32_t statusFlag;
+    status_t status = kStatus_Success;
+#if UART_RETRY_TIMES
+    uint32_t waitTimes;
+#endif
+
+    /* check arguments */
+    assert(!((NULL == base) || (NULL == data)));
+    if ((NULL == base) || (NULL == data))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    /* Check whether rxFIFO is enabled */
+    if ((base->FIFOCFG & USART_FIFOCFG_ENABLERX_MASK) == 0U)
+    {
+        return kStatus_Fail;
+    }
+    for (; length > 0U; length--)
+    {
+        /* loop until rxFIFO have some data to read */
+#if UART_RETRY_TIMES
+        waitTimes = UART_RETRY_TIMES;
+        while (((base->FIFOSTAT & USART_FIFOSTAT_RXNOTEMPTY_MASK) == 0U) && (--waitTimes != 0U))
+#else
+        while ((base->FIFOSTAT & USART_FIFOSTAT_RXNOTEMPTY_MASK) == 0U)
+#endif
+        {
+        }
+#if UART_RETRY_TIMES
+        if (waitTimes == 0U)
+        {
+            status = kStatus_USART_Timeout;
+            break;
+        }
+#endif
+        /* check rxFIFO statusFlag */
+        if ((base->FIFOSTAT & USART_FIFOSTAT_RXERR_MASK) != 0U)
+        {
+            base->FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;
+            base->FIFOSTAT |= USART_FIFOSTAT_RXERR_MASK;
+            status = kStatus_USART_RxError;
+            break;
+        }
+        /* check receive statusFlag */
+        statusFlag = base->STAT;
+        /* Clear all status flags */
+        base->STAT |= statusFlag;
+        if ((statusFlag & USART_STAT_PARITYERRINT_MASK) != 0U)
+        {
+            status = kStatus_USART_ParityError;
+        }
+        if ((statusFlag & USART_STAT_FRAMERRINT_MASK) != 0U)
+        {
+            status = kStatus_USART_FramingError;
+        }
+        if ((statusFlag & USART_STAT_RXNOISEINT_MASK) != 0U)
+        {
+            status = kStatus_USART_NoiseError;
+        }
+
+        if (kStatus_Success == status)
+        {
+            *data = (uint8_t)base->FIFORD;
+            data++;
+        }
+        else
+        {
+            break;
+        }
+    }
+    return status;
+}
+
+/*!
+ * brief Initializes the USART handle.
+ *
+ * This function initializes the USART handle which can be used for other USART
+ * transactional APIs. Usually, for a specified USART instance,
+ * call this API once to get the initialized handle.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param callback The callback function.
+ * param userData The parameter of the callback function.
+ */
+status_t USART_TransferCreateHandle(USART_Type *base,
+                                    usart_handle_t *handle,
+                                    usart_transfer_callback_t callback,
+                                    void *userData)
+{
+    /* Check 'base' */
+    assert(!((NULL == base) || (NULL == handle)));
+
+    uint32_t instance = 0;
+    usart_to_flexcomm_t handler;
+    handler.usart_master_handler = USART_TransferHandleIRQ;
+
+    if ((NULL == base) || (NULL == handle))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    instance = USART_GetInstance(base);
+
+    (void)memset(handle, 0, sizeof(*handle));
+    /* Set the TX/RX state. */
+    handle->rxState = (uint8_t)kUSART_RxIdle;
+    handle->txState = (uint8_t)kUSART_TxIdle;
+    /* Set the callback and user data. */
+    handle->callback    = callback;
+    handle->userData    = userData;
+    handle->rxWatermark = (uint8_t)USART_FIFOTRIG_RXLVL_GET(base);
+    handle->txWatermark = (uint8_t)USART_FIFOTRIG_TXLVL_GET(base);
+
+    FLEXCOMM_SetIRQHandler(base, handler.flexcomm_handler, handle);
+
+    /* Enable interrupt in NVIC. */
+    (void)EnableIRQ(s_usartIRQ[instance]);
+
+    return kStatus_Success;
+}
+
+/*!
+ * brief Transmits a buffer of data using the interrupt method.
+ *
+ * This function sends data using an interrupt method. This is a non-blocking function, which
+ * returns directly without waiting for all data to be written to the TX register. When
+ * all data is written to the TX register in the IRQ handler, the USART driver calls the callback
+ * function and passes the ref kStatus_USART_TxIdle as status parameter.
+ *
+ * note The kStatus_USART_TxIdle is passed to the upper layer when all data is written
+ * to the TX register. However it does not ensure that all data are sent out. Before disabling the TX,
+ * check the kUSART_TransmissionCompleteFlag to ensure that the TX is finished.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param xfer USART transfer structure. See  #usart_transfer_t.
+ * retval kStatus_Success Successfully start the data transmission.
+ * retval kStatus_USART_TxBusy Previous transmission still not finished, data not all written to TX register yet.
+ * retval kStatus_InvalidArgument Invalid argument.
+ */
+status_t USART_TransferSendNonBlocking(USART_Type *base, usart_handle_t *handle, usart_transfer_t *xfer)
+{
+    /* Check arguments */
+    assert(!((NULL == base) || (NULL == handle) || (NULL == xfer)));
+    if ((NULL == base) || (NULL == handle) || (NULL == xfer))
+    {
+        return kStatus_InvalidArgument;
+    }
+    /* Check xfer members */
+    assert(!((0U == xfer->dataSize) || (NULL == xfer->txData)));
+    if ((0U == xfer->dataSize) || (NULL == xfer->txData))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    /* Return error if current TX busy. */
+    if ((uint8_t)kUSART_TxBusy == handle->txState)
+    {
+        return kStatus_USART_TxBusy;
+    }
+    else
+    {
+        /* Disable IRQ when configuring transfer handle, in case interrupt occurs during the process and messes up the
+         * handle value. */
+        uint32_t interruptMask = USART_GetEnabledInterrupts(base);
+        USART_DisableInterrupts(base, interruptMask);
+        handle->txData        = xfer->txData;
+        handle->txDataSize    = xfer->dataSize;
+        handle->txDataSizeAll = xfer->dataSize;
+        handle->txState       = (uint8_t)kUSART_TxBusy;
+        /* Enable transmiter interrupt and the previously disabled interrupt. */
+        USART_EnableInterrupts(base, interruptMask | (uint32_t)kUSART_TxLevelInterruptEnable);
+    }
+    return kStatus_Success;
+}
+
+/*!
+ * brief Aborts the interrupt-driven data transmit.
+ *
+ * This function aborts the interrupt driven data sending. The user can get the remainBtyes to find out
+ * how many bytes are still not sent out.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ */
+void USART_TransferAbortSend(USART_Type *base, usart_handle_t *handle)
+{
+    assert(NULL != handle);
+
+    /* Disable interrupts */
+    USART_DisableInterrupts(base, (uint32_t)kUSART_TxLevelInterruptEnable);
+    /* Empty txFIFO */
+    base->FIFOCFG |= USART_FIFOCFG_EMPTYTX_MASK;
+
+    handle->txDataSize = 0U;
+    handle->txState    = (uint8_t)kUSART_TxIdle;
+}
+
+/*!
+ * brief Get the number of bytes that have been sent out to bus.
+ *
+ * This function gets the number of bytes that have been sent out to bus by interrupt method.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param count Send bytes count.
+ * retval kStatus_NoTransferInProgress No send in progress.
+ * retval kStatus_InvalidArgument Parameter is invalid.
+ * retval kStatus_Success Get successfully through the parameter \p count;
+ */
+status_t USART_TransferGetSendCount(USART_Type *base, usart_handle_t *handle, uint32_t *count)
+{
+    assert(NULL != handle);
+    assert(NULL != count);
+
+    if ((uint8_t)kUSART_TxIdle == handle->txState)
+    {
+        return kStatus_NoTransferInProgress;
+    }
+
+    *count = handle->txDataSizeAll - handle->txDataSize -
+             ((base->FIFOSTAT & USART_FIFOSTAT_TXLVL_MASK) >> USART_FIFOSTAT_TXLVL_SHIFT);
+
+    return kStatus_Success;
+}
+
+/*!
+ * brief Receives a buffer of data using an interrupt method.
+ *
+ * This function receives data using an interrupt method. This is a non-blocking function, which
+ *  returns without waiting for all data to be received.
+ * If the RX ring buffer is used and not empty, the data in the ring buffer is copied and
+ * the parameter p receivedBytes shows how many bytes are copied from the ring buffer.
+ * After copying, if the data in the ring buffer is not enough to read, the receive
+ * request is saved by the USART driver. When the new data arrives, the receive request
+ * is serviced first. When all data is received, the USART driver notifies the upper layer
+ * through a callback function and passes the status parameter ref kStatus_USART_RxIdle.
+ * For example, the upper layer needs 10 bytes but there are only 5 bytes in the ring buffer.
+ * The 5 bytes are copied to the xfer->data and this function returns with the
+ * parameter p receivedBytes set to 5. For the left 5 bytes, newly arrived data is
+ * saved from the xfer->data[5]. When 5 bytes are received, the USART driver notifies the upper layer.
+ * If the RX ring buffer is not enabled, this function enables the RX and RX interrupt
+ * to receive data to the xfer->data. When all data is received, the upper layer is notified.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param xfer USART transfer structure, see #usart_transfer_t.
+ * param receivedBytes Bytes received from the ring buffer directly.
+ * retval kStatus_Success Successfully queue the transfer into transmit queue.
+ * retval kStatus_USART_RxBusy Previous receive request is not finished.
+ * retval kStatus_InvalidArgument Invalid argument.
+ */
+status_t USART_TransferReceiveNonBlocking(USART_Type *base,
+                                          usart_handle_t *handle,
+                                          usart_transfer_t *xfer,
+                                          size_t *receivedBytes)
+{
+    uint32_t i;
+    /* How many bytes to copy from ring buffer to user memory. */
+    size_t bytesToCopy = 0U;
+    /* How many bytes to receive. */
+    size_t bytesToReceive;
+    /* How many bytes currently have received. */
+    size_t bytesCurrentReceived;
+    uint32_t interruptMask = 0U;
+
+    /* Check arguments */
+    assert(!((NULL == base) || (NULL == handle) || (NULL == xfer)));
+    if ((NULL == base) || (NULL == handle) || (NULL == xfer))
+    {
+        return kStatus_InvalidArgument;
+    }
+    /* Check xfer members */
+    assert(!((0U == xfer->dataSize) || (NULL == xfer->rxData)));
+    if ((0U == xfer->dataSize) || (NULL == xfer->rxData))
+    {
+        return kStatus_InvalidArgument;
+    }
+
+    /* Enable address detect when address match is enabled. */
+    if ((base->CFG & (uint32_t)USART_CFG_AUTOADDR_MASK) != 0U)
+    {
+        base->CTL |= (uint32_t)USART_CTL_ADDRDET_MASK;
+    }
+
+    /* How to get data:
+       1. If RX ring buffer is not enabled, then save xfer->data and xfer->dataSize
+          to uart handle, enable interrupt to store received data to xfer->data. When
+          all data received, trigger callback.
+       2. If RX ring buffer is enabled and not empty, get data from ring buffer first.
+          If there are enough data in ring buffer, copy them to xfer->data and return.
+          If there are not enough data in ring buffer, copy all of them to xfer->data,
+          save the xfer->data remained empty space to uart handle, receive data
+          to this empty space and trigger callback when finished. */
+    if ((uint8_t)kUSART_RxBusy == handle->rxState)
+    {
+        return kStatus_USART_RxBusy;
+    }
+    else
+    {
+        bytesToReceive       = xfer->dataSize;
+        bytesCurrentReceived = 0U;
+        /* If RX ring buffer is used. */
+        if (handle->rxRingBuffer != NULL)
+        {
+            /* Disable IRQ, protect ring buffer. */
+            interruptMask = USART_GetEnabledInterrupts(base);
+            USART_DisableInterrupts(base, interruptMask);
+
+            /* How many bytes in RX ring buffer currently. */
+            bytesToCopy = USART_TransferGetRxRingBufferLength(handle);
+            if (bytesToCopy != 0U)
+            {
+                bytesToCopy = MIN(bytesToReceive, bytesToCopy);
+                bytesToReceive -= bytesToCopy;
+                /* Copy data from ring buffer to user memory. */
+                for (i = 0U; i < bytesToCopy; i++)
+                {
+                    xfer->rxData[bytesCurrentReceived++] = handle->rxRingBuffer[handle->rxRingBufferTail];
+                    /* Wrap to 0. Not use modulo (%) because it might be large and slow. */
+                    if ((size_t)handle->rxRingBufferTail + 1U == handle->rxRingBufferSize)
+                    {
+                        handle->rxRingBufferTail = 0U;
+                    }
+                    else
+                    {
+                        handle->rxRingBufferTail++;
+                    }
+                }
+            }
+            /* If ring buffer does not have enough data, still need to read more data. */
+            if (bytesToReceive != 0U)
+            {
+                /* No data in ring buffer, save the request to UART handle. */
+                handle->rxData        = xfer->rxData + bytesCurrentReceived;
+                handle->rxDataSize    = bytesToReceive;
+                handle->rxDataSizeAll = xfer->dataSize;
+                handle->rxState       = (uint8_t)kUSART_RxBusy;
+            }
+            /* Re-enable IRQ. */
+            USART_EnableInterrupts(base, interruptMask);
+            /* Call user callback since all data are received. */
+            if (0U == bytesToReceive)
+            {
+                if (handle->callback != NULL)
+                {
+                    handle->callback(base, handle, kStatus_USART_RxIdle, handle->userData);
+                }
+            }
+        }
+        /* Ring buffer not used. */
+        else
+        {
+            /* Disable IRQ when configuring transfer handle, in case interrupt occurs during the process and messes up
+             * the handle value. */
+            interruptMask = USART_GetEnabledInterrupts(base);
+            USART_DisableInterrupts(base, interruptMask);
+            handle->rxData        = xfer->rxData + bytesCurrentReceived;
+            handle->rxDataSize    = bytesToReceive;
+            handle->rxDataSizeAll = bytesToReceive;
+            handle->rxState       = (uint8_t)kUSART_RxBusy;
+
+            /* Enable RX interrupt. */
+            base->FIFOINTENSET = USART_FIFOINTENSET_RXLVL_MASK;
+            /* Re-enable IRQ. */
+            USART_EnableInterrupts(base, interruptMask);
+        }
+        /* Return the how many bytes have read. */
+        if (receivedBytes != NULL)
+        {
+            *receivedBytes = bytesCurrentReceived;
+        }
+    }
+    return kStatus_Success;
+}
+
+/*!
+ * brief Aborts the interrupt-driven data receiving.
+ *
+ * This function aborts the interrupt-driven data receiving. The user can get the remainBytes to find out
+ * how many bytes not received yet.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ */
+void USART_TransferAbortReceive(USART_Type *base, usart_handle_t *handle)
+{
+    assert(NULL != handle);
+
+    /* Only abort the receive to handle->rxData, the RX ring buffer is still working. */
+    if (NULL == handle->rxRingBuffer)
+    {
+        /* Disable interrupts */
+        USART_DisableInterrupts(base, (uint32_t)kUSART_RxLevelInterruptEnable);
+        /* Empty rxFIFO */
+        base->FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;
+    }
+
+    handle->rxDataSize = 0U;
+    handle->rxState    = (uint8_t)kUSART_RxIdle;
+}
+
+/*!
+ * brief Get the number of bytes that have been received.
+ *
+ * This function gets the number of bytes that have been received.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ * param count Receive bytes count.
+ * retval kStatus_NoTransferInProgress No receive in progress.
+ * retval kStatus_InvalidArgument Parameter is invalid.
+ * retval kStatus_Success Get successfully through the parameter \p count;
+ */
+status_t USART_TransferGetReceiveCount(USART_Type *base, usart_handle_t *handle, uint32_t *count)
+{
+    assert(NULL != handle);
+    assert(NULL != count);
+
+    if ((uint8_t)kUSART_RxIdle == handle->rxState)
+    {
+        return kStatus_NoTransferInProgress;
+    }
+
+    *count = handle->rxDataSizeAll - handle->rxDataSize;
+
+    return kStatus_Success;
+}
+
+/*!
+ * brief USART IRQ handle function.
+ *
+ * This function handles the USART transmit and receive IRQ request.
+ *
+ * param base USART peripheral base address.
+ * param handle USART handle pointer.
+ */
+void USART_TransferHandleIRQ(USART_Type *base, usart_handle_t *handle)
+{
+    /* Check arguments */
+    assert((NULL != base) && (NULL != handle));
+
+    bool receiveEnabled = ((handle->rxDataSize != 0U) || (handle->rxRingBuffer != NULL));
+    bool sendEnabled    = (handle->txDataSize != 0U);
+    uint8_t rxdata;
+    size_t tmpsize;
+
+    /* If RX overrun. */
+    if ((base->FIFOSTAT & USART_FIFOSTAT_RXERR_MASK) != 0U)
+    {
+        /* Clear rx error state. */
+        base->FIFOSTAT |= USART_FIFOSTAT_RXERR_MASK;
+        /* clear rxFIFO */
+        base->FIFOCFG |= USART_FIFOCFG_EMPTYRX_MASK;
+        /* Trigger callback. */
+        if (handle->callback != NULL)
+        {
+            handle->callback(base, handle, kStatus_USART_RxError, handle->userData);
+        }
+    }
+    while ((receiveEnabled && ((base->FIFOSTAT & USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U)) ||
+           (sendEnabled && ((base->FIFOSTAT & USART_FIFOSTAT_TXNOTFULL_MASK) != 0U)))
+    {
+        /* Receive data */
+        if (receiveEnabled && ((base->FIFOSTAT & USART_FIFOSTAT_RXNOTEMPTY_MASK) != 0U))
+        {
+            /* Clear address detect when RXFIFO has data. */
+            base->CTL &= ~(uint32_t)USART_CTL_ADDRDET_MASK;
+            /* Receive to app bufffer if app buffer is present */
+            if (handle->rxDataSize != 0U)
+            {
+                rxdata          = (uint8_t)base->FIFORD;
+                *handle->rxData = rxdata;
+                handle->rxDataSize--;
+                handle->rxData++;
+                receiveEnabled = ((handle->rxDataSize != 0U) || (handle->rxRingBuffer != NULL));
+                if (0U == handle->rxDataSize)
+                {
+                    if (NULL == handle->rxRingBuffer)
+                    {
+                        base->FIFOINTENCLR = USART_FIFOINTENCLR_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK;
+                    }
+                    handle->rxState = (uint8_t)kUSART_RxIdle;
+                    if (handle->callback != NULL)
+                    {
+                        handle->callback(base, handle, kStatus_USART_RxIdle, handle->userData);
+                    }
+                }
+            }
+            /* Otherwise receive to ring buffer if ring buffer is present */
+            else
+            {
+                if (handle->rxRingBuffer != NULL)
+                {
+                    /* If RX ring buffer is full, trigger callback to notify over run. */
+                    if (USART_TransferIsRxRingBufferFull(handle))
+                    {
+                        if (handle->callback != NULL)
+                        {
+                            handle->callback(base, handle, kStatus_USART_RxRingBufferOverrun, handle->userData);
+                        }
+                    }
+                    /* If ring buffer is still full after callback function, the oldest data is overridden. */
+                    if (USART_TransferIsRxRingBufferFull(handle))
+                    {
+                        /* Increase handle->rxRingBufferTail to make room for new data. */
+                        if ((size_t)handle->rxRingBufferTail + 1U == handle->rxRingBufferSize)
+                        {
+                            handle->rxRingBufferTail = 0U;
+                        }
+                        else
+                        {
+                            handle->rxRingBufferTail++;
+                        }
+                    }
+                    /* Read data. */
+                    rxdata                                         = (uint8_t)base->FIFORD;
+                    handle->rxRingBuffer[handle->rxRingBufferHead] = rxdata;
+                    /* Increase handle->rxRingBufferHead. */
+                    if ((size_t)handle->rxRingBufferHead + 1U == handle->rxRingBufferSize)
+                    {
+                        handle->rxRingBufferHead = 0U;
+                    }
+                    else
+                    {
+                        handle->rxRingBufferHead++;
+                    }
+                }
+            }
+        }
+        /* Send data */
+        if (sendEnabled && ((base->FIFOSTAT & USART_FIFOSTAT_TXNOTFULL_MASK) != 0U))
+        {
+            base->FIFOWR = *handle->txData;
+            handle->txDataSize--;
+            handle->txData++;
+            sendEnabled = handle->txDataSize != 0U;
+            if (!sendEnabled)
+            {
+                base->FIFOINTENCLR = USART_FIFOINTENCLR_TXLVL_MASK;
+
+                base->INTENSET = USART_INTENSET_TXIDLEEN_MASK;
+            }
+        }
+    }
+
+    /* Tx idle and the interrupt is enabled. */
+    if ((0U != (base->INTENSET & USART_INTENSET_TXIDLEEN_MASK)) && (0U != (base->INTSTAT & USART_INTSTAT_TXIDLE_MASK)))
+    {
+        /* Set txState to idle only when all data has been sent out to bus. */
+        handle->txState = (uint8_t)kUSART_TxIdle;
+        /* Disable tx idle interrupt */
+        base->INTENCLR = USART_INTENCLR_TXIDLECLR_MASK;
+
+        /* Trigger callback. */
+        if (handle->callback != NULL)
+        {
+            handle->callback(base, handle, kStatus_USART_TxIdle, handle->userData);
+        }
+    }
+
+    /* ring buffer is not used */
+    if (NULL == handle->rxRingBuffer)
+    {
+        tmpsize = handle->rxDataSize;
+
+        /* restore if rx transfer ends and rxLevel is different from default value */
+        if ((tmpsize == 0U) && (USART_FIFOTRIG_RXLVL_GET(base) != handle->rxWatermark))
+        {
+            base->FIFOTRIG =
+                (base->FIFOTRIG & (~USART_FIFOTRIG_RXLVL_MASK)) | USART_FIFOTRIG_RXLVL(handle->rxWatermark);
+        }
+        /* decrease level if rx transfer is bellow */
+        if ((tmpsize != 0U) && (tmpsize < (USART_FIFOTRIG_RXLVL_GET(base) + 1U)))
+        {
+            base->FIFOTRIG = (base->FIFOTRIG & (~USART_FIFOTRIG_RXLVL_MASK)) | (USART_FIFOTRIG_RXLVL(tmpsize - 1U));
+        }
+    }
+}

+ 32 - 4
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/main.c → CMSIS/DAP/Firmware/Examples/MCU-LINK/main.c

@@ -17,11 +17,11 @@
  *
  * ----------------------------------------------------------------------
  *
- * $Date:        21. May 2021
+ * $Date:        15. September 2021
  * $Revision:    V2.0.0
  *
- * Project:      CMSIS-DAP Examples LPC-Link2
- * Title:        main.c CMSIS-DAP Main module for LPC-Link2
+ * Project:      CMSIS-DAP Examples MCU-LINK
+ * Title:        main.c CMSIS-DAP Main module for MCU-LINK
  *
  *---------------------------------------------------------------------------*/
 
@@ -31,13 +31,38 @@
 #include "DAP_config.h"
 #include "DAP.h"
 
+#include "clock_config.h"
+#include "pin_mux.h"
+#include "fsl_dma.h"
+
+// Callbacks for USART0 Driver
+uint32_t USART0_GetFreq    (void) { return CLOCK_GetFlexCommClkFreq(0); }
+void     USART0_InitPins   (void) { /* Done in BOARD_InitBootPins function */ }
+void     USART0_DeinitPins (void) { /* Not implemented */ }
+
+// Callbacks for USART3 Driver
+uint32_t USART3_GetFreq    (void) { return CLOCK_GetFlexCommClkFreq(3); }
+void     USART3_InitPins   (void) { /* Done in BOARD_InitBootPins function */ }
+void     USART3_DeinitPins (void) { /* Not implemented */ }
+
 // Application Main program
 __NO_RETURN void app_main (void *argument) {
   (void)argument;
 
+  BOARD_InitBootPins();
+  BOARD_InitBootClocks();
+
+  DMA_Init(DMA0);
+
   DAP_Setup();                          // DAP Setup 
 
   USBD_Initialize(0U);                  // USB Device Initialization
+  char *ser_num;
+  ser_num = GetSerialNum();
+  if (ser_num != NULL) {
+    USBD_SetSerialNumber(0U, ser_num);  // Update Serial Number
+  }
+
   USBD_Connect(0U);                     // USB Device Connect
 
   while (!USBD_Configured(0U));         // Wait for USB Device to configure
@@ -49,7 +74,10 @@ __NO_RETURN void app_main (void *argument) {
   LED_CONNECTED_OUT(0U);                // Turn off Debugger Connected LED
 
   // Create DAP Thread
-  DAP_ThreadId = osThreadNew(DAP_Thread, NULL, NULL);
+  DAP_ThreadId = osThreadNew(DAP_Thread, NULL, &DAP_ThreadAttr);
+
+  // Create SWO Thread
+  SWO_ThreadId = osThreadNew(SWO_Thread, NULL, &SWO_ThreadAttr);
 
   osDelay(osWaitForever);
   for (;;) {}

+ 13 - 3
CMSIS/DAP/Firmware/Examples/LPC-Link2/V1/osObjects.h → CMSIS/DAP/Firmware/Examples/MCU-LINK/osObjects.h

@@ -17,11 +17,11 @@
  *
  * ----------------------------------------------------------------------
  *
- * $Date:        1. December 2017
+ * $Date:        15. September 2021
  * $Revision:    V2.0.0
  *
- * Project:      CMSIS-DAP Examples LPC-Link2
- * Title:        osObjects.h CMSIS-DAP RTOS2 Objects for LPC-Link2
+ * Project:      CMSIS-DAP Examples MCU-LINK
+ * Title:        osObjects.h CMSIS-DAP RTOS2 Objects for MCU-LINK
  *
  *---------------------------------------------------------------------------*/
 
@@ -32,12 +32,22 @@
 
 #ifdef osObjectsExternal
 extern osThreadId_t DAP_ThreadId;
+extern osThreadId_t SWO_ThreadId;
 #else
+static const osThreadAttr_t DAP_ThreadAttr = {
+  .priority = osPriorityNormal
+};
+static const osThreadAttr_t SWO_ThreadAttr = {
+  .priority = osPriorityAboveNormal
+};
 extern osThreadId_t DAP_ThreadId;
        osThreadId_t DAP_ThreadId;
+extern osThreadId_t SWO_ThreadId;
+       osThreadId_t SWO_ThreadId;
 #endif
 
 extern void DAP_Thread (void *argument);
+extern void SWO_Thread (void *argument);
 
 extern void app_main (void *argument);
 

+ 86 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/ser_num.c

@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2021 ARM Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ----------------------------------------------------------------------
+ *
+ * $Date:        15. September 2021
+ * $Revision:    V1.0.0
+ *
+ * Project:      CMSIS-DAP Examples MCU-LINK
+ * Title:        ser_num.c CMSIS-DAP Serial Number module for MCU-LINK
+ *
+ *---------------------------------------------------------------------------*/
+
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "ser_num.h"
+#include "fsl_iap_ffr.h"
+
+// Serial Number
+#define SER_NUM_PREFIX  "00A1"
+static char SerialNum[32];
+
+/**
+  \brief        Calculate 32-bit CRC (polynom: 0x04C11DB7, init value: 0xFFFFFFFF)
+  \param[in]    data  pointer to data
+  \param[in]    len   data length (in bytes)
+  \return             CRC32 value
+*/
+static uint32_t crc32 (const uint8_t *data, uint32_t len) {
+  uint32_t crc32;
+  uint32_t n;
+
+  crc32 = 0xFFFFFFFFU;
+  while (len != 0U) {
+    crc32 ^= ((uint32_t)*data++) << 24U;
+    for (n = 8U; n; n--) {
+      if (crc32 & 0x80000000U) {
+        crc32 <<= 1U;
+        crc32  ^= 0x04C11DB7U;
+      } else {
+        crc32 <<= 1U;
+      }
+    }
+    len--;
+  }
+  return (crc32);
+}
+
+/**
+  \brief        Get serial number string. First characters are fixed. Last eight
+                characters are Unique (calculated from devices's unique ID)
+  \return       Serial number string or NULL (callculation of unique ID failed)
+*/
+char *GetSerialNum (void) {
+  flash_config_t flash_config;
+  uint8_t  uuid_buf[16];
+  uint32_t uid;
+  char *str;
+
+  str = NULL;
+  if (FFR_Init(&flash_config) == kStatus_Success) {
+    if (FFR_GetUUID(&flash_config, uuid_buf) == kStatus_Success) {
+      uid = crc32(uuid_buf, 16U);
+      snprintf(SerialNum, sizeof(SerialNum), "%s%08X", SER_NUM_PREFIX, uid);
+      str = SerialNum;
+    }
+  }
+
+  return (str);
+}

+ 33 - 0
CMSIS/DAP/Firmware/Examples/MCU-LINK/ser_num.h

@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2021 ARM Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ----------------------------------------------------------------------
+ *
+ * $Date:        15. September 2021
+ * $Revision:    V1.0.0
+ *
+ * Project:      CMSIS-DAP Examples MCU-LINK
+ * Title:        ser_num.h CMSIS-DAP Serial Number module for MCU-LINK
+ *
+ *---------------------------------------------------------------------------*/
+
+#ifndef __SER_NUM_H__
+#define __SER_NUM_H__
+
+char *GetSerialNum (void);
+
+#endif /* __SER_NUM_H__ */

+ 4 - 4
CMSIS/DAP/Firmware/Include/DAP.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2021 ARM Limited. All rights reserved.
+ * Copyright (c) 2013-2022 ARM Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -17,8 +17,8 @@
  *
  * ----------------------------------------------------------------------
  *
- * $Date:        26. May 2021
- * $Revision:    V2.1.0
+ * $Date:        26. April 2022
+ * $Revision:    V2.1.1
  *
  * Project:      CMSIS-DAP Include
  * Title:        DAP.h Definitions
@@ -33,7 +33,7 @@
 #ifdef  DAP_FW_V1
 #define DAP_FW_VER                      "1.3.0"
 #else
-#define DAP_FW_VER                      "2.1.0"
+#define DAP_FW_VER                      "2.1.1"
 #endif
 
 // DAP Command IDs

+ 48 - 43
CMSIS/DAP/Firmware/Source/DAP.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2021 ARM Limited. All rights reserved.
+ * Copyright (c) 2013-2022 ARM Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -17,8 +17,8 @@
  *
  * ----------------------------------------------------------------------
  *
- * $Date:        16. June 2021
- * $Revision:    V2.1.0
+ * $Date:        26. April 2022
+ * $Revision:    V2.1.1
  *
  * Project:      CMSIS-DAP Source
  * Title:        DAP.c CMSIS-DAP Commands
@@ -45,13 +45,9 @@
 
 
 // Clock Macros
-
 #define MAX_SWJ_CLOCK(delay_cycles) \
   ((CPU_CLOCK/2U) / (IO_PORT_WRITE_CYCLES + delay_cycles))
 
-#define CLOCK_DELAY(swj_clock) \
- (((CPU_CLOCK/2U) / swj_clock) - IO_PORT_WRITE_CYCLES)
-
 
          DAP_Data_t DAP_Data;           // DAP Data
 volatile uint8_t    DAP_TransferAbort;  // Transfer Abort Flag
@@ -60,6 +56,29 @@ volatile uint8_t    DAP_TransferAbort;  // Transfer Abort Flag
 static const char DAP_FW_Ver [] = DAP_FW_VER;
 
 
+// Common clock delay calculation routine
+//   clock:    requested SWJ frequency in Hertz
+static void Set_Clock_Delay(uint32_t clock) {
+  uint32_t delay;
+
+  if (clock >= MAX_SWJ_CLOCK(DELAY_FAST_CYCLES)) {
+    DAP_Data.fast_clock  = 1U;
+    DAP_Data.clock_delay = 1U;
+  } else {
+    DAP_Data.fast_clock  = 0U;
+
+    delay = ((CPU_CLOCK/2U) + (clock - 1U)) / clock;
+    if (delay > IO_PORT_WRITE_CYCLES) {
+      delay -= IO_PORT_WRITE_CYCLES;
+      delay  = (delay + (DELAY_SLOW_CYCLES - 1U)) / DELAY_SLOW_CYCLES;
+    } else {
+      delay  = 1U;
+    }
+
+    DAP_Data.clock_delay = delay;
+  }
+}
+
 
 // Get DAP Information
 //   id:      info identifier
@@ -111,7 +130,7 @@ static uint8_t DAP_Info(uint8_t id, uint8_t *info) {
       length = 2U;
       break;
     case DAP_ID_TIMESTAMP_CLOCK:
-#if (TIMESTAMP_CLOCK != 0U) 
+#if (TIMESTAMP_CLOCK != 0U)
       info[0] = (uint8_t)(TIMESTAMP_CLOCK >>  0);
       info[1] = (uint8_t)(TIMESTAMP_CLOCK >>  8);
       info[2] = (uint8_t)(TIMESTAMP_CLOCK >> 16);
@@ -227,7 +246,7 @@ static uint32_t DAP_Connect(const uint8_t *request, uint8_t *response) {
   } else {
     port = *request;
   }
-  
+
   switch (port) {
 #if (DAP_SWD != 0)
     case DAP_PORT_SWD:
@@ -286,9 +305,9 @@ static uint32_t DAP_SWJ_Pins(const uint8_t *request, uint8_t *response) {
   uint32_t select;
   uint32_t wait;
   uint32_t timestamp;
-  
+
   value  = (uint32_t) *(request+0);
-  select = (uint32_t) *(request+1); 
+  select = (uint32_t) *(request+1);
   wait   = (uint32_t)(*(request+2) <<  0) |
            (uint32_t)(*(request+3) <<  8) |
            (uint32_t)(*(request+4) << 16) |
@@ -320,7 +339,7 @@ static uint32_t DAP_SWJ_Pins(const uint8_t *request, uint8_t *response) {
 
   if (wait != 0U) {
 #if (TIMESTAMP_CLOCK != 0U)
-    if (wait > 3000000U) { 
+    if (wait > 3000000U) {
       wait = 3000000U;
     }
 #if (TIMESTAMP_CLOCK >= 1000000U)
@@ -398,22 +417,7 @@ static uint32_t DAP_SWJ_Clock(const uint8_t *request, uint8_t *response) {
     return ((4U << 16) | 1U);
   }
 
-  if (clock >= MAX_SWJ_CLOCK(DELAY_FAST_CYCLES)) {
-    DAP_Data.fast_clock  = 1U;
-    DAP_Data.clock_delay = 1U;
-  } else {
-    DAP_Data.fast_clock  = 0U;
-
-    delay = ((CPU_CLOCK/2U) + (clock - 1U)) / clock;
-    if (delay > IO_PORT_WRITE_CYCLES) {
-      delay -= IO_PORT_WRITE_CYCLES;
-      delay  = (delay + (DELAY_SLOW_CYCLES - 1U)) / DELAY_SLOW_CYCLES;
-    } else {
-      delay  = 1U;
-    }
-
-    DAP_Data.clock_delay = delay;
-  }
+  Set_Clock_Delay(clock);
 
   *response = DAP_OK;
 #else
@@ -433,7 +437,7 @@ static uint32_t DAP_SWJ_Sequence(const uint8_t *request, uint8_t *response) {
   uint32_t count;
 
   count = *request++;
-  if (count == 0U) { 
+  if (count == 0U) {
     count = 256U;
   }
 
@@ -462,7 +466,7 @@ static uint32_t DAP_SWD_Configure(const uint8_t *request, uint8_t *response) {
   value = *request;
   DAP_Data.swd_conf.turnaround = (value & 0x03U) + 1U;
   DAP_Data.swd_conf.data_phase = (value & 0x04U) ? 1U : 0U;
-  
+
   *response = DAP_OK;
 #else
   *response = DAP_ERROR;
@@ -496,7 +500,7 @@ static uint32_t DAP_SWD_Sequence(const uint8_t *request, uint8_t *response) {
   while (sequence_count--) {
     sequence_info = *request++;
     count = sequence_info & SWD_SEQUENCE_CLK;
-    if (count == 0U) { 
+    if (count == 0U) {
       count = 64U;
     }
     count = (count + 7U) / 8U;
@@ -646,7 +650,7 @@ static uint32_t DAP_JTAG_IDCode(const uint8_t *request, uint8_t *response) {
 id_error:
 #endif
   *response = DAP_ERROR;
-  return ((1U << 16) | 1U); 
+  return ((1U << 16) | 1U);
 }
 
 
@@ -660,11 +664,11 @@ static uint32_t DAP_TransferConfigure(const uint8_t *request, uint8_t *response)
   DAP_Data.transfer.idle_cycles =            *(request+0);
   DAP_Data.transfer.retry_count = (uint16_t) *(request+1) |
                                   (uint16_t)(*(request+2) << 8);
-  DAP_Data.transfer.match_retry = (uint16_t) *(request+3) | 
+  DAP_Data.transfer.match_retry = (uint16_t) *(request+3) |
                                   (uint16_t)(*(request+4) << 8);
 
   *response = DAP_OK;
-  return ((5U << 16) | 1U); 
+  return ((5U << 16) | 1U);
 }
 
 
@@ -727,7 +731,7 @@ static uint32_t DAP_SWD_Transfer(const uint8_t *request, uint8_t *response) {
           } while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
           post_read = 0U;
         }
-        if (response_value != DAP_TRANSFER_OK) { 
+        if (response_value != DAP_TRANSFER_OK) {
           break;
         }
         // Store previous AP data
@@ -1402,14 +1406,14 @@ static uint32_t DAP_JTAG_TransferBlock(const uint8_t *request, uint8_t *response
 
   // Device index (JTAP TAP)
   DAP_Data.jtag_dev.index = *request++;
-  if (DAP_Data.jtag_dev.index >= DAP_Data.jtag_dev.count) { 
+  if (DAP_Data.jtag_dev.index >= DAP_Data.jtag_dev.count) {
     goto end;
   }
 
-  request_count = (uint32_t)(*(request+0) << 0) | 
+  request_count = (uint32_t)(*(request+0) << 0) |
                   (uint32_t)(*(request+1) << 8);
   request += 2;
-  if (request_count == 0U) { 
+  if (request_count == 0U) {
     goto end;
   }
 
@@ -1565,7 +1569,7 @@ static uint32_t DAP_JTAG_WriteAbort(const uint8_t *request, uint8_t *response) {
   DAP_Data.jtag_dev.index = *request;
   if (DAP_Data.jtag_dev.index >= DAP_Data.jtag_dev.count) {
     *response = DAP_ERROR;
-    return (1U); 
+    return (1U);
   }
 
   // Select JTAG chain
@@ -1581,7 +1585,7 @@ static uint32_t DAP_JTAG_WriteAbort(const uint8_t *request, uint8_t *response) {
   JTAG_WriteAbort(data);
 
   *response = DAP_OK;
-  return (1U); 
+  return (1U);
 }
 #endif
 
@@ -1775,7 +1779,7 @@ uint32_t DAP_ExecuteCommand(const uint8_t *request, uint8_t *response) {
       n = DAP_ProcessCommand(request, response);
       num += n;
       request  += (uint16_t)(n >> 16);
-      response += (uint16_t) n;  
+      response += (uint16_t) n;
     }
     return (num);
   }
@@ -1789,8 +1793,6 @@ void DAP_Setup(void) {
 
   // Default settings
   DAP_Data.debug_port  = 0U;
-  DAP_Data.fast_clock  = 0U;
-  DAP_Data.clock_delay = CLOCK_DELAY(DAP_DEFAULT_SWJ_CLOCK);
   DAP_Data.transfer.idle_cycles = 0U;
   DAP_Data.transfer.retry_count = 100U;
   DAP_Data.transfer.match_retry = 0U;
@@ -1803,5 +1805,8 @@ void DAP_Setup(void) {
   DAP_Data.jtag_dev.count = 0U;
 #endif
 
+  // Sets DAP_Data.fast_clock and DAP_Data.clock_delay.
+  Set_Clock_Delay(DAP_DEFAULT_SWJ_CLOCK);
+
   DAP_SETUP();  // Device specific setup
 }

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio