/*
 * Copyright (c) 2021-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.
 */

/******************************************************************************************************************
 * Model: keyword_spotting_cnn_small_int8
 * Source: https://github.com/ARM-software/ML-zoo/tree/master/models/keyword_spotting/cnn_small/tflite_int8
 * Hexdump: python3 -c 'import numpy;i=numpy.load("input.npy");i.tofile("input.bin");' && xxd -i input.bin > input.h
 ******************************************************************************************************************/

unsigned char inputData[] __attribute__((aligned(16), section("input_data_sec"))) = {
    0xa8, 0xba, 0x62, 0x12, 0xcd, 0xa3, 0xcb, 0x47, 0x84, 0xe6, 0xbc, 0x3e, 0x60, 0x36, 0xbc, 0xae, 0x27, 0x19, 0x20,
    0x1b, 0x7e, 0xe0, 0x80, 0x89, 0xce, 0x3e, 0xc0, 0xd2, 0x1d, 0x47, 0x6b, 0x3d, 0xb1, 0x8f, 0x15, 0x6b, 0xc9, 0xd5,
    0xf8, 0x96, 0xf4, 0x2a, 0xc9, 0x60, 0x4f, 0x1d, 0x1b, 0x90, 0xe9, 0xbb, 0x0c, 0xbc, 0x52, 0xca, 0x76, 0x6c, 0x89,
    0x5d, 0xa1, 0xd8, 0x46, 0x21, 0x29, 0x98, 0x36, 0x11, 0x67, 0x4d, 0x47, 0xa5, 0x98, 0x51, 0xd1, 0xe6, 0xa6, 0xcf,
    0x19, 0xdd, 0x84, 0xdb, 0x56, 0x62, 0x7d, 0x54, 0xac, 0xf7, 0xfb, 0xa5, 0xaa, 0x80, 0x93, 0x92, 0x91, 0x01, 0xcc,
    0xae, 0xda, 0xde, 0x75, 0x73, 0xfe, 0x39, 0x7e, 0xa7, 0x5f, 0xe9, 0xa2, 0x73, 0x54, 0x50, 0x2c, 0xa9, 0xb2, 0xf4,
    0xcf, 0x0b, 0xa8, 0xab, 0x07, 0xec, 0xdc, 0x67, 0xc5, 0x0c, 0x0c, 0x48, 0x40, 0x16, 0x22, 0x6f, 0x1e, 0x7e, 0x22,
    0xa8, 0x3e, 0x6e, 0xbc, 0x97, 0xb4, 0x0c, 0x97, 0xe0, 0x92, 0x80, 0x3f, 0x88, 0x9f, 0x73, 0x14, 0x0b, 0x04, 0x58,
    0x07, 0xb1, 0x65, 0x9d, 0xa1, 0x12, 0x94, 0xd5, 0xdc, 0x14, 0x90, 0xc4, 0xd5, 0xbb, 0x10, 0xfd, 0xd5, 0x8f, 0x53,
    0x73, 0x43, 0x39, 0x6f, 0xc4, 0xa1, 0x06, 0xc1, 0xf0, 0x1d, 0xca, 0x8a, 0x13, 0x19, 0xc6, 0x8f, 0x70, 0xec, 0x0d,
    0xbc, 0x2a, 0x7a, 0xd5, 0xba, 0x24, 0xdd, 0xd4, 0xfe, 0x92, 0xad, 0x71, 0x68, 0x58, 0x3e, 0x7d, 0xd0, 0x2c, 0xec,
    0x6d, 0x85, 0xb5, 0x90, 0x78, 0x2b, 0x14, 0x20, 0x77, 0x8b, 0xfd, 0x0b, 0x05, 0x8a, 0xe8, 0x5f, 0x9c, 0xbe, 0x0c,
    0xb2, 0x9f, 0x89, 0x42, 0x6f, 0xac, 0xeb, 0x2b, 0xd8, 0xb3, 0x88, 0xce, 0x36, 0xc5, 0x23, 0x48, 0xfd, 0xda, 0xc0,
    0x54, 0xfa, 0xca, 0x7b, 0xc3, 0xda, 0x21, 0x49, 0x9c, 0x6f, 0xe3, 0x24, 0x35, 0x76, 0x5e, 0xf8, 0x93, 0xad, 0x6c,
    0xc6, 0x81, 0x30, 0x36, 0xc8, 0x28, 0xb4, 0xb3, 0xce, 0x91, 0x02, 0x27, 0x66, 0xfd, 0x44, 0x96, 0x3f, 0x08, 0xe2,
    0xb4, 0xeb, 0xb3, 0x18, 0x7e, 0x56, 0x9d, 0xe8, 0xb6, 0x4c, 0x46, 0x27, 0x4a, 0x34, 0xaf, 0xbc, 0x48, 0xb0, 0xd4,
    0x3c, 0xf0, 0x2c, 0xd9, 0x5f, 0x44, 0x9d, 0x72, 0xee, 0x68, 0x94, 0x9c, 0xd9, 0x2c, 0x51, 0x29, 0x90, 0xcd, 0x67,
    0xc6, 0x7e, 0xb0, 0x9a, 0x89, 0x8f, 0x5d, 0xd8, 0xc2, 0xa0, 0x50, 0x8a, 0xd1, 0xc6, 0xbe, 0xa7, 0xdb, 0xec, 0x25,
    0x75, 0xa1, 0x8a, 0xda, 0x5a, 0x02, 0x41, 0x6e, 0xb8, 0xed, 0xa6, 0x22, 0xb7, 0xa7, 0xb4, 0x4e, 0x54, 0x74, 0xae,
    0x1b, 0x97, 0x80, 0xdc, 0xa3, 0x05, 0x1c, 0xd2, 0x07, 0x0a, 0x1d, 0x44, 0xbc, 0xe7, 0x55, 0xef, 0xf0, 0xb9, 0xbb,
    0x91, 0xc9, 0xbd, 0x4e, 0x8f, 0x05, 0xa4, 0xfd, 0x8b, 0x4e, 0x6c, 0x8c, 0xac, 0x9f, 0xb9, 0xfc, 0x88, 0x44, 0x87,
    0x3b, 0xbd, 0xc9, 0x85, 0x1a, 0xc9, 0x69, 0x7d, 0x62, 0x13, 0xa1, 0xfe, 0xec, 0x03, 0x64, 0x6a, 0xc1, 0x90, 0xec,
    0x98, 0xbc, 0x57, 0xb4, 0x26, 0x2a, 0x3e, 0x8e, 0x85, 0x26, 0xa7, 0x50, 0x5e, 0xa2, 0x12, 0x71, 0x9d, 0x5f, 0xe5,
    0x8f, 0x18, 0x86, 0x4f, 0x08, 0x49, 0xca, 0xe9, 0xbe, 0x49, 0x7a, 0x4d, 0x1e, 0xe7, 0x10, 0x55, 0x47, 0x85, 0x26,
    0xed, 0xbd, 0x53, 0x75, 0x13, 0xac, 0x0c, 0x99, 0xa5, 0x66, 0x7b, 0xe4, 0xe1, 0x18, 0x22, 0xb7, 0x37, 0x26, 0xbe,
    0xea, 0xc7, 0x44, 0xcc, 0xce, 0x0e, 0x50, 0x66, 0x48, 0x6b, 0x8e, 0x2e, 0x65, 0x81, 0xc6};