[
  {
    "path": ".gitignore",
    "content": "# macOS\n.DS_Store\n\n#iOS\nxcshareddata/\niOS/consumer/build.vars\n\n# xcode\nxcuserdata\n*.xcuserstate\nproject.xcworkspace\n\n# Android\nAndroid/wrapper/.cxx/\n.gradle/\n.idea/\n*.iml\n*google-services.json\n\nbuild/"
  },
  {
    "path": "Android/consumer/.gitignore",
    "content": "*.iml\n.gradle\n/local.properties\n/.idea/workspace.xml\n/.idea/libraries\n.DS_Store\n/build\n/captures\n.externalNativeBuild\n.idea/\n"
  },
  {
    "path": "Android/consumer/app/.gitignore",
    "content": "/build\n"
  },
  {
    "path": "Android/consumer/app/build.gradle",
    "content": "apply plugin: 'com.android.application'\n//apply plugin: 'com.google.gms.google-services'\n\nandroid {\n    compileSdkVersion 28\n    buildToolsVersion '28.0.3'\n\n    defaultConfig {\n        applicationId \"com.cueaudio.engine_consumer\"\n        minSdkVersion 19\n        targetSdkVersion 28\n        versionCode 1\n        versionName \"1.0\"\n    }\n\n    signingConfigs {\n        debug {\n            storeFile file(rootDir.path + '/config/debug.keystore')\n            storePassword \"android\"\n            keyAlias \"androiddebugkey\"\n            keyPassword \"android\"\n        }\n    }\n\n    buildTypes {\n        release {\n            minifyEnabled true\n            //signingConfig signingConfigs.debug\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\n        }\n    }\n\n    lintOptions {\n        abortOnError false\n    }\n}\n\ndependencies {\n    implementation fileTree(include: ['*.jar'], dir: 'libs')\n    implementation 'androidx.appcompat:appcompat:1.0.0'\n    implementation 'com.google.android.material:material:1.0.0'\n    implementation 'androidx.core:core:1.0.0'\n    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'\n    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'\n\n    implementation (name: 'engine', ext: 'aar')\n    //implementation (name: 'engine', ext: 'aar')\n\n    // Import the Firebase BoM\n    implementation platform('com.google.firebase:firebase-bom:26.3.0')\n    // Add the dependency for the Firebase SDK for Google Analytics\n    // When using the BoM, don't specify versions in Firebase dependencies\n    implementation 'com.google.firebase:firebase-analytics'\n}\n"
  },
  {
    "path": "Android/consumer/app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile\n"
  },
  {
    "path": "Android/consumer/app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    package=\"com.cueaudio.engine_consumer\">\n\n    <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />\n    <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />\n    <uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" />\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />\n\n    <application\n        android:allowBackup=\"true\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:roundIcon=\"@mipmap/ic_launcher_round\"\n        android:supportsRtl=\"true\"\n        android:theme=\"@style/Theme.AppCompat.Light\"\n        tools:ignore=\"GoogleAppIndexingWarning\">\n\n        <activity\n            android:name=\".MainActivity\"\n            android:launchMode=\"singleTop\"\n            android:configChanges=\"orientation\"\n            android:screenOrientation=\"portrait\">\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n\n    </application>\n\n</manifest>\n"
  },
  {
    "path": "Android/consumer/app/src/main/java/com/cueaudio/engine_consumer/MainActivity.java",
    "content": "package com.cueaudio.engine_consumer;\n\nimport android.app.Activity;\nimport android.app.NotificationChannel;\nimport android.app.NotificationManager;\nimport android.app.PendingIntent;\nimport android.content.Context;\nimport android.content.Intent;\nimport android.content.pm.PackageManager;\nimport android.graphics.drawable.Drawable;\nimport android.os.Build;\nimport android.os.Bundle;\nimport android.provider.Settings;\nimport androidx.annotation.NonNull;\nimport androidx.annotation.Nullable;\nimport com.google.android.material.textfield.TextInputEditText;\nimport com.google.android.material.textfield.TextInputLayout;\nimport androidx.core.app.ActivityCompat;\nimport androidx.core.app.NotificationCompat;\nimport androidx.core.graphics.drawable.DrawableCompat;\nimport androidx.appcompat.app.AppCompatActivity;\nimport android.text.Editable;\nimport android.text.InputType;\nimport android.text.Selection;\nimport android.text.TextWatcher;\nimport android.text.method.DigitsKeyListener;\nimport android.text.method.ScrollingMovementMethod;\nimport android.text.method.TextKeyListener;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.MenuItem;\nimport android.view.View;\nimport android.view.inputmethod.InputMethodManager;\nimport android.widget.AdapterView;\nimport android.widget.ArrayAdapter;\nimport android.widget.Spinner;\nimport android.widget.Switch;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\nimport com.cueaudio.engine.CUEEngine;\nimport com.cueaudio.engine.CUEReceiverCallbackInterface;\nimport com.cueaudio.engine.CUETrigger;\nimport com.cueaudio.engine.CUEEngineError;\n\nimport java.util.regex.Pattern;\n\npublic class MainActivity extends AppCompatActivity {\n    private static final String TAG = \"AndroidConsumer\";\n\n    private static final int REQUEST_RECORD_AUDIO = 13;\n    private static final String API_KEY = \"H7v7NMMNh6im735w331iLHtqnduxGCTL\";\n    private static final int NOTIFICATION_ID = 1;\n\n    private TextView outputView;\n    private View clearOutput;\n    private Switch outputMode;\n    private View sendButton;\n    private Spinner spinner;\n    private TextInputLayout messageLayout;\n    private TextInputEditText messageInput;\n\n    private boolean isShown = false;\n\n    /**\n     * Used to validate the input.\n     */\n    private Pattern inputMatcher = null;\n    private String[] hints;\n    private String[] regex;\n    private String[] errors;\n\n    private boolean restartListening = false;\n\n    private int getModeByPosition(int position) {\n        int realMode;\n        switch( position ) {\n            case 0:\n            case 1:\n                realMode = CUETrigger.MODE_TRIGGER;\n                break;\n            case 2:\n            case 3:\n                realMode = CUETrigger.MODE_MULTI_TRIGGER;\n                break;\n            case 4:\n                realMode = CUETrigger.MODE_LL;\n                break;\n            default:\n                realMode = CUETrigger.MODE_DATA;\n                break;\n        }\n\n        return realMode;\n    }\n\n    private boolean getTriggerAsNumberByPosition(int position) {\n        if( position == 1 || position == 3 )\n            return true;\n        else\n            return false;\n    }\n\n    @Override\n    protected void onCreate(@Nullable Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n        checkPermission();\n\n        messageLayout = findViewById(R.id.message_layout);\n        messageInput = findViewById(R.id.message);\n        sendButton = findViewById(R.id.send);\n        outputView = findViewById(R.id.outputView);\n        outputMode = findViewById(R.id.output_mode);\n        clearOutput = findViewById(R.id.clear_output);\n\n        hints = getResources().getStringArray(R.array.message_hints);\n        regex = getResources().getStringArray(R.array.message_regex);\n        errors = getResources().getStringArray(R.array.message_errors);\n        spinner = findViewById(R.id.message_mode);\n        final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(\n                this,\n                R.array.message_modes,\n                android.R.layout.simple_spinner_item\n        );\n        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\n        spinner.setAdapter(adapter);\n        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {\n            @Override\n            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {\n                selectMode(position);\n            }\n\n            @Override\n            public void onNothingSelected(AdapterView<?> parent) {\n            }\n        });\n\n        messageInput.addTextChangedListener(new TextWatcher() {\n            @Override\n            public void beforeTextChanged(CharSequence s, int start, int count, int after) {\n            }\n\n            @Override\n            public void onTextChanged(CharSequence s, int start, int before, int count) {\n            }\n\n            @Override\n            public void afterTextChanged(Editable s) {\n                if (s != null && s.toString().length() != 0 ) {\n                    validateInput(s.toString());\n                }\n            }\n        });\n\n        outputView.setMovementMethod(new ScrollingMovementMethod());\n        sendButton.setEnabled(false);\n        sendButton.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View view) {\n                //noinspection ConstantConditions\n                final String input = messageInput.getText().toString();\n                final int position = spinner.getSelectedItemPosition();\n\n                int mode = getModeByPosition( position );\n                boolean triggerAsNumber = getTriggerAsNumberByPosition( position );\n\n                Log.v(TAG, String.format(\"triggerAsNumber %b\", triggerAsNumber));\n                queueInput(input, mode, triggerAsNumber);\n            }\n        });\n\n        clearOutput.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                outputView.setText(null);\n                clearOutput.setVisibility(View.GONE);\n            }\n        });\n    }\n\n    @Override\n    protected void onStart() {\n        super.onStart();\n        isShown = true;\n        if (restartListening) {\n            CUEEngine.getInstance().startListening();\n        }\n    }\n\n    @Override\n    protected void onStop() {\n        restartListening = CUEEngine.getInstance().isListening();\n        CUEEngine.getInstance().stopListening();\n        isShown = false;\n        super.onStop();\n    }\n\n    private void selectMode(int position) {\n        refreshKeyboard(messageInput);\n\n        messageInput.setHint(hints[position]);\n        messageLayout.setHint(null);\n        inputMatcher = Pattern.compile(regex[position]);\n\n        int mode = getModeByPosition(position);\n        switch (mode) {\n            case CUETrigger.MODE_TRIGGER:\n            case CUETrigger.MODE_MULTI_TRIGGER:\n            case CUETrigger.MODE_LL:\n                messageInput.setInputType(InputType.TYPE_CLASS_NUMBER);\n                messageInput.setKeyListener(DigitsKeyListener.getInstance(\"0123456789.\"));\n                break;\n            case CUETrigger.MODE_DATA:\n                messageInput.setInputType(InputType.TYPE_CLASS_TEXT);\n                messageInput.setKeyListener(TextKeyListener.getInstance());\n                break;\n        }\n\n        //noinspection ConstantConditions\n        validateInput(messageInput.getText().toString());\n    }\n\n    private void validateInput(@NonNull String input) {\n        final boolean matches = inputMatcher.matcher(input).matches();\n        sendButton.setEnabled(matches);\n        if (!matches) {\n            final int position = spinner.getSelectedItemPosition();\n            // HACK: to prevent error message to be cut https://stackoverflow.com/a/55468225/322955\n            messageLayout.setError(null);\n            messageLayout.setError(errors[position]);\n        } else {\n            messageLayout.setError(null);\n        }\n    }\n\n    private void queueInput(@NonNull String input, int mode, boolean triggerAsNumber) {\n        int result;\n\n        switch (mode) {\n            case CUETrigger.MODE_TRIGGER:\n                if(triggerAsNumber) {\n                    long number = Long.parseLong(input);\n                    result = CUEEngine.getInstance().queueTriggerAsNumber(number);\n                    if( result == CUEEngineError.TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED ) {\n                        messageLayout.setError(\n                            \"Triggers as number can not exceed 461 for a CUEEngine g1 or 98611127 for a CUEEngine g2\" );\n                    } else if ( result < 0 ){\n                        messageLayout.setError(\n                                \"Triggers as number sending: unknown error\" );\n                    }\n                } else {\n                    result = CUEEngine.getInstance().queueTrigger(input);\n                    if( result == CUEEngineError.NUMBER_OF_SYMBOLS_MISMATCH\n                        || result == CUEEngineError.INDEX_VALUE_EXCEEDED ) {\n                        messageLayout.setError(\n                                \"Triggers must be of the format [0-461] for a CUEEngine generation 1 \" +\n                                \"or [0-461].[0-461].[0-461] for a CUEEngine generation 2\" );\n                    } else if ( result < 0 ){\n                        messageLayout.setError(\n                                \"Triggers as number sending: unknown error\" );\n                    }\n                }\n                break;\n\n            case CUETrigger.MODE_MULTI_TRIGGER:\n                if(triggerAsNumber) {\n                    long number = Long.parseLong(input);\n                    result = CUEEngine.getInstance().queueMultiTriggerAsNumber(number);\n                    if( result == CUEEngineError.G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED ) {\n                        messageLayout.setError(\"Queue multi-trigger as number: unsupported for CUEEngine generation 1\");\n                    } else if( result == CUEEngineError.MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED ) {\n                        messageLayout.setError(\n                                \"Queue multi-trigger as number can not exceed 9724154565432383\" );\n                    } else if ( result < 0 ){\n                        messageLayout.setError(\n                                \"Queue multi-trigger as number: unknown error\" );\n                    }\n                } else {\n                    result = CUEEngine.getInstance().queueMultiTrigger(input);\n                    if( result == CUEEngineError.G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED ) {\n                        messageLayout.setError(\"Queue multi-trigger: unsupported for CUEEngine generation 1\");\n                    } else if ( result < 0 ){\n                        messageLayout.setError(\n                                \"Queue multi-trigger: unknown error\" );\n                    }\n                }\n                break;\n\n            case CUETrigger.MODE_LL:\n                result = CUEEngine.getInstance().queueLL(input);\n                if ( result == CUEEngineError.G1_QUEUE_LL_UNSUPPORTED ) {\n                    messageLayout.setError(\n                            \"LL triggers sending is unsupported for engine generation 1\");\n                } else if ( result == CUEEngineError.G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET ) {\n                    messageLayout.setError(\n                            \"Can not queue ll: please set config mode to 'basic' or to 'll_only'\" );\n                } else if ( result == CUEEngineError.G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE ) {\n                    Toast.makeText(this,\n                            \"LL is already on in a config 'basic' mode, can not queue, please wait while it is off\",\n                            Toast.LENGTH_SHORT).show();\n                } else if( result < 0 ) {\n                    messageLayout.setError(\"Queue ll: unknown error\");\n                }\n                break;\n\n            case CUETrigger.MODE_DATA:\n                result = CUEEngine.getInstance().queueMessage(input);\n                if ( result == CUEEngineError.G1_QUEUE_MESSAGE_UNSUPPORTED ) {\n                    messageLayout.setError(\"Queue message or data: unsupported for CUEEngine generation 1\");\n                } else if ( result == CUEEngineError.G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED ) {\n                    messageLayout.setError(\"Text can't contain more then 512 bytes for G2\");\n                } else if( result < 0 ) {\n                    messageLayout.setError(\"Queue message: unknown error\");\n                }\n                break;\n        }\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        getMenuInflater().inflate(R.menu.main, menu);\n        return true;\n    }\n\n    @Override\n    public boolean onPrepareOptionsMenu(Menu menu) {\n        final boolean listening = CUEEngine.getInstance().isListening();\n\n        final Drawable startIcon = menu.findItem(R.id.menu_start).getIcon();\n        final Drawable stopIcon = menu.findItem(R.id.menu_stop).getIcon();\n        if (listening) {\n            DrawableCompat.setTint(startIcon, getResources().getColor(R.color.menu_active));\n            DrawableCompat.setTint(stopIcon, getResources().getColor(R.color.menu_inactive));\n        } else {\n            DrawableCompat.setTint(startIcon, getResources().getColor(R.color.menu_inactive));\n            DrawableCompat.setTint(stopIcon, getResources().getColor(R.color.menu_active));\n        }\n        return true;\n    }\n\n    @Override\n    public boolean onOptionsItemSelected(MenuItem item) {\n        final int id = item.getItemId();\n        switch (id) {\n            case R.id.menu_start:\n                enableListening(true);\n                return true;\n            case R.id.menu_stop:\n                enableListening(false);\n                return true;\n        }\n        return super.onOptionsItemSelected(item);\n    }\n\n    private void checkPermission() {\n        ActivityCompat.requestPermissions(\n                this,\n                new String[] { android.Manifest.permission.RECORD_AUDIO },\n                REQUEST_RECORD_AUDIO\n        );\n    }\n\n    @Override\n    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {\n        super.onRequestPermissionsResult(requestCode, permissions, grantResults);\n\n        //check if permission was granted, and confirm that permission was mic access\n        boolean permCondition = requestCode == REQUEST_RECORD_AUDIO &&\n                                grantResults.length == 1 &&\n                                grantResults[0] == PackageManager.PERMISSION_GRANTED;\n        // permission is not granted yet\n        if (!permCondition) {\n            checkPermission();\n            return;\n        }\n\n        CUEEngine.getInstance().setupWithAPIKey(this, API_KEY);\n        CUEEngine.getInstance().setDefaultGeneration(2);\n\n        CUEEngine.getInstance().setReceiverCallback(new OutputListener());\n        enableListening(true);\n\n        final String config = CUEEngine.getInstance().getConfig();\n        Log.v(TAG, config);\n\n        CUEEngine.getInstance().setTransmittingEnabled(true);\n    }\n\n    private void onTriggerHeard(CUETrigger model) {\n        if (!isShown) {\n            showNotification(model.getRawIndices());\n        }\n\n        if (outputMode.isChecked()) {\n            outputView.append(model.toString());\n        } else {\n            outputView.append(model.toShortString());\n        }\n        outputView.append(\"\\n\");\n        outputView.append(\"\\n\");\n        clearOutput.setVisibility(View.VISIBLE);\n\n        long triggerNum = model.getTriggerAsNumber();\n        Log.i(\"triggerAsNumber: \", Long.toString(triggerNum));\n\n\n        // scroll to end\n        // https://stackoverflow.com/a/43290961\n        final Editable editable = (Editable) outputView.getText();\n        Selection.setSelection(editable, editable.length());\n    }\n\n    private void showNotification(@NonNull String message) {\n        final NotificationManager notificationManager =\n                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\n        final String channelId = getString(R.string.notification_channel_id);\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n            final CharSequence name = getString(R.string.notification_channel_name);\n            NotificationChannel channel = new NotificationChannel(\n                    channelId,\n                    name,\n                    NotificationManager.IMPORTANCE_DEFAULT\n            );\n            //noinspection ConstantConditions\n            notificationManager.createNotificationChannel(channel);\n        }\n\n        final Intent intent = new Intent(this, MainActivity.class);\n        final PendingIntent pendingIntent = PendingIntent.getActivity(\n                this, 0, intent, 0\n        );\n\n        final NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId)\n                .setSmallIcon(R.drawable.ic_notification)\n                .setContentTitle(getText(R.string.notification_title))\n                .setContentText(message)\n                .setPriority(NotificationCompat.PRIORITY_DEFAULT)\n                .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)\n                .setContentIntent(pendingIntent)\n                .setVibrate(new long[] { 1000, 1000, 1000 })\n                .setAutoCancel(true);\n        //noinspection ConstantConditions\n        notificationManager.notify(NOTIFICATION_ID, builder.build());\n    }\n\n    private void enableListening(boolean enable) {\n        if (enable) {\n            CUEEngine.getInstance().startListening();\n        } else {\n            CUEEngine.getInstance().stopListening();\n        }\n        supportInvalidateOptionsMenu();\n    }\n\n    private static void refreshKeyboard(@NonNull View view) {\n        final InputMethodManager imm =\n                (InputMethodManager) view.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);\n        //noinspection ConstantConditions\n        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);\n        imm.showSoftInput(view, 0);\n    }\n\n    private class OutputListener implements CUEReceiverCallbackInterface {\n        @Override\n        public void run(@NonNull String json) {\n            final CUETrigger model = CUETrigger.parse(json);\n            runOnUiThread(new Runnable() {\n                @Override\n                public void run() {\n                    onTriggerHeard(model);\n                }\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_clear.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        android:width=\"24dp\"\n        android:height=\"24dp\"\n        android:viewportWidth=\"24.0\"\n        android:viewportHeight=\"24.0\">\n    <path\n        android:fillColor=\"#FF000000\"\n        android:pathData=\"M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z\"/>\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_launcher_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportHeight=\"108\"\n    android:viewportWidth=\"108\">\n    <path\n        android:fillColor=\"#26A69A\"\n        android:pathData=\"M0,0h108v108h-108z\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M9,0L9,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,0L19,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M29,0L29,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M39,0L39,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M49,0L49,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M59,0L59,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M69,0L69,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M79,0L79,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M89,0L89,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M99,0L99,108\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,9L108,9\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,19L108,19\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,29L108,29\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,39L108,39\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,49L108,49\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,59L108,59\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,69L108,69\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,79L108,79\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,89L108,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M0,99L108,99\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,29L89,29\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,39L89,39\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,49L89,49\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,59L89,59\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,69L89,69\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M19,79L89,79\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M29,19L29,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M39,19L39,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M49,19L49,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M59,19L59,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M69,19L69,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n    <path\n        android:fillColor=\"#00000000\"\n        android:pathData=\"M79,19L79,89\"\n        android:strokeColor=\"#33FFFFFF\"\n        android:strokeWidth=\"0.8\" />\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_notification.xml",
    "content": "<vector android:height=\"24dp\" android:viewportHeight=\"22\"\n    android:viewportWidth=\"22\" android:width=\"24dp\" xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <path android:fillColor=\"#FFF\" android:fillType=\"evenOdd\" android:pathData=\"M3.9,6.897a1.089,1.089 0,0 0,-0.038 0.038L0,11l3.862,4.065a1.061,1.061 0,0 0,1.54 0,1.175 1.175,0 0,0 0,-1.62L3.077,11 5.4,8.555a1.175,1.175 0,0 0,0 -1.62,1.059 1.059,0 0,0 -1.5,-0.038zM16.63,6.906a1.133,1.133 0,0 0,-0.021 1.6l2.32,2.386 -2.347,2.583a1.172,1.172 0,0 0,0.027 1.605,1.047 1.047,0 0,0 1.518,-0.017L22,10.892l-3.855,-3.965a1.068,1.068 0,0 0,-1.515 -0.021zM13.2,4.4v13.2a1.1,1.1 0,0 0,2.2 0V4.4a1.1,1.1 0,0 0,-2.2 0zM6.6,4.4v13.2a1.1,1.1 0,0 0,2.2 0V4.4a1.1,1.1 0,1 0,-2.2 0zM9.9,1.1v19.8a1.1,1.1 0,1 0,2.2 0V1.1a1.1,1.1 0,1 0,-2.2 0z\"/>\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_send.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        android:width=\"24dp\"\n        android:height=\"24dp\"\n        android:viewportWidth=\"24.0\"\n        android:viewportHeight=\"24.0\">\n    <path\n        android:fillColor=\"#FF000000\"\n        android:pathData=\"M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z\"/>\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_start.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        android:width=\"24dp\"\n        android:height=\"24dp\"\n        android:viewportWidth=\"24.0\"\n        android:viewportHeight=\"24.0\">\n    <path\n        android:fillColor=\"#FF000000\"\n        android:pathData=\"M8,5v14l11,-7z\"/>\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable/ic_stop.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        android:width=\"24dp\"\n        android:height=\"24dp\"\n        android:viewportWidth=\"24.0\"\n        android:viewportHeight=\"24.0\">\n    <path\n        android:fillColor=\"#FF000000\"\n        android:pathData=\"M6,6h12v12H6z\"/>\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:aapt=\"http://schemas.android.com/aapt\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportHeight=\"108\"\n    android:viewportWidth=\"108\">\n    <path\n        android:fillType=\"evenOdd\"\n        android:pathData=\"M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z\"\n        android:strokeColor=\"#00000000\"\n        android:strokeWidth=\"1\">\n        <aapt:attr name=\"android:fillColor\">\n            <gradient\n                android:endX=\"78.5885\"\n                android:endY=\"90.9159\"\n                android:startX=\"48.7653\"\n                android:startY=\"61.0927\"\n                android:type=\"linear\">\n                <item\n                    android:color=\"#44000000\"\n                    android:offset=\"0.0\" />\n                <item\n                    android:color=\"#00000000\"\n                    android:offset=\"1.0\" />\n            </gradient>\n        </aapt:attr>\n    </path>\n    <path\n        android:fillColor=\"#FFFFFF\"\n        android:fillType=\"nonZero\"\n        android:pathData=\"M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z\"\n        android:strokeColor=\"#00000000\"\n        android:strokeWidth=\"1\" />\n</vector>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:padding=\"16dp\"\n    android:orientation=\"vertical\"\n    tools:context=\".MainActivity\">\n\n    <LinearLayout\n        android:id=\"@+id/message_container\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        app:layout_constraintBottom_toTopOf=\"@+id/output_mode\"\n        android:orientation=\"horizontal\">\n\n        <Spinner\n            android:id=\"@+id/message_mode\"\n            android:layout_width=\"wrap_content\"\n            android:layout_marginTop=\"8dp\"\n            android:layout_height=\"wrap_content\"/>\n\n        <com.google.android.material.textfield.TextInputLayout\n            android:id=\"@+id/message_layout\"\n            android:layout_width=\"0dp\"\n            android:layout_height=\"wrap_content\"\n            android:layout_weight=\"1\"\n            android:layout_marginTop=\"-16dp\"\n            android:hint=\"@null\">\n\n            <com.google.android.material.textfield.TextInputEditText\n                android:id=\"@+id/message\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\"\n                android:hint=\"@string/message_hint_trigger\" />\n\n        </com.google.android.material.textfield.TextInputLayout>\n\n        <ImageButton\n            android:id=\"@+id/send\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:src=\"@drawable/ic_send\" />\n\n    </LinearLayout>\n\n    <Switch\n        android:id=\"@+id/output_mode\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:checked=\"false\"\n        android:layout_marginStart=\"8dp\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toBottomOf=\"@+id/message_container\"\n        app:layout_constraintBottom_toTopOf=\"@+id/outputView\"\n        android:text=\"@string/output_mode_text\"/>\n\n    <TextView android:id=\"@+id/outputView\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"0dp\"\n        android:background=\"@android:drawable/editbox_background\"\n        android:layout_marginTop=\"8sp\"\n        android:hint=\"@string/output_hint_text\"\n        app:layout_constraintTop_toBottomOf=\"@+id/output_mode\"\n        app:layout_constraintBottom_toBottomOf=\"parent\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        android:scrollbars=\"vertical\"\n        android:textSize=\"15sp\" />\n\n    <ImageButton\n        android:id=\"@+id/clear_output\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:src=\"@drawable/ic_clear\"\n        android:padding=\"16dp\"\n        android:visibility=\"gone\"\n        tools:visibility=\"visible\"\n        app:layout_constraintRight_toRightOf=\"@+id/outputView\"\n        app:layout_constraintBottom_toBottomOf=\"@+id/outputView\"\n        android:background=\"?selectableItemBackground\"/>\n\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "Android/consumer/app/src/main/res/menu/main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n    <item\n        android:id=\"@+id/menu_start\"\n        android:title=\"@string/menu_start_listening\"\n        android:icon=\"@drawable/ic_start\"\n        app:showAsAction=\"always\"/>\n\n    <item\n        android:id=\"@+id/menu_stop\"\n        android:title=\"@string/menu_stop_listening\"\n        android:icon=\"@drawable/ic_stop\"\n        app:showAsAction=\"always\"/>\n\n</menu>"
  },
  {
    "path": "Android/consumer/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\" />\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\" />\n</adaptive-icon>"
  },
  {
    "path": "Android/consumer/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@drawable/ic_launcher_background\" />\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\" />\n</adaptive-icon>"
  },
  {
    "path": "Android/consumer/app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"colorPrimary\">#3F51B5</color>\n    <color name=\"colorPrimaryDark\">#303F9F</color>\n    <color name=\"colorAccent\">#FF4081</color>\n\n    <color name=\"menu_active\">@color/colorAccent</color>\n    <color name=\"menu_inactive\">#808080</color>\n</resources>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/values/strings.xml",
    "content": "<resources>\n    <string name=\"app_name\">CUE Consumer</string>\n\n    <string name=\"menu_start_listening\">Start listening</string>\n    <string name=\"menu_stop_listening\">Stop listening</string>\n    <string name=\"output_mode_text\">Output ALL data</string>\n    <string name=\"output_hint_text\">Ultrasonic Payload</string>\n\n    <string name=\"notification_channel_id\" translatable=\"false\">triggers</string>\n    <string name=\"notification_channel_name\">Triggers</string>\n    <string name=\"notification_title\">@string/app_name</string>\n\n    <string name=\"message_error_trigger\">\n        Triggers must be of the format [0-461] for a CUEEngine generation 1\n        or [0-461].[0-461].[0-461] for a CUEEngine generation 2\n    </string>\n    <string name=\"message_error_number\">Triggers as number must be of the format [0-98611127]</string>\n    <string name=\"message_error_multi_trigger\">Multi triggers must be of the format [0-461].[0-461].[0-461].[0-461].[0-461].[0-461]</string>\n    <string name=\"message_error_number_mt\">Multi-triggers as number must be of the format [0-9724154565432383]</string>\n    <string name=\"message_error_ll\">LL Triggers must be of the format [0-125].[0-125]...</string>\n    <!-- <string name=\"message_error_raw\">RAW must be of the format [0-461].[0-461]...</string> -->\n\n    <string name=\"message_hint_trigger\">e.g. 1 or 1.2.34</string>\n    <string name=\"message_hint_number\">0-98611127</string>\n    <string name=\"message_hint_multi_trigger\">1.2.3.4.5.6</string>\n    <string name=\"message_hint_number_mt\">0-9724154565432383</string>\n    <string name=\"message_hint_ll\">1.2.3.4.5....</string>\n    <string name=\"message_hint_data\">Hello World!</string>\n    <!-- <string name=\"message_hint_raw\">1.23.45.67.8.9</string> -->\n\n    <string name=\"mode_trigger\">Trigger</string>\n    <string name=\"mode_number\">Number</string>\n    <string name=\"mode_multi_trigger\">MultiTrigger</string>\n    <string name=\"mode_number_mt\">NumMultiTrg</string>\n    <string name=\"mode_ll\">LL</string>\n    <string name=\"mode_data\">Data</string>\n\n    <string-array name=\"message_errors\">\n        <item>@string/message_error_trigger</item>\n        <item>@string/message_error_number</item>\n        <item>@string/message_error_multi_trigger</item>\n        <item>@string/message_error_number_mt</item>\n        <item>@string/message_error_ll</item>\n        <item>@null</item>\n        <!-- <item>@string/message_error_raw</item> -->\n    </string-array>\n\n    <string-array name=\"message_modes\">\n        <item>@string/mode_trigger</item>\n        <item>@string/mode_number</item>\n        <item>@string/mode_multi_trigger</item>\n        <item>@string/mode_number_mt</item>\n        <item>@string/mode_ll</item>\n        <item>@string/mode_data</item>\n    </string-array>\n\n    <string-array name=\"message_hints\">\n        <item>@string/message_hint_trigger</item>\n        <item>@string/message_hint_number</item>\n        <item>@string/message_hint_multi_trigger</item>\n        <item>@string/message_hint_number_mt</item>\n        <item>@string/message_hint_ll</item>\n        <item>@string/message_hint_data</item>\n        <!-- <item>@string/message_hint_raw</item> -->\n    </string-array>\n\n    <string-array name=\"message_regex\">\n        <!-- Trigger -->\n        <item>^([0-9]|[1-9][0-9]|[1-3][0-9]{2}|4[0-5][0-9]|46[01])(\\\\.([0-9]|[1-9][0-9]|[1-3][0-9]{2}|4[0-5][0-9]|46[01]))*$</item>\n \n        <!-- Trigger as Number -->\n        <item>^[0-9]+$</item>\n\n        <!-- MultiTrigger  -->\n        <item>^([0-9]|[1-9][0-9]|[1-3][0-9]{2}|4[0-5][0-9]|46[01])(\\\\.([0-9]|[1-9][0-9]|[1-3][0-9]{2}|4[0-5][0-9]|46[01])){5}$</item>\n\n        <!-- MultiTrigger as Number  -->\n        <item>^[0-9]+$</item>\n\n        <!-- LL -->\n        <item>^([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-5])(\\\\.([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-5]))*$</item>\n\n        <!-- Data -->\n        <item>^.*$</item>\n\n        <!-- <item>^(\\\\b(\\\\d{1,3})\\\\.?\\\\b)+$</item> -->\n    </string-array>\n\n</resources>\n"
  },
  {
    "path": "Android/consumer/app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"android:Theme.Holo.Light.DarkActionBar\">\n        <!-- Customize your theme here. -->\n    </style>\n\n</resources>\n"
  },
  {
    "path": "Android/consumer/build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    \n    repositories {\n        google()\n        jcenter()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.5.0'\n        classpath 'com.google.gms:google-services:4.3.4'\n        // NOTE: Do not place your application dependencies here; they belong\n        // in the individual module build.gradle files\n    }\n}\n\nallprojects {\n    repositories {\n        google()\n        jcenter()\n        flatDir {\n            dirs 'libs'\n        }\n    }\n}\n\ntask clean(type: Delete) {\n    delete rootProject.buildDir\n}\n"
  },
  {
    "path": "Android/consumer/gradle/wrapper/gradle-wrapper.properties",
    "content": "#Wed Aug 21 13:46:46 BST 2019\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-5.4.1-all.zip\n"
  },
  {
    "path": "Android/consumer/gradle.properties",
    "content": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\nandroid.enableJetifier=true\nandroid.useAndroidX=true\norg.gradle.jvmargs=-Xmx1536m\n\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n"
  },
  {
    "path": "Android/consumer/gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "Android/consumer/gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:init\r\n@rem Get command-line arguments, handling Windowz variants\r\n\r\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\r\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\r\n\r\n:win9xME_args\r\n@rem Slurp the command line arguments.\r\nset CMD_LINE_ARGS=\r\nset _SKIP=2\r\n\r\n:win9xME_args_slurp\r\nif \"x%~1\" == \"x\" goto execute\r\n\r\nset CMD_LINE_ARGS=%*\r\ngoto execute\r\n\r\n:4NT_args\r\n@rem Get arguments from the 4NT Shell from JP Software\r\nset CMD_LINE_ARGS=%$\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "Android/consumer/settings.gradle",
    "content": "include ':app'\n"
  },
  {
    "path": "License.md",
    "content": "For a better formatted version, see [HERE](./doc/licenses/License.pdf)\n\n# End User License Agreement\n\nThis End User License Agreement (“Agreement”) is a binding agreement between you (“End User” or “you”) and CUE Audio, LLC, a Delaware limited liability company (“Company”). This Agreement governs your use of the Company’s software, whether incorporated into a mobile application, integrated into a third-party’s product, software or other medium, or provided on a stand-alone basis, including all related documentation (the “Product”). The Product is licensed, not sold, to you.\n\nBY DOWNLOADING OR USING THE PRODUCT, YOU (A) ACKNOWLEDGE THAT YOU HAVE READ AND UNDERSTAND THIS AGREEMENT; (B) REPRESENT THAT YOU ARE OF LEGAL AGE TO ENTER INTO A BINDING AGREEMENT; AND (C) ACCEPT THIS AGREEMENT AND THE COMPANY’S PRIVACY POLICY AND AGREE THAT YOU ARE LEGALLY BOUND BY SUCH TERMS. IF YOU DO NOT AGREE TO THESE TERMS, DO NOT USE THE PRODUCT AND DELETE IT FROM YOUR MOBILE DEVICE.\n\nLicense Grant. Subject to the terms of this Agreement, Company grants you a limited, non-exclusive, and nontransferable license to:\n\ndownload, install, and use the Product for your personal, non-commercial use on a single mobile device owned or otherwise controlled by you (the “Mobile Device”) strictly in accordance with the Product’s documentation; and\n\non the Mobile Device, access, stream, and use the Content and Services (as defined in Section 5) made available in or otherwise accessible through the Product, strictly in accordance with this Agreement and the Privacy Policy applicable to such Content and Services as set forth in Section 5 (the “Privacy Policy”).\n\nLicense Restrictions. You shall not: \n\ncopy the Product, except as expressly permitted by this license;\n\nmodify, translate, adapt, or otherwise create updates, upgrades, bug fixes, patches, other error corrections, and/or new features (“Updates”) or derivative works, whether or not patentable, of the Product;\n\nreverse engineer, disassemble, decompile, decode, or otherwise attempt to derive or gain access to the source code of the Product or any part thereof;\n\nremove, delete, alter, or obscure any trademarks or any copyright, trademark, patent, or other intellectual property or proprietary rights notices from the Product, or any copy thereof;\n\nrent, lease, lend, sell, sublicense, assign, distribute, publish, transfer, or otherwise make available the Product, or any features or functionality of the Product, to any third party for any reason, including by making the Product available on a network where it is capable of being accessed by more than one device at any time; or\n\nremove, disable, circumvent, or otherwise create or implement any workaround to any copy protection, rights management, or security features in or protecting the Product. \n\nReservation of Rights. You acknowledge and agree that the Product is provided under license, and not sold, to you. You do not acquire any ownership interest in the Product under this Agreement, or any other rights thereto other than to use the Product in accordance with the license granted, and subject to all terms, conditions, and restrictions, under this Agreement. Company and its licensors and service providers reserve and shall retain their entire right, title, and interest in and to the Product, including all copyrights, trademarks, and other intellectual property rights therein or relating thereto, subject to rights licensed and expressly granted to you in this Agreement. You agree to safeguard the Product from infringement, misappropriation, theft, misuse, or unauthorized access. \n\nCollection and Use of Your Information. You acknowledge that when you download, install, or use the Product, Company may use automatic means (including, for example, cookies and web beacons) to collect information about your Mobile Device and about your use of the Product. You also may be required to provide certain information about yourself as a condition to downloading, installing, or using the Product or certain of its features or functionality, and the Product may provide you with opportunities to share information about yourself with others. You represent and warrant that all information you contribute or provide in connection with your use of the Product will be current, complete and accurate, and that you will update it as necessary to maintain its completeness and accuracy. If you choose, or are provided with, a user name, password, or any other piece of information as part of Company’s security procedures, you must treat such information as confidential, and you must not disclose it to any other person or entity, whether such disclosure is made by written or verbal communication, or via social media, blog, or other media-based platform. You also acknowledge that your account is personal to you and agree not to provide any other person with access to the Product or portions of the Product using your user name, password, or other security information. You agree to notify Company immediately of any unauthorized access to or use of your user name or password or any other breach of security. You are responsible for ensuring that you exit your account at the end of each session. You are responsible for the actions of anyone using your account, whether with or without your permission, and you may be held liable for any losses incurred by Company, its members, managers officers, directors, employees, agents, affiliates, successors, and assigns due to someone else’s use of your account, password, or other security information. You should use particular caution when accessing your account from a public or shared network so that others are not able to view or record your password or other personal information. All information Company collects through or in connection with this Product is subject to Company’s Privacy Policy as published at www.cueaudio.com/privacy. By downloading, installing, using, and providing information to or through this Product, you consent to all actions taken by Company with respect to your information in compliance with the Privacy Policy. \n\nContent and Services. The Product may provide you with access to Company’s website located at https://www.cueaudio.com/ (the “Website”) and products and services accessible thereon, and certain features, functionality, and content accessible on or through the Product may be hosted on the Website (collectively, “Content and Services”). Your access to and use of such Content and Services are governed by the Website’s Privacy Policy, which is incorporated herein by this reference. Your access to and use of such Content and Services may require you to acknowledge your acceptance of such Privacy Policy and/or to register with the Website, and your failure to do so may restrict you from accessing or using certain of the Product’s features and functionality. Any violation of such Privacy Policy will also be deemed a violation of this Agreement.\n\nConsent to Receive Email from Company. You may receive periodic email communications regarding the Product, updates or changes to the Product or this Agreement, or the functionality of the Product, which you cannot opt out of receiving. You may also receive periodic promotions and other offers or materials Company believes might be of interest to you. You can opt out of receiving these promotional messages at any time by (a) following the unsubscribe instructions contained in the email, newsletter, or promotion; or (b) changing the email preferences in your account.\n\nGeographic Restrictions. Company does not represent or warrant that the Content and Services, the Product, or any part thereof, is appropriate or available for use in any particular jurisdiction.  If you choose to access the Content and Services or the Product, you do so on your own initiative and at your own risk, and you are responsible for complying with all local laws, rules, and regulations.  Company may limit the availability of the Content and Services or the Product, in whole or in part, to any person, geographic area, or jurisdiction that Company chooses, at any time and in the Company’s sole discretion.  By using the Product and submitting any information, you consent to the transfer of such information, including personal information, to other countries, such as the United States, which may provide a different level of data security than in your country of residence. \n\nUpdates. Company may from time to time, in its sole discretion, develop and provide Updates for the Product (collectively, including related documentation, “Company Updates”). Company Updates may also modify or delete in their entirety certain features and functionality. You agree that Company has no obligation to provide any Company Updates or to continue to provide or enable any particular features or functionality. Based on your Mobile Device settings, when your Mobile Device is connected to the internet either:\n\nthe Product will automatically download and install all available Company Updates; or\n\nyou may receive notice of or be prompted to download and install available Company Updates.\n\nYou shall promptly download and install all Company Updates and acknowledge and agree that the Product or portions thereof may not properly operate should you fail to do so. You further agree that all Company Updates will be deemed part of the Product and be subject to all terms and conditions of this Agreement.\n\nThird-Party Materials. The Product may display, include, or make available third-party content (including data, information, Products, and other products, services, and/or materials) or provide links to third-party websites or services, including through third-party advertising (“Third-Party Materials”). You acknowledge and agree that Company is not responsible for Third-Party Materials, including their accuracy, completeness, timeliness, validity, copyright compliance, legality, decency, quality, or any other aspect thereof. Company does not assume and will not have any liability or responsibility to you or any other person or entity for any Third-Party Materials. Third-Party Materials and links thereto are provided solely as a convenience to you, and you access and use them entirely at your own risk and subject to such third parties’ terms and conditions.\n\nTerm and Termination.\n\nThe term of Agreement commences when you download the Product and acknowledge your acceptance and will continue in effect until terminated by you or Company as set forth in this Section 10.\n\nYou may terminate this Agreement by permanently deleting the Product and all copies thereof from your Mobile Device.\n\nCompany may terminate this Agreement at any time without notice.  Furthermore, Company may terminate this Agreement if it ceases to support the Product, which Company may do in its sole discretion. In addition, this Agreement will terminate immediately and automatically without any notice if you violate any of the terms and conditions of this Agreement.\n\nUpon termination:\n\nall rights granted to you under this Agreement will also terminate; and\n\nyou must cease all use of the Product and permanently delete all copies of the Product from your Mobile Device and account.\n\nTermination will not limit any of Company’s rights or remedies at law or in equity.\n\nDisclaimer of Warranties. THE PRODUCT IS PROVIDED TO YOU “AS IS” AND WITH ALL FAULTS AND DEFECTS WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAW, COMPANY, ON ITS OWN BEHALF AND ON BEHALF OF ITS AFFILIATES AND ITS AND THEIR RESPECTIVE LICENSORS AND SERVICE PROVIDERS, EXPRESSLY DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO THE PRODUCT, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, AND WARRANTIES THAT MAY ARISE OUT OF COURSE OF DEALING, COURSE OF PERFORMANCE, USAGE, OR TRADE PRACTICE. WITHOUT LIMITATION TO THE FOREGOING, COMPANY PROVIDES NO WARRANTY OR UNDERTAKING, AND MAKES NO REPRESENTATION OF ANY KIND THAT THE PRODUCT WILL MEET YOUR REQUIREMENTS, ACHIEVE ANY INTENDED RESULTS, BE COMPATIBLE, OR WORK WITH ANY OTHER SOFTWARE, PRODUCTS, SYSTEMS, OR SERVICES, OPERATE WITHOUT INTERRUPTION, MEET ANY PERFORMANCE OR RELIABILITY STANDARDS, OR BE ERROR-FREE, OR THAT ANY ERRORS OR DEFECTS CAN OR WILL BE CORRECTED.\n\nSOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF OR LIMITATIONS ON IMPLIED WARRANTIES OR THE LIMITATIONS ON THE APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO SOME OR ALL OF THE ABOVE EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. \n\nNo Reliance on Information.  The information provided on or through the Product or in connection with the Product is made available for your convenience and for general information purposes only and is subject to change without notice. COMPANY DOES NOT WARRANT THE ACCURACY, TIMELINESS, COMPLETENESS, OR USEFULNESS OF THIS INFORMATION OR THAT THE INFORMATION WILL SERVE YOUR PARTICULAR PURPOSES. ALL INFORMATION IS SUBJECT TO CHANGE.  Any reliance you place on such information is strictly at your own risk. Company disclaims all liability and responsibility arising from any reliance placed on such information or materials by you, or by anyone who may be informed of any of its contents. \n\nLimitation of Liability. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL COMPANY OR ITS AFFILIATES, OR ANY OF ITS OR THEIR RESPECTIVE LICENSORS OR SERVICE PROVIDERS, HAVE ANY LIABILITY ARISING FROM OR RELATED TO YOUR USE OF OR INABILITY TO USE THE PRODUCT OR THE CONTENT AND SERVICES FOR:\n\nPERSONAL INJURY, PROPERTY DAMAGE, LOST PROFITS, COST OF SUBSTITUTE GOODS OR SERVICES, LOSS OF DATA, LOSS OF GOODWILL, BUSINESS INTERRUPTION, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL, OR PUNITIVE DAMAGES.\n\nDIRECT DAMAGES IN AMOUNTS THAT IN THE AGGREGATE EXCEED THE AMOUNT ACTUALLY PAID BY YOU FOR THE PRODUCT. \n\nTHE FOREGOING LIMITATIONS WILL APPLY WHETHER SUCH DAMAGES ARISE OUT OF BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE AND REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE OR COMPANY WAS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW CERTAIN LIMITATIONS OF LIABILITY SO SOME OR ALL OF THE ABOVE LIMITATIONS OF LIABILITY MAY NOT APPLY TO YOU. \n\nIndemnification. You agree to indemnify, defend, and hold harmless Company and its members, managers, officers, directors, employees, agents, affiliates, successors, and assigns from and against any and all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs, or expenses of whatever kind, including reasonable attorneys’ fees, arising from or relating to your use or misuse of the Product or your breach of this Agreement, including but not limited to the content you submit or make available through this Product.\n\nExport Regulation. The Product may be subject to United States export control laws, including the United States Export Administration Act and its associated regulations. You shall not, directly or indirectly, export, re-export, or release the Product to, or make the Product accessible from, any jurisdiction or country to which export, re-export, or release is prohibited by law, rule, or regulation. You shall comply with all applicable federal laws, regulations, and rules, and complete all required undertakings (including obtaining any necessary export license or other governmental approval), prior to exporting, re-exporting, releasing, or otherwise using or accessing the Product outside the US.\n\nSeverability. If any provision of this Agreement is illegal or unenforceable under applicable law, the remainder of the provision will be amended to achieve as closely as possible the effect of the original term and all other provisions of this Agreement will continue in full force and effect.\n\nGoverning Law. This Agreement is governed by and construed in accordance with the internal laws of the State of Delaware without giving effect to any choice or conflict of law provision or rule. In the event of a direct conflict between the provisions of this Agreement and any mandatory provision of applicable law, the mandatory provision of applicable law will control; in all other events, the provisions of this Agreement will control. \n\nArbitration.  You agree that any dispute, claim, or controversy between you and Company relating in any way to this Agreement or to your use of the Product (whether based in contract, tort, malpractice, negligence, misrepresentation, or any other legal theory, and whether the claims arise during or after the termination of the Agreement) will be resolved by mandatory binding individual arbitration.  Arbitration is more informal than a lawsuit in court. There is no judge or jury, but instead an appointed arbitrator, usually with an experienced background in the area of the dispute. There may be more limited discovery than in court.  An arbitrator can award the same damages and relief as a court (including attorney fees), except that the arbitrator may not award declaratory or injunctive relief to anyone but the parties to the arbitration. This arbitration provision will survive termination of the Agreement.\n\nEither you or Company may demand and/or file arbitration proceedings. Arbitration between you and Company will be conducted under the then-current American Arbitration Association’s (“AAA”) Commercial Dispute Resolution Procedures and the Supplementary Procedures for Consumer Related Disputes (the “AAA Rules”). Arbitration will take place at a location to be agreed upon in Denver, Colorado, provided that if the claim is for $10,000 or less, you may request that the arbitration to be conducted be based on documents submitted to the Arbitrator or through a non-appearance based telephonic hearing; or by an in-person hearing as established by the AAA Rules. Your arbitration fees and costs will be subject to any limitations set forth in the AAA Rules with the remainder (if any) paid by Company.\n\nIn the event that Company makes any future change to this arbitration provision, you may reject any such change by sending written notice within thirty (30) days of the change and ceasing all use of the Product deleting the all copies of the Product from your Mobile Device within the same notice period.\n\nLimitation of Time to File Claims. ANY CAUSE OF ACTION, CLAIM, OR DEMAND FOR ARBITRATION YOU MAY HAVE ARISING OUT OF OR RELATING TO THIS AGREEMENT OR THE PRODUCT MUST BE COMMENCED WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION FIRST ACCRUES OTHERWISE SUCH CAUSE OF ACTION OR CLAIM WILL BE PERMANENTLY BARRED. If applicable law prohibits a one-year limitation period for asserting claims, any claim must be asserted within the shortest time period permitted by applicable law. \n\nEntire Agreement. This Agreement and Company’s Privacy Policy constitute the entire agreement between you and Company with respect to the Product and supersede all prior or contemporaneous understandings and agreements, whether written or oral, with respect to the Product. \n\nWaiver. No failure to exercise, and no delay in exercising, on the part of either party, any right or any power hereunder shall operate as a waiver thereof, nor shall any single or partial exercise of any right or power hereunder preclude further exercise of that or any other right hereunder. In the event of a conflict between this Agreement and any applicable purchase or other terms, the terms of this Agreement shall govern. \n"
  },
  {
    "path": "README.md",
    "content": "\n# High Reliability Acoustic Modem  \n\n## CUE Audio\n\nCUE Audio provides an extremely reliable acoustic modem, permitting data exchange between any two devices with a microphone or speaker. CUE typically operates in the near-ultrasonic frequency band (17.5-19.5kHz) in order to be inaudible to the majority of people but detectable by commonplace microphones. Trusted by many of the world's largest brands and deployed on over nine million devices, with CUE you will have access to the world's most advanced acoustic modem.\n\nUnlike alternative data-over-audio solution, which work only in quiet environments over short distances (a few cm to 3 meters), we've utilized this solution to successfully broadcasted ultrasonic signals in indoor/outdoor environments to crowds of 80,000+ stadium attendees, with a propagation distance of over 150 meters and negligible latency above the speed of sound.\n\n##### Advantages include:\n\n* No reliance on a data connection, including Wi-Fi, Bluetooth, or cellular service.\n* Ability to imperceptibly transmit data through online videos, television broadcasts, or any other sound-based media.\n* Enhancing the second-screen experience by allowing mobile devices to be informed of not only of what you are watching, but exactly how far along you are in the program. This also allows second-screens to respond to live events, such as touchdowns or breaking news.\n* Enabling proximity-awareness in slow zones and dead spots using existing speaker infrastructure.\n* Ability to synchronize devices to the nearest eighth of a second.\n\n# Who’s using CUE Audio's library?\n###### CUE Audio have been enjoyed by over 5,000,000 users across three continents. Past and current clients include:\n\n<img width=\"1237\" alt=\"Screenshot 2025-02-26 at 7 55 25 AM\" src=\"https://github.com/user-attachments/assets/17b1db17-4e55-4a26-914e-fd248b297834\" />\n\n# Technical Overview\n[See PDF here](./doc/cue-technical-overview.pdf)\n\n# Licensing\n\nPlease only use the included API Key for applications in development. The public API Key included in this demo is liable to break at any time. Before pushing a product into production, please make sure you have your own API Key by contacting <support+github@connectwithcue.com>. Learn more at <https://cueaudio.com>.\n\n\n# Example Use Cases\n\n* Triggering commands on the smartphone through a television broadcast, online video, radio commercial, film and movies. Users can be rewarded for tuning in; products can be linked to during a featured commercial; coupons can be distributed, etc.\n\n* Turn $10 household speakers into iBeacons. Any speaker emitting a unique fingerprint at regular intervals can be used to detect proximity and trigger events to achieve the same effect as traditional Bluetooth beacons.\n\n* Location-based “push” notifications. Users can be segmented by proximity to various speakers.\n \n* Smartphones in the same room or across the globe can be synchronized and given precisely timed commands in real-time, or minutes, hours, or even days after the trigger was detected.\n\n<p align=\"center\">\n  <b>Arbitrary Device Synchronization</b><br>\n  <a href=\"https://youtu.be/ork4Q4eoUg4\">Villanova @ Purdue</a> |\n  <a href=\"https://www.youtube.com/watch?v=UkxqUhp2RCk\">Iowa @ Purdue</a> |\n  <a href=\"https://www.youtube.com/watch?v=YZZp-idBDpM\">Villanova @ Marquette</a>\n  <br><br>\n  <a href=\"https://youtu.be/ork4Q4eoUg4\"><img src=\"http://qraider.com/XT/images/purdue.gif\"> </a>\n</p>\n \n* Commands without a data connection. Because the software is triggered by sound, it can perform even where there is no data connection, Wi-Fi, or Bluetooth.\n \n* Authorization/ticketing — triggers can be used to verify check-in at an event, or to unlock content on your app.\n \n* Indoor location sensing — provide location services more accurate than GPS by making use of the existing speaker infrastructure.\n\n# Integration Guide\n\nFor info on the Demo Project, please [view docs here](https://cueaudio.readme.io/docs/demo-project). An API key is not needed to use the demo project, although one is needed to integrate the library into your own project. \n\n## iOS\n[See iOS Documentation](./doc/iOS_README.md)\n\n## Android\n[See Android Documentation](./doc/Android_README.md)\n\n## Technical Details\n[Engine Callback Structure](https://cueaudio.readme.io/docs/basic-use-cases#structure-of-a-cuetrigger) \n\n### Note\n\nFor testing the demo projects, since CUE is an ultrasonic communications platform, it is best to using two mobile devices (speaker of `device one` --> mic of `device two`) although you can technically test one one device (speaker of `device one` --> mic of `device one`). \n"
  },
  {
    "path": "doc/Android_README.md",
    "content": "# CUE Engine -- Android\n\n## Using the Demo Project\n\nTo run CUE Audio's ultrasonic engine on Android, simply follow these steps:\n\n(1) Open the `Android/consumer` directory, then open the `consumer` application in Android Studio. \n\n(2) At the top of `MainActivity.java`, insert your API Key into the following:\n\n`private static final String API_KEY = \"myAPIKey\"`\n\n(3) Run the project. If your Android Studio gradle settings are not configured, it may be necessary to re-sync your project by selecting `File --> Sync Project with Gradle Files`. \n\nNow, transmit ultrasonic audio by playing a trigger from the `SampleTones` directory. Upon registering the tone, the device display the binary signal received.\n\n(4) To customize the ultrasonic trigger response, simply modify the following callback within  `MainActivity.java`:\n\n```java\nprivate class OutputListener implements CUEReceiverCallbackInterface {\n        @Override\n        public void run(@NonNull String json) {\n            final CUETrigger model = CUETrigger.parse(json);\n            // Use payload\n            runOnUiThread(new Runnable() {\n                @Override\n                public void run() {\n                    // Modify UI\n                }\n            });\n        }\n    }\n```\n\n## Accessing CUEEngine with Custom API Key\n\n1. Add Maven artifactory environment variables to your project's `local.properties` file:\n\n```\ncom.cueaudio.maven.url=https://cueaudio.jfrog.io/cueaudio\ncom.cueaudio.maven.repokey=libs-release-local\ncom.cueaudio.maven.bucket=https://cueaudio.jfrog.io/cueaudio/libs-release-local\ncom.cueaudio.maven.username=<username>\ncom.cueaudio.maven.password=<password>\n```\n\n2. Import CUEEngine into your project by adding the following to your app's `build.gradle` file:\n\n```\nimplementation \"com.cueaudio:engine:1.+\"\n```\n\n## Custom Implementation\n\n1) Make sure your app has microphone access granted.\n\n2) Setup the engine using your API key:\n\n```java\nCUEEngine.getInstance().setupWithAPIKey(<context>, <apiKey>);\n```\n\nYou can start and stop listening with the methods:\n\n```java\nCUEEngine.getInstance().startListening();\nCUEEngine.getInstance().stopListening();\n```\n\n3) To decode data from the engine, set the engine's `ReceiverCallback`. This is the block of code that will execute each time an ultrasonic signal is detected. An example is:\n\n```java\nprivate class CUEEngineCallbackInterfaceImpl implements CUEReceiverCallbackInterface {\n        private final Gson mGson = new Gson();\n\n        @Override\n        public void run(String symbolsJson) {\n            try {\n                JSONObject obj = new JSONObject(symbolsJson);\n                String triggerId = obj.getString(\"winner-indices\");\n                Log.i(TAG, \"Trigger Detected with SymbolString: \" + triggerId);\n            } catch (JSONException e) {\n                e.printStackTrace();\n            }\n        }\n    }\n```\n\nThen: `CUEEngine.getInstance().setReceiverCallback(new CUEEngineCallbackInterfaceImpl());` \n\nFor details on the structure of the returned JSON, `symbolsJson`, see [here](CUEEngine_JSON_Structure.md).\n\n4) To transmit an ultrasonic trigger from the engine, select from one of the following:\n\nTransmit as an integer between `0` and `98,611,127`:\n\n```java\nresult = CUEEngine.getInstance().queueTriggerAsNumber(number);\nif( result < 0 ) {\n    messageLayout.setError(\"Triggers us number can not exceed 98611127\" );\n}\n```\n\nTransmit as a \"trigger\" (format \"X.X.X\" where X is an integer from `0` - `461`):\n\n```java\nresult = CUEEngine.getInstance().queueTrigger(input);\nif( result < 0 ) {\n    // handle error\n}\n```\n"
  },
  {
    "path": "doc/CUEEngine_JSON_Structure.md",
    "content": "# Structure of CUETrigger\n\n## Basic terms\nEach time a CUE audio signal is detected by the device's audio input or microphone, a JSON payload is returned to your application within the `ReceiverCallback` block you provide to the `CUEEngine` shared instance.\n\nThere are two types of audio signal formats: a ***trigger*** message and a ***data*** message. The type of audio signal is stated in the `mode` field of the returned JSON.\n\nWithin a ***trigger*** audio signal, the `id` is encoded in the `raw-indices` as three  ***symbols*** separated by a `.` character.  E.g. `\"42.21.43\"`, `\"1.2.34\"`, etc., where each ***symbol*** is an integer between `0` and `461`.\n\nThe ***data*** audio signal is encoded in the `message` field as a byte stream represented by a JSON string.\n\nExample payloads are provided below.\n\n## **Example Payloads**\n### Trigger payload\n```json\n{\n    \"generation\": 2,\n    \"latency_ms\": 960.0,\n    \"mode\": \"trigger\",\n    \"noise\": 163.40673828125,\n    \"payload\": {\"myKey\":\"myValue\"},\n    \"power\": 69682.734375,\n    \"raw-indices\": \"1.32.45\",\n    \"trigger-as-number\": 228273,\n    \"winner-indices\": \"1.32.45\"\n}\n```\n\n### Data payload\n```json\n{\n    \"generation\": 2,\n    \"latency_ms\": 6375.0,\n    \"message\": \"hello world\",\n    \"mode\": \"data\",\n    \"payload\": {}\n}\n```\n\n## **Description**\n\n### Basic Parameters\n\n- `\"mode\"`:\n    1. `\"trigger\"`:\n\n\t\t_Intended for transmitting content IDs or small amounts of data over short to long distances. Each `trigger` consists of a three-symbol ID (each symbol ranging from 0 to 461), and can easily transmit throughout a 120,000-person stadium._\n\n        • _payload size_: 26 bits  \n        • _latency_: ~1.0 seconds  \n    \n    2. `\"data\"`:\n\n\t\t_For transmitting arbitrarily large data payloads over short to medium distances. Transmission occurs at a rate of 26bps. Payload size varies according to signal duration._\n\n        _bandwidth_: 26 bits/sec  \n        _latency_: **N/A** (varies according to number of packets in message)\n\n- `\"latency_ms\"`:\n\n    Time in milliseconds since *start* of the CUE message decoding process\n\n\n- `\"raw-indices\"`:\n\n    The \"symbol string\" or \"indices\" of the detected trigger (e.g., `\"1.2.3\"`).\n\n- `\"winner-indices\"`:\n    \n    The same as `\"raw-indices\"`\n\n- `\"trigger-as-number\"`:\n\n\tYou can convert a `trigger` back and forth to an `integer` from `0` to `98611127`. Transmit an `integer` by calling:\n\t\n\t```objc\n\t[CUEEngine.sharedInstance queueTriggerAsNumber:number];\n\t```\n\t\n\t```java\n\tCUEEngine.getInstance().queueTriggerAsNumber(number);\n\t```\n\t\n\tThen, when a `trigger` is received, convert a `trigger` to an integer with the following:\n\t\n\t```objc\n\tlong triggerNum = [trigger triggerAsNumber];\n\t```\n\n### Advanced Parameters\n\nThe following parameters are only needed for advanced metrics, such as estimating distance from the audio source. \n\n- `\"power\"`:\n\n    Log (base 10) of the median channel strength and noise level\n\n\n- `\"noise\"`:\n\n    Log (base 10) of the median background noise level"
  },
  {
    "path": "doc/iOS_README.md",
    "content": "# CUE Engine - iOS\n\n## Using the Demo Project\n\nTo run CUE Audio's ultrasonic engine on iOS, simply follow these steps:\n\n(1) Go into `iOS/consumer` and open `consumer.xcodeproj` in Xcode\n\n(2) At the top of `AppDelegate.m`, insert your API Key into the following:\n\n`#define API_KEY @\"yourAPIKey\"`\n\n(3) Run the project. Transmit ultrasonic audio by playing a trigger from the `SampleTones` directory. Upon registering the tone, the device display the binary signal received.\n\n(4) To customize the ultrasonic trigger response, simply modify the following callback within your `ViewController.m` file:\n\n```objective-c\n[CUEEngine.sharedInstance setReceiverCallback:\n        ^void( NSString* jsonString )\n        {\n            //handle engine JSON here\n        }\n     ];\n```\n\n## Accessing CUEEngine with Custom API Key\n\n1. Make sure you have `CocoaPods` and the `CocoaPods Artifactory` plugin installed. You can do so with the following commands using Homebrew:\n\n```\nbrew install cocoapods\ngem install cocoapods-art\n```\n\n2. Add credentials to allow you to use the CUEEngine CocoaPod. In ~/.netrc (create this file if necessary) insert your credentials:\n```\nmachine cueaudio.jfrog.io\nlogin <username>\npassword <pass>\n```\n3. To use this CocoaPod, execute the command `pod repo-art add cocoapods-local \"https://cueaudio.jfrog.io/cueaudio/api/pods/cocoapods-local\"` in your project's root directory via the command line.\n\n4. Finally, run `pod install`\n\n5. To update the engine version in the future, run: \n\n```\npod repo-art update cocoapods-local \npod install\n```\n\nThe engine version can then be updated in your `Podfile`. An example of such a podfile is:\n\n```\n# Uncomment the next line to define a global platform for your project\nplatform :ios, '10.3'\n\nplugin 'cocoapods-art', :sources => [\n  'cocoapods-local'\n]\n\nsource 'https://github.com/CocoaPods/Specs.git'\n\ntarget 'MyProj' do\n  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks\n  use_frameworks!\n\n  # Pods for consumer\n\n  project 'MyProj.xcodeproj'\n  pod \"engine\"\n\nend\n```\n\n## Custom Implementation \n\n1. In your `Info.plist` file, make sure you set `Privacy - Microphone Usage Description`.\n\n2. Make sure to enable microphone access in your app.\n\n3. Configure the Audio Session:\n\n`#import <engine/AudioSession.h>`\n\nThen call the method `[AudioSession setup]`. The audio session should always be properly configured if the engine is to function as designed. A good place to call this is in `application didFinishLaunchingWithOptions:`. \n\n4. Next, setup the engine using your API key:\n\n`[CUEEngine.sharedInstance setupWithAPIKey:API_KEY];`\n\nYou can start and stop listening with the methods:\n\n```objective-c\n[CUEEngine.sharedInstance startListening];\n[CUEEngine.sharedInstance stopListening];\n```\n\n5. To decode data from the engine, set the engine's `ReceiverCallback`. This is the block of code that will execute each time an ultrasonic signal is detected. An example is:\n\n```objective-c\n[CUEEngine.sharedInstance setReceiverCallback:^(NSString *json) {\n        NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding];\n        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];\n        \n        //get triggerID\n        NSString *symbolString = [jsonDict objectForKey:@\"winner-indices\"];\n        \n        NSLog(@\"Trigger Detected with SymbolString: %@\", symbolString);\n    }];\n```\n\nFor details on the structure of the returned JSON, see [here](CUEEngine_JSON_Structure.md).\n\n6. To transmit an ultrasonic trigger from the engine, select from one of the following:\n\nTransmit as an integer between `0` and `98,611,127`:\n\n```objective-c\nresult = [CUEEngine.sharedInstance queueTriggerAsNumber:number];\nif( result < 0 ) {\n    NSLog(@\"Triggers us number can not exceed 98611127\");\n}\n```\n\nTransmit as a \"trigger\" (format \"X.X.X\" where X is an integer from `0` - `461`):\n\n```objective-c\nresult = [CUEEngine.sharedInstance queueTrigger:triggerStr];\nif( result < 0 ) {\n    // handle error\n}\n```"
  },
  {
    "path": "doc/licenses/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "doc/licenses/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/consumer/consumer/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  objC_consumer\n//\n//  Created by CUEAudio on 01/03/2018.\n//  © CUEAudio, 2018 to the last syllable of recorded time, all rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n#define API_KEY @\"H7v7NMMNh6im735w331iLHtqnduxGCTL\"\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (strong, nonatomic) UIWindow *window;\n\n@end\n\n"
  },
  {
    "path": "iOS/consumer/consumer/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  objC_consumer\n//\n//  Created by CUEAudio on 01/03/2018.\n//  © CUEAudio, 2018 to the last syllable of recorded time, all rights reserved.\n\n//π. All rights reserved.\n//\n\n#import <AVFoundation/AVFoundation.h>\n\n#import <engine/AudioSession.h>\n#import <engine/CUEEngine.h>\n\n#import \"AppDelegate.h\"\n\n// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n\n@implementation AppDelegate\n\n- (BOOL)            application: (UIApplication *) application\n  didFinishLaunchingWithOptions: (NSDictionary *) launchOptions\n{\n    if( ! [AudioSession setup] ) {\n        NSLog( @\"Error setting up AudioSession\" );\n        return NO;\n    }\n    \n    // Request mic access\n    [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {\n        //if granted, set up engine\n        if( granted == YES ) {\n            [self setupEngine];\n            [self startListening];\n        }\n    }];\n    \n    return YES;\n}\n\n- (void) setupEngine\n{\n    [CUEEngine.sharedInstance setupWithAPIKey:API_KEY];\n    [CUEEngine.sharedInstance setDefaultGeneration:2];\n}\n\n- (void) startListening {\n    [CUEEngine.sharedInstance startListening];\n}\n\n- (void)applicationWillTerminate:(UIApplication *)application\n{\n    //to not listen in the background\n    [CUEEngine.sharedInstance stopListening];\n}\n\n@end\n\n// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n"
  },
  {
    "path": "iOS/consumer/consumer/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"83.5x83.5\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "iOS/consumer/consumer/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "iOS/consumer/consumer/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" systemVersion=\"17A277\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "iOS/consumer/consumer/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14490.70\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"4i9-g3-DXA\">\n    <device id=\"retina4_0\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14490.49\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Consumer-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"568\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <pickerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"yXA-GX-efD\">\n                                <rect key=\"frame\" x=\"8\" y=\"64\" width=\"100\" height=\"100\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"100\" id=\"wR1-sr-3LL\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"100\" id=\"xIB-MK-Ag4\"/>\n                                </constraints>\n                            </pickerView>\n                            <textField opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"natural\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Y7j-OV-FDE\">\n                                <rect key=\"frame\" x=\"116\" y=\"99\" width=\"146\" height=\"30\"/>\n                                <nil key=\"textColor\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\"/>\n                            </textField>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"NRj-6o-PiI\">\n                                <rect key=\"frame\" x=\"270\" y=\"97\" width=\"42\" height=\"34\"/>\n                                <state key=\"normal\" title=\"Send\">\n                                    <color key=\"titleColor\" red=\"1\" green=\"0.57637232540000005\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <connections>\n                                    <action selector=\"transmit:\" destination=\"BYZ-38-t0r\" eventType=\"touchUpInside\" id=\"pCp-ZV-UqZ\"/>\n                                </connections>\n                            </button>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Output all data\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"X2r-1U-fmE\">\n                                <rect key=\"frame\" x=\"12\" y=\"176\" width=\"113\" height=\"21\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <nil key=\"textColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <switch opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fpX-SJ-nUr\">\n                                <rect key=\"frame\" x=\"137\" y=\"171\" width=\"51\" height=\"31\"/>\n                            </switch>\n                            <textView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" editable=\"NO\" textAlignment=\"natural\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LAD-wF-N6a\">\n                                <rect key=\"frame\" x=\"12\" y=\"214\" width=\"296\" height=\"342\"/>\n                                <color key=\"backgroundColor\" red=\"0.86274509803921573\" green=\"0.86274509803921573\" blue=\"0.86274509803921573\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\"/>\n                            </textView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vhx-ei-GFa\">\n                                <rect key=\"frame\" x=\"261\" y=\"169.5\" width=\"43\" height=\"34\"/>\n                                <state key=\"normal\" title=\"Clear\">\n                                    <color key=\"titleColor\" red=\"1\" green=\"0.57637232540000005\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <connections>\n                                    <action selector=\"clearOutput:\" destination=\"BYZ-38-t0r\" eventType=\"touchUpInside\" id=\"9Gn-dF-EXz\"/>\n                                </connections>\n                            </button>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"yXA-GX-efD\" firstAttribute=\"leading\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"leading\" constant=\"8\" id=\"7yf-W9-FiZ\"/>\n                            <constraint firstItem=\"vhx-ei-GFa\" firstAttribute=\"centerY\" secondItem=\"X2r-1U-fmE\" secondAttribute=\"centerY\" id=\"9Gb-oe-zQD\"/>\n                            <constraint firstItem=\"NRj-6o-PiI\" firstAttribute=\"leading\" secondItem=\"Y7j-OV-FDE\" secondAttribute=\"trailing\" constant=\"8\" id=\"GLV-Yb-Uyn\"/>\n                            <constraint firstItem=\"Y7j-OV-FDE\" firstAttribute=\"centerY\" secondItem=\"yXA-GX-efD\" secondAttribute=\"centerY\" id=\"Oy2-qR-ozX\"/>\n                            <constraint firstItem=\"yXA-GX-efD\" firstAttribute=\"top\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"top\" id=\"Su9-Oc-rVM\"/>\n                            <constraint firstItem=\"6Tk-OE-BBY\" firstAttribute=\"trailing\" secondItem=\"NRj-6o-PiI\" secondAttribute=\"trailing\" constant=\"8\" id=\"UrX-KB-w0A\"/>\n                            <constraint firstItem=\"LAD-wF-N6a\" firstAttribute=\"top\" secondItem=\"fpX-SJ-nUr\" secondAttribute=\"bottom\" constant=\"12\" id=\"Xvf-Tl-Ffk\"/>\n                            <constraint firstItem=\"6Tk-OE-BBY\" firstAttribute=\"trailing\" secondItem=\"LAD-wF-N6a\" secondAttribute=\"trailing\" constant=\"12\" id=\"ZrS-Fb-Geu\"/>\n                            <constraint firstItem=\"6Tk-OE-BBY\" firstAttribute=\"trailing\" secondItem=\"vhx-ei-GFa\" secondAttribute=\"trailing\" constant=\"16\" id=\"fUR-d8-dyG\"/>\n                            <constraint firstItem=\"Y7j-OV-FDE\" firstAttribute=\"leading\" secondItem=\"yXA-GX-efD\" secondAttribute=\"trailing\" constant=\"8\" id=\"gZA-7j-pbO\"/>\n                            <constraint firstItem=\"LAD-wF-N6a\" firstAttribute=\"leading\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"leading\" constant=\"12\" id=\"gfY-rs-ZBr\"/>\n                            <constraint firstItem=\"NRj-6o-PiI\" firstAttribute=\"centerY\" secondItem=\"yXA-GX-efD\" secondAttribute=\"centerY\" id=\"joN-zU-iwf\"/>\n                            <constraint firstItem=\"X2r-1U-fmE\" firstAttribute=\"leading\" secondItem=\"6Tk-OE-BBY\" secondAttribute=\"leading\" constant=\"12\" id=\"mge-cK-3G5\"/>\n                            <constraint firstItem=\"X2r-1U-fmE\" firstAttribute=\"top\" secondItem=\"yXA-GX-efD\" secondAttribute=\"bottom\" constant=\"12\" id=\"t1D-Cy-Yo9\"/>\n                            <constraint firstItem=\"fpX-SJ-nUr\" firstAttribute=\"centerY\" secondItem=\"X2r-1U-fmE\" secondAttribute=\"centerY\" id=\"uNn-aZ-pLh\"/>\n                            <constraint firstItem=\"fpX-SJ-nUr\" firstAttribute=\"leading\" secondItem=\"X2r-1U-fmE\" secondAttribute=\"trailing\" constant=\"12\" id=\"uXq-nu-ezS\"/>\n                            <constraint firstItem=\"6Tk-OE-BBY\" firstAttribute=\"bottom\" secondItem=\"LAD-wF-N6a\" secondAttribute=\"bottom\" constant=\"12\" id=\"wcS-5F-G5Q\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Consumer\" id=\"pZd-YX-Cov\">\n                        <barButtonItem key=\"rightBarButtonItem\" title=\"Item\" id=\"GCp-tK-qWY\"/>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"fullOutputSwitch\" destination=\"fpX-SJ-nUr\" id=\"8EI-m4-33b\"/>\n                        <outlet property=\"modePicker\" destination=\"yXA-GX-efD\" id=\"1z6-ij-OSk\"/>\n                        <outlet property=\"outputView\" destination=\"LAD-wF-N6a\" id=\"94D-yF-nnW\"/>\n                        <outlet property=\"sendButton\" destination=\"NRj-6o-PiI\" id=\"8oy-Ew-XdW\"/>\n                        <outlet property=\"textEntryField\" destination=\"Y7j-OV-FDE\" id=\"Rub-3I-431\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1157\" y=\"-15\"/>\n        </scene>\n        <!--Navigation Controller-->\n        <scene sceneID=\"oIu-li-FyX\">\n            <objects>\n                <navigationController id=\"4i9-g3-DXA\" sceneMemberID=\"viewController\">\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" insetsLayoutMarginsFromSafeArea=\"NO\" id=\"7ea-X1-WUz\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <connections>\n                        <segue destination=\"BYZ-38-t0r\" kind=\"relationship\" relationship=\"rootViewController\" id=\"wsh-RJ-AaU\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"rhU-fe-y79\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"264\" y=\"-14\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "iOS/consumer/consumer/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIUserInterfaceStyle</key>\n\t<string>UIStatusBarStyleLightContent</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSMicrophoneUsageDescription</key>\n\t<string>To detect ultrasonic transmissions in your local environment</string>\n\t<key>UIBackgroundModes</key>\n\t<array>\n\t\t<string>audio</string>\n\t</array>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UIRequiresFullScreen</key>\n\t<true/>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/consumer/consumer/ViewController.h",
    "content": "//\n//  ViewController.h\n//  objC_consumer\n//\n//  Created by CUEAudio on 01/03/2018.\n//  © CUEAudio, 2018 to the last syllable of recorded time, all rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface ViewController : UIViewController\n\n@end\n\n"
  },
  {
    "path": "iOS/consumer/consumer/ViewController.m",
    "content": "//\n//  ViewController.m\n//  objC_consumer\n//\n//  Created by CUEAudio on 01/03/2018.\n//  © CUEAudio, 2018 to the last syllable of recorded time, all rights reserved.\n//\n\n#import \"ViewController.h\"\n#import <UserNotifications/UserNotifications.h>\n\n#import <engine/CUEEngine.h>\n#import <engine/CUETrigger.h>\n#import <engine/CUEErrno.h>\n\n#define decimalPoint NSLocale.currentLocale.decimalSeparator\n\n@interface ViewController() <UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate>\n@property (weak, nonatomic) IBOutlet UITextView *outputView;\n@property (weak, nonatomic) IBOutlet UIPickerView *modePicker;\n@property (weak, nonatomic) IBOutlet UITextField *textEntryField;\n@property (weak, nonatomic) IBOutlet UIButton *sendButton;\n@property (weak, nonatomic) IBOutlet UISwitch *fullOutputSwitch;\n\n@property CUEEngineMode selectedMode;\n@property BOOL triggerAsNumber;\n\n@property NSArray *modes;\n@property UIBarButtonItem *playButton;\n@property UIBarButtonItem *pauseButton;\n\n@end\n\n@implementation ViewController\n\n- (void) viewDidLoad\n{\n    [super viewDidLoad];\n    \n    [self setupKeyboardGesture];\n    [self setupModesArray];\n    [self setupTextEntryField];\n    [self setupPickerView];\n    [self setupPlayPauseButtons];\n    [self registerForLocalNotifications];\n    [self setupCUEEngineCallback];\n}\n\n- (void) setupCUEEngineCallback {\n    [CUEEngine.sharedInstance setReceiverCallback:\n     ^void( NSString* jsonString )\n     {\n         NSLog(@\"CUEEngine viewDidLoad got-trigger-callback with JSON:\\n%@\", jsonString);\n         CUETrigger *trigger = [[CUETrigger alloc] initWithJsonString:jsonString];\n         \n         /* * * * * * * * * * *\n          * display output\n          * * * * * * * * * * */\n         \n         dispatch_async( dispatch_get_main_queue(), ^{\n             \n             /* * * * * * * * * * * * *\n              * Fill out output string\n              * * * * * * * * * * * * */\n             \n             NSString *outputStr;\n             if (self.fullOutputSwitch.isOn) {\n                 outputStr = [CUETrigger formatFullData:trigger];\n             } else {\n                 outputStr = [CUETrigger formatPartialData:trigger];\n             }\n             \n             // If running in background, check to send notification\n             [self sendNotificationInBackground:trigger.rawIndices andMode:trigger.mode];\n             \n             self.outputView.text = [self.outputView.text stringByAppendingString:outputStr];\n             \n             /* Scroll to bottom */\n             NSRange bottomLine = NSMakeRange(self.outputView.text.length - 1, 1);\n             [self.outputView scrollRangeToVisible:bottomLine];\n             \n             /* * * * * * * * * * * * *\n             * Get trigger as number\n             * * * * * * * * * * * * */\n             long triggerNum = [trigger triggerAsNumber];\n             NSLog(@\"%li\", triggerNum);\n         } );\n         \n     }];\n}\n\n- (void) setupPlayPauseButtons {\n    //disable send button until textEntryField has text\n    self.sendButton.enabled = false;\n    \n    self.playButton = [[UIBarButtonItem alloc]\n                       initWithBarButtonSystemItem:UIBarButtonSystemItemPlay\n                       target:self action:@selector(playButtonTapped)];\n    \n    self.pauseButton = [[UIBarButtonItem alloc]\n                        initWithBarButtonSystemItem:UIBarButtonSystemItemPause\n                        target:self action:@selector(pauseButtonTapped)];\n    \n    \n    self.navigationItem.rightBarButtonItem = self.pauseButton;\n}\n\n- (void) setupModesArray {\n    self.modes = @[[NSNumber numberWithInteger:CUEEngineModeTrigger],\n                   [NSNumber numberWithInteger:CUEEngineModeMultiTrigger],\n                   [NSNumber numberWithInteger:CUEEngineModeLL],\n                   [NSNumber numberWithInteger:CUEEngineModeData]];\n}\n\n#pragma mark Notifications\n\n- (void) registerForLocalNotifications {\n    [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound + UNNotificationPresentationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) {\n        if (granted) {\n            NSLog(@\"Notification Permission Granted\");\n        }\n    }];\n}\n\n- (void) sendNotificationInBackground:(NSString *) trigger andMode: (CUEEngineMode) mode {\n    UNMutableNotificationContent *content = [UNMutableNotificationContent new];\n    content.sound = [UNNotificationSound defaultSound];\n    \n    // For specific trigger, create pre-set local notification\n    if ([trigger isEqualToString:@\"1.2.3\"]) {\n        content.title = @\"My Ultrasonic Notification\";\n        content.body = @\"Hello World!\";\n        \n    } else {\n        content.title = trigger;\n    }\n    \n    UNTimeIntervalNotificationTrigger *notificationTrigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];\n    NSString *identifier = @\"CUELocalNotification\";\n    UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier\n                                                                          content:content trigger:notificationTrigger];\n    \n    [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {\n        if (error != nil) {\n            NSLog(@\"Something went wrong: %@\",error);\n        }\n    }];\n}\n\n#pragma mark Keyboard\n\n- (void) setupKeyboardGesture {\n    UITapGestureRecognizer * dismissGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];\n    [self.view addGestureRecognizer:dismissGesture];\n}\n\n- (void) dismissKeyboard {\n    [self.view endEditing:true];\n}\n\n- (IBAction)clearOutput:(id)sender {\n    self.outputView.text = @\"\";\n}\n\n# pragma mark Buttons\n\n- (void)playButtonTapped {\n    [CUEEngine.sharedInstance startListening];\n    self.navigationItem.rightBarButtonItem = self.pauseButton;\n}\n\n- (void)pauseButtonTapped {\n    [CUEEngine.sharedInstance stopListening];\n    self.navigationItem.rightBarButtonItem = self.playButton;\n}\n\n- (void)issueAlertWithTitle: (NSString*)title\n                 andMessage: (NSString*)message \n{\n    UIAlertController *alert = [ UIAlertController\n        alertControllerWithTitle:title \n                         message:message\n                  preferredStyle:UIAlertControllerStyleAlert\n    ];\n\n    [alert addAction:[UIAlertAction actionWithTitle:@\"OK\" style:UIAlertActionStyleDefault handler:NULL]];\n    [self presentViewController:alert animated:YES completion:NULL];\n}\n\n# pragma mark Transmit\n\n- (IBAction)transmit:(id)sender {\n    CUE_ENGINE_ERROR validationResult = 0;\n    NSString* title = @\"\";\n    NSString* message = @\"\";\n\n    [[self view] endEditing:YES];\n\n    switch (self.selectedMode) {\n        case CUEEngineModeTrigger: {\n            if(self.triggerAsNumber) {\n                NSString* num_s = [[self textEntryField] text];\n                BOOL isNum = true;\n                for( int i = 0; i < [num_s length]; i++) {\n                    int c = [num_s characterAtIndex:i];\n                    isNum = isdigit(c);\n                    if(! isNum) {\n                        [self issueAlertWithTitle:@\"Invalid format\"\n                                       andMessage:@\"Should be a number in a range: 0-9861112 \"\n                                                  @\"for a CUEEngine generation 2 or 0-461 \"\n                                                  @\"for a CUEEngine generation 1\"];\n                        return;\n                    }\n                }\n                unsigned long number = (unsigned long) [num_s longLongValue];\n                validationResult = [CUEEngine.sharedInstance queueTriggerAsNumber:number];\n                if( validationResult == CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED ) {\n                    [ self issueAlertWithTitle:@\"Invalid Format\"\n                                    andMessage:@\"Trigger as number can not exceed 98611127 \"\n                                               @\"for a CUEEngine generation 2 or 461 \"\n                                               @\"for a CUEEngine generation 1\"];\n                }\n            } else {\n                NSString* triggerStr = [self.textEntryField.text stringByReplacingOccurrencesOfString:decimalPoint withString:@\".\"];\n\n                validationResult = [CUEEngine.sharedInstance queueTrigger:triggerStr];\n                if(validationResult < 0) {\n                    NSString* alertMsg = [\n                        NSString stringWithFormat:@\"Triggers must be of the format [0-461]%@[0-461]%@[0-461] \"\n                                                  @\"for a CUEEngine generation 2 or [0-461] \"\n                                                  @\"for a CUEEngine generation 1\",\n                        decimalPoint, decimalPoint ];\n     \n                    [ self issueAlertWithTitle:@\"Invalid Format\"\n                                    andMessage:alertMsg ];\n                }\n            }\n\n            break;\n        }\n        case CUEEngineModeMultiTrigger: {\n            if(self.triggerAsNumber) {\n                NSString* num_s = [[self textEntryField] text];\n                BOOL isNum = true;\n                for( int i = 0; i < [num_s length]; i++) {\n                    int c = [num_s characterAtIndex:i];\n                    isNum = isdigit(c);\n                    if(! isNum) {\n                        [self issueAlertWithTitle:@\"Invalid format\"\n                                       andMessage:@\"Should be a number in a range: 0-9724154565432383\"];\n                        return;\n                    }\n                }\n                long long number = (long long) [num_s longLongValue];\n                validationResult = [CUEEngine.sharedInstance queueMultiTriggerAsNumber:number];\n                if( validationResult == CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED ) {\n                    title = @\"Invalid Format\";\n                    message = @\"Multi-trigger as number can not exceed 972415456543238\";\n                } else if ( validationResult == CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED) {\n                    title = @\"Unsupported\";\n                    message = @\"Can not queue a multi-trigger for a CUEEngine generation 1\";\n                }\n            } else {\n                NSString* triggerStr = [self.textEntryField.text stringByReplacingOccurrencesOfString:decimalPoint withString:@\".\"];\n                validationResult = [CUEEngine.sharedInstance queueMultiTrigger:triggerStr];\n                if( validationResult == CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED ) {\n                    title = @\"Unsupported\";\n                    message = @\"Can not queue a multi-trigger for a CUEEngine generation 1\";\n                } else if (validationResult < 0) {\n                    title = @\"Invalid Format\";\n                    message = [ NSString stringWithFormat:\n                        @\"MultiTriggers must be of the format \"\n                        @\"[0-461]%@[0-461]%@[0-461]%@[0-461]%@[0-461]%@[0-461]\",\n                        decimalPoint, decimalPoint, decimalPoint, decimalPoint, decimalPoint ];\n                }\n            }\n\n            if( ![title  isEqual: @\"\"] && ![message  isEqual: @\"\"] ) {\n                [ self issueAlertWithTitle:title andMessage:message ];\n            }\n            break;\n        }\n        case CUEEngineModeLL: {\n            validationResult = [CUEEngine.sharedInstance queueLL:self.textEntryField.text];\n            if( validationResult == CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED ) {\n                title = @\"Unsupported\";\n                message = @\"Can not queue ll for a CUEEngine generation 1\";\n            } else if( validationResult == CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET ) {\n                title = @\"Unsupported\";\n                message = @\"Can not queue ll: please set a config mode to 'basic' or to 'll_only'\";\n            } else if( validationResult == CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE ) {\n                title = @\"Already active\";\n                message = @\"LL is already on in a config 'basic' mode, can not queue, please wait while it is off\";\n            } else if ( validationResult < 0 ){\n                title = @\"Invalid format\";\n                message = [ NSString stringWithFormat:\n                            @\"LL message must be of the format [0-125]%@[0-125]...\",\n                            decimalPoint ];\n            } else {\n                title = @\"\";\n                message = @\"\";\n            }\n            \n            if( ![title  isEqual: @\"\"] && ![message  isEqual: @\"\"] ) {\n                [ self issueAlertWithTitle:title andMessage:message ];\n            }\n            break;\n        }\n        case CUEEngineModeData: {\n            validationResult = [CUEEngine.sharedInstance queueMessage:self.textEntryField.text];\n            if(validationResult == CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED ) {\n                [ self issueAlertWithTitle:@\"Invalid Format\"\n                                andMessage:@\"Data stream can not containt more then 256 symbols\" ];\n            } else if( validationResult == CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED ) {\n                [ self issueAlertWithTitle:@\"Unsupported\"\n                                andMessage:@\"queue message: unsupported for a CUEEngine generation 1\" ];\n            }\n            break;\n        }\n        default:\n            break;\n    }\n}\n\n# pragma mark UIPickerView\n\n- (void) setupPickerView {\n    self.modePicker.delegate = self;\n    self.modePicker.dataSource = self;\n}\n\n- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {\n    return [self.modes count] + 2;\n}\n\n- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {\n    return 1;\n}\n\n- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {\n    switch (row) {\n        case 0:\n            return @\"Trigger\";\n        case 1:\n            return @\"Number\";\n        case 2:\n            return @\"MultiTrigger\";\n        case 3:\n            return @\"NumMultTrg\";\n        case 4:\n            return @\"LL\";\n        default:\n            return @\"Data\";\n    }\n}\n\n- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {\n    //self.selectedMode = [[self.modes objectAtIndex:row] integerValue];\n    self.triggerAsNumber = NO;\n\n    switch(row) {\n        case 0:\n            self.selectedMode = CUEEngineModeTrigger;\n            break;\n        case 1:\n            self.selectedMode = CUEEngineModeTrigger;\n            self.triggerAsNumber = YES;\n            break;\n        case 2:\n            self.selectedMode = CUEEngineModeMultiTrigger;\n            break;\n        case 3:\n            self.selectedMode = CUEEngineModeMultiTrigger;\n            self.triggerAsNumber = YES;\n            break;\n        case 4:\n            self.selectedMode = CUEEngineModeLL;\n            break;\n        default:\n            self.selectedMode = CUEEngineModeData;\n            break;\n    }\n\n    switch (self.selectedMode) {\n        case CUEEngineModeTrigger:{\n            if(self.triggerAsNumber) {\n                self.textEntryField.placeholder = @\"123123\";\n                [self setKeyboardType:UIKeyboardTypeNumberPad];\n            } else {\n                self.textEntryField.placeholder = [\n                    NSString stringWithFormat:@\"1%@2%@34\",\n                    decimalPoint, decimalPoint ];\n                [self setKeyboardType:UIKeyboardTypeDecimalPad];\n            }\n            break;\n        }\n        case CUEEngineModeMultiTrigger: {\n            if(self.triggerAsNumber) {\n                self.textEntryField.placeholder = @\"123123\";\n                [self setKeyboardType:UIKeyboardTypeNumberPad];\n            } else {\n                self.textEntryField.placeholder = [\n                    NSString stringWithFormat:@\"1%@2%@3%@4%@5%@6\",\n                    decimalPoint, decimalPoint, decimalPoint, decimalPoint, decimalPoint ];\n                [self setKeyboardType:UIKeyboardTypeDecimalPad];\n            }\n            break;\n        }\n        case CUEEngineModeLL: {\n            self.textEntryField.placeholder = [\n                NSString stringWithFormat:@\"10%@20%@30%@40 ...\",\n                decimalPoint, decimalPoint, decimalPoint ];\n            [self setKeyboardType:UIKeyboardTypeDecimalPad];\n            break;\n        }\n        case CUEEngineModeData:\n            self.textEntryField.placeholder = @\"Hello World\";\n            [self setKeyboardType:UIKeyboardTypeDefault];\n            break;\n        default:\n            break;\n    }\n}\n\n- (void)setKeyboardType:(UIKeyboardType)kbType\n{\n    self.textEntryField.keyboardType = kbType;\n    [self.textEntryField reloadInputViews];\n}\n\n# pragma mark UITextField\n\n- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason {\n    if (textField.text.length) {\n        self.sendButton.enabled = true;\n    } else self.sendButton.enabled = false;\n}\n\n- (void) setupTextEntryField {\n    self.textEntryField.delegate = self;\n    self.textEntryField.placeholder = [\n        NSString stringWithFormat:@\"1%@2%@34\", decimalPoint, decimalPoint ];\n    self.textEntryField.keyboardType = UIKeyboardTypeDecimalPad;\n}\n\n@end\n"
  },
  {
    "path": "iOS/consumer/consumer/main.m",
    "content": "//\n//  main.m\n//  objC_consumer\n//\n//  Created by π on 01/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n    @autoreleasepool {\n        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n    }\n}\n"
  },
  {
    "path": "iOS/consumer/consumer.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 52;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t90403B82212B25B500B49DE2 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90403B81212B25B500B49DE2 /* Accelerate.framework */; };\n\t\t90403B86212B25E300B49DE2 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 90403B85212B25E300B49DE2 /* libc++.tbd */; };\n\t\t905A3D6825FB2BCD00951DA9 /* engine.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 905A3D6625FB2AC200951DA9 /* engine.xcframework */; };\n\t\t905A3D6925FB2BCD00951DA9 /* engine.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 905A3D6625FB2AC200951DA9 /* engine.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };\n\t\t90646593212B1A6E00C0F4C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 90646592212B1A6E00C0F4C7 /* AppDelegate.m */; };\n\t\t90646596212B1A6E00C0F4C7 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90646595212B1A6E00C0F4C7 /* ViewController.m */; };\n\t\t90646599212B1A6E00C0F4C7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90646597212B1A6E00C0F4C7 /* Main.storyboard */; };\n\t\t9064659B212B1A7000C0F4C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9064659A212B1A7000C0F4C7 /* Assets.xcassets */; };\n\t\t9064659E212B1A7000C0F4C7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9064659C212B1A7000C0F4C7 /* LaunchScreen.storyboard */; };\n\t\t906465A1212B1A7000C0F4C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 906465A0212B1A7000C0F4C7 /* main.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t9070C0DD226F1C7400F547E6 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t905A3D6925FB2BCD00951DA9 /* engine.xcframework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t90403B81212B25B500B49DE2 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };\n\t\t90403B85212B25E300B49DE2 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = \"sourcecode.text-based-dylib-definition\"; name = \"libc++.tbd\"; path = \"usr/lib/libc++.tbd\"; sourceTree = SDKROOT; };\n\t\t905A3D6625FB2AC200951DA9 /* engine.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = engine.xcframework; sourceTree = \"<group>\"; };\n\t\t9064658E212B1A6E00C0F4C7 /* consumer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = consumer.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t90646591212B1A6E00C0F4C7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t90646592212B1A6E00C0F4C7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t90646594212B1A6E00C0F4C7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = \"<group>\"; };\n\t\t90646595212B1A6E00C0F4C7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = \"<group>\"; };\n\t\t90646598212B1A6E00C0F4C7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t9064659A212B1A7000C0F4C7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t9064659D212B1A7000C0F4C7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t9064659F212B1A7000C0F4C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t906465A0212B1A7000C0F4C7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t9064658B212B1A6E00C0F4C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t905A3D6825FB2BCD00951DA9 /* engine.xcframework in Frameworks */,\n\t\t\t\t90403B86212B25E300B49DE2 /* libc++.tbd in Frameworks */,\n\t\t\t\t90403B82212B25B500B49DE2 /* Accelerate.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t90403B7E212B25AA00B49DE2 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t905A3D6625FB2AC200951DA9 /* engine.xcframework */,\n\t\t\t\t90403B85212B25E300B49DE2 /* libc++.tbd */,\n\t\t\t\t90403B81212B25B500B49DE2 /* Accelerate.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90646585212B1A6E00C0F4C7 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90646590212B1A6E00C0F4C7 /* consumer */,\n\t\t\t\t9064658F212B1A6E00C0F4C7 /* Products */,\n\t\t\t\t90403B7E212B25AA00B49DE2 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t9064658F212B1A6E00C0F4C7 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9064658E212B1A6E00C0F4C7 /* consumer.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t90646590212B1A6E00C0F4C7 /* consumer */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90646591212B1A6E00C0F4C7 /* AppDelegate.h */,\n\t\t\t\t90646592212B1A6E00C0F4C7 /* AppDelegate.m */,\n\t\t\t\t90646594212B1A6E00C0F4C7 /* ViewController.h */,\n\t\t\t\t90646595212B1A6E00C0F4C7 /* ViewController.m */,\n\t\t\t\t90646597212B1A6E00C0F4C7 /* Main.storyboard */,\n\t\t\t\t9064659A212B1A7000C0F4C7 /* Assets.xcassets */,\n\t\t\t\t9064659C212B1A7000C0F4C7 /* LaunchScreen.storyboard */,\n\t\t\t\t9064659F212B1A7000C0F4C7 /* Info.plist */,\n\t\t\t\t906465A0212B1A7000C0F4C7 /* main.m */,\n\t\t\t);\n\t\t\tpath = consumer;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t9064658D212B1A6E00C0F4C7 /* consumer */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 906465A4212B1A7000C0F4C7 /* Build configuration list for PBXNativeTarget \"consumer\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9064658A212B1A6E00C0F4C7 /* Sources */,\n\t\t\t\t9064658B212B1A6E00C0F4C7 /* Frameworks */,\n\t\t\t\t9064658C212B1A6E00C0F4C7 /* Resources */,\n\t\t\t\t9070C0DD226F1C7400F547E6 /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = consumer;\n\t\t\tproductName = consumer;\n\t\t\tproductReference = 9064658E212B1A6E00C0F4C7 /* consumer.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t90646586212B1A6E00C0F4C7 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0940;\n\t\t\t\tORGANIZATIONNAME = \"CUE Audio\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t9064658D212B1A6E00C0F4C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 9.4.1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 90646589212B1A6E00C0F4C7 /* Build configuration list for PBXProject \"consumer-customer-xcf\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 90646585212B1A6E00C0F4C7;\n\t\t\tproductRefGroup = 9064658F212B1A6E00C0F4C7 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t9064658D212B1A6E00C0F4C7 /* consumer */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t9064658C212B1A6E00C0F4C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t9064659E212B1A7000C0F4C7 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t9064659B212B1A7000C0F4C7 /* Assets.xcassets in Resources */,\n\t\t\t\t90646599212B1A6E00C0F4C7 /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t9064658A212B1A6E00C0F4C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t90646596212B1A6E00C0F4C7 /* ViewController.m in Sources */,\n\t\t\t\t906465A1212B1A7000C0F4C7 /* main.m in Sources */,\n\t\t\t\t90646593212B1A6E00C0F4C7 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t90646597212B1A6E00C0F4C7 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t90646598212B1A6E00C0F4C7 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t9064659C212B1A7000C0F4C7 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t9064659D212B1A7000C0F4C7 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t906465A2212B1A7000C0F4C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t906465A3212B1A7000C0F4C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 11.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t906465A5212B1A7000C0F4C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = EL8TZV5FP2;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = consumer/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.cueaudio.engine.consumer;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t906465A6212B1A7000C0F4C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = EL8TZV5FP2;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = consumer/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.cueaudio.engine.consumer;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t90646589212B1A6E00C0F4C7 /* Build configuration list for PBXProject \"consumer-customer-xcf\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t906465A2212B1A7000C0F4C7 /* Debug */,\n\t\t\t\t906465A3212B1A7000C0F4C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t906465A4212B1A7000C0F4C7 /* Build configuration list for PBXNativeTarget \"consumer\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t906465A5212B1A7000C0F4C7 /* Debug */,\n\t\t\t\t906465A6212B1A7000C0F4C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 90646586212B1A6E00C0F4C7 /* Project object */;\n}\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>AvailableLibraries</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>LibraryIdentifier</key>\n\t\t\t<string>ios-arm64</string>\n\t\t\t<key>LibraryPath</key>\n\t\t\t<string>engine.framework</string>\n\t\t\t<key>SupportedArchitectures</key>\n\t\t\t<array>\n\t\t\t\t<string>arm64</string>\n\t\t\t</array>\n\t\t\t<key>SupportedPlatform</key>\n\t\t\t<string>ios</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>LibraryIdentifier</key>\n\t\t\t<string>ios-x86_64-simulator</string>\n\t\t\t<key>LibraryPath</key>\n\t\t\t<string>engine.framework</string>\n\t\t\t<key>SupportedArchitectures</key>\n\t\t\t<array>\n\t\t\t\t<string>x86_64</string>\n\t\t\t</array>\n\t\t\t<key>SupportedPlatform</key>\n\t\t\t<string>ios</string>\n\t\t\t<key>SupportedPlatformVariant</key>\n\t\t\t<string>simulator</string>\n\t\t</dict>\n\t</array>\n\t<key>CFBundlePackageType</key>\n\t<string>XFWK</string>\n\t<key>XCFrameworkFormatVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Headers/AudioSession.h",
    "content": "//\n//  AudioSession.h\n//  PiDetector\n//\n//  Created by Pi on 09/11/2010.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n\n#include <CoreAudio/CoreAudioTypes.h>\n// ^ for AudioStreamBasicDescription (digging thru AudioToolbox/AudioToolbox.h)\n\n// Must be power-of-2\n#define POT_AUDIOBUFLEN 256\n\n@interface AudioSession : NSObject\n\n+ (bool) setup;\n\n@end\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Headers/CUEEngine.h",
    "content": "//\n//  CUEEngine.h\n//  objC_consumer\n//\n//  Created by π on 12/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n#import \"CUEErrno.h\"\n\n@interface CUEEngine : NSObject\n\ntypedef void(^ReceiverCallback)( NSString* _Nonnull json );\ntypedef void(^RefreshPayloadsCallback)( void );\n\n+ (nonnull CUEEngine*) sharedInstance;\n\n- (void) didEnterForeground;\n\n// you can set the tone callback at any moment in the life-cycle of the object\n- (void) setReceiverCallback: (nonnull ReceiverCallback) blk;\n\n// NOTE: If you don't have microphone permission before you setup,\n//         iOS will automatically request it.\n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey; \n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey \n           andWithConfig: (nonnull NSString*) config;\n\n// this will trigger an assertion failure if setup didn't complete\n- (void) startListening;\n\n- (void) feed:(null_unspecified float*) bufOfFloats\n   withNSamps:(int) nSamps\n andWithSRate:(double) sRate;\n\n- (void) stopListening;\n\n- (BOOL) isListening;\n\n- (BOOL) didSetup;\n\n- (CUE_ENGINE_ERROR) queueLive:                 (nonnull NSString*) live;\n- (CUE_ENGINE_ERROR) queueLL:                   (nonnull NSString*) message;\n- (CUE_ENGINE_ERROR) queueTrigger:              (nonnull NSString*) trigger;\n- (CUE_ENGINE_ERROR) queueTriggerAsNumber:      (unsigned long) n;\n- (CUE_ENGINE_ERROR) queueMultiTrigger:         (nonnull NSString*) multiTrigger;\n- (CUE_ENGINE_ERROR) queueMultiTriggerAsNumber: (const long long) n;\n- (CUE_ENGINE_ERROR) queueData:                 (nonnull NSString*) data;\n- (CUE_ENGINE_ERROR) queueMessage:              (nonnull NSString*) message;\n\n- (nonnull NSString*) getEngineDeviceId;\n\n- (void) setDefaultGeneration: (int) g;\n\n- (void) refreshPayloads: (nonnull RefreshPayloadsCallback) blk;\n- (nonnull NSDictionary*) getPayload: (nonnull NSString*) trigger;\n\n@end\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Headers/CUEErrno.h",
    "content": "#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUE_ENGINE_ERROR) {\n    CUE_ENGINE_SUCCESS = 0,\n    CUE_ENGINE_ERR_UNKNOWN = -100,\n    CUE_ENGINE_ERR_QUEUE_TRIGGER_NO_ACTIVE_TRANSMITTER = -1,\n    CUE_ENGINE_ERR_QUEUE_MESSAGE_NO_ACTIVE_TRANSMITTER = -2,\n    CUE_ENGINE_ERR_NUMBER_OF_SYMBOLS_MISMATCH = -3,\n    CUE_ENGINE_ERR_SYMBOL_NOT_A_NUMBER = -5,\n    CUE_ENGINE_ERR_NO_ACTIVE_TRANSMITTER = -6,\n    CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -7,\n    CUE_ENGINE_ERR_INDEX_VALUE_EXCEEDED = -8,\n    CUE_ENGINE_ERR_UNSUPPORTED_ENGINE_GENERATION = -9,\n    CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -10,\n    CUE_ENGINE_ERR_GEN_LIVE_UNSUPPORTED = -11,\n    CUE_ENGINE_ERR_QUEUE_LIVE_UNSUPPORTED = -12,\n    CUE_ENGINE_ERR_G1_NUMBER_OF_SYMBOLS_EXCEEDED = -102,\n    CUE_ENGINE_ERR_G1_GEN_MESSAGE_UNSUPPORTED = -103,\n    CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED = -104,\n    CUE_ENGINE_ERR_G1_GEN_LL_UNSUPPORTED = -105,\n    CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED = -106,\n    CUE_ENGINE_ERR_G1_QUEUE_DATA_UNSUPPORTED = -107,\n    CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED = -108,\n    CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED = -201,\n    CUE_ENGINE_ERR_G2_QUEUE_DATA_UNSUPPORTED = -203,\n    CUE_ENGINE_ERR_G2_QUEUE_TRIGGER_NON_BASIC_MODE_IS_USED = -204,\n    CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -205,\n    CUE_ENGINE_ERR_G2_GEN_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -206,\n    CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE = -207\n};\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Headers/CUETrigger.h",
    "content": "//\n//  CUETrigger.h\n//  engine\n//\n//  Created by Jameson Rader on 6/25/19.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUEEngineMode) {\n    CUEEngineModeUnknown = -1,\n    CUEEngineModeTrigger = 0,\n    CUEEngineModeMultiTrigger = 1,\n    CUEEngineModeLive = 2,\n    CUEEngineModeLL = 3,\n    CUEEngineModeData = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CUETrigger : NSObject\n\n@property int generation;\n@property CUEEngineMode mode;\n\n@property double latencyMs;\n@property double noise;\n@property double power;\n\n@property NSString *rawIndices;\n@property (nullable) NSArray<NSNumber *> *rawCalibrations;\n@property (nullable) NSArray<NSArray<NSNumber *>*> *rawTrigger;\n\n@property NSString *winnerIndices;\n@property long long triggerAsNumber;\n\n@property NSString *rawJsonString;\n\n@property (nullable) NSString *message;\n\n@property NSDictionary *payload;\n\n- (instancetype)initWithJsonString: (NSString *) jsonString;\n\n+ (NSString *) modeAsString: (CUEEngineMode) mode;\n+ (NSString *) formatFullData: (CUETrigger *) trigger;\n+ (NSString *) formatPartialData: (CUETrigger *) trigger;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>engine</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.cueaudio</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>MinimumOSVersion</key>\n\t<string>10.3</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.33.1</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.33.1</string>\n\t<key>CSResourcesFileMapped</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-arm64/engine.framework/Modules/module.modulemap",
    "content": "framework module engine {\n  module CUEEngine {\n    header \"CUEEngine.h\"\n  }\n\n  module AudioSession {\n    header \"AudioSession.h\"\n  }\n\n  module CUETrigger {\n    header \"CUETrigger.h\"\n  }\n\n  module CUEErrno {\n    header \"CUEErrno.h\"\n  }\n}\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/AudioSession.h",
    "content": "//\n//  AudioSession.h\n//  PiDetector\n//\n//  Created by Pi on 09/11/2010.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n\n#include <CoreAudio/CoreAudioTypes.h>\n// ^ for AudioStreamBasicDescription (digging thru AudioToolbox/AudioToolbox.h)\n\n// Must be power-of-2\n#define POT_AUDIOBUFLEN 256\n\n@interface AudioSession : NSObject\n\n+ (bool) setup;\n\n@end\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUEEngine.h",
    "content": "//\n//  CUEEngine.h\n//  objC_consumer\n//\n//  Created by π on 12/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n#import \"CUEErrno.h\"\n\n@interface CUEEngine : NSObject\n\ntypedef void(^ReceiverCallback)( NSString* _Nonnull json );\ntypedef void(^RefreshPayloadsCallback)( void );\n\n+ (nonnull CUEEngine*) sharedInstance;\n\n- (void) didEnterForeground;\n\n// you can set the tone callback at any moment in the life-cycle of the object\n- (void) setReceiverCallback: (nonnull ReceiverCallback) blk;\n\n// NOTE: If you don't have microphone permission before you setup,\n//         iOS will automatically request it.\n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey; \n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey \n           andWithConfig: (nonnull NSString*) config;\n\n// this will trigger an assertion failure if setup didn't complete\n- (void) startListening;\n\n- (void) feed:(null_unspecified float*) bufOfFloats\n   withNSamps:(int) nSamps\n andWithSRate:(double) sRate;\n\n- (void) stopListening;\n\n- (BOOL) isListening;\n\n- (BOOL) didSetup;\n\n- (CUE_ENGINE_ERROR) queueLive:                 (nonnull NSString*) live;\n- (CUE_ENGINE_ERROR) queueLL:                   (nonnull NSString*) message;\n- (CUE_ENGINE_ERROR) queueTrigger:              (nonnull NSString*) trigger;\n- (CUE_ENGINE_ERROR) queueTriggerAsNumber:      (unsigned long) n;\n- (CUE_ENGINE_ERROR) queueMultiTrigger:         (nonnull NSString*) multiTrigger;\n- (CUE_ENGINE_ERROR) queueMultiTriggerAsNumber: (const long long) n;\n- (CUE_ENGINE_ERROR) queueData:                 (nonnull NSString*) data;\n- (CUE_ENGINE_ERROR) queueMessage:              (nonnull NSString*) message;\n\n- (nonnull NSString*) getEngineDeviceId;\n\n- (void) setDefaultGeneration: (int) g;\n\n- (void) refreshPayloads: (nonnull RefreshPayloadsCallback) blk;\n- (nonnull NSDictionary*) getPayload: (nonnull NSString*) trigger;\n\n@end\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUEErrno.h",
    "content": "#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUE_ENGINE_ERROR) {\n    CUE_ENGINE_SUCCESS = 0,\n    CUE_ENGINE_ERR_UNKNOWN = -100,\n    CUE_ENGINE_ERR_QUEUE_TRIGGER_NO_ACTIVE_TRANSMITTER = -1,\n    CUE_ENGINE_ERR_QUEUE_MESSAGE_NO_ACTIVE_TRANSMITTER = -2,\n    CUE_ENGINE_ERR_NUMBER_OF_SYMBOLS_MISMATCH = -3,\n    CUE_ENGINE_ERR_SYMBOL_NOT_A_NUMBER = -5,\n    CUE_ENGINE_ERR_NO_ACTIVE_TRANSMITTER = -6,\n    CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -7,\n    CUE_ENGINE_ERR_INDEX_VALUE_EXCEEDED = -8,\n    CUE_ENGINE_ERR_UNSUPPORTED_ENGINE_GENERATION = -9,\n    CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -10,\n    CUE_ENGINE_ERR_GEN_LIVE_UNSUPPORTED = -11,\n    CUE_ENGINE_ERR_QUEUE_LIVE_UNSUPPORTED = -12,\n    CUE_ENGINE_ERR_G1_NUMBER_OF_SYMBOLS_EXCEEDED = -102,\n    CUE_ENGINE_ERR_G1_GEN_MESSAGE_UNSUPPORTED = -103,\n    CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED = -104,\n    CUE_ENGINE_ERR_G1_GEN_LL_UNSUPPORTED = -105,\n    CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED = -106,\n    CUE_ENGINE_ERR_G1_QUEUE_DATA_UNSUPPORTED = -107,\n    CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED = -108,\n    CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED = -201,\n    CUE_ENGINE_ERR_G2_QUEUE_DATA_UNSUPPORTED = -203,\n    CUE_ENGINE_ERR_G2_QUEUE_TRIGGER_NON_BASIC_MODE_IS_USED = -204,\n    CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -205,\n    CUE_ENGINE_ERR_G2_GEN_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -206,\n    CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE = -207\n};\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUETrigger.h",
    "content": "//\n//  CUETrigger.h\n//  engine\n//\n//  Created by Jameson Rader on 6/25/19.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUEEngineMode) {\n    CUEEngineModeUnknown = -1,\n    CUEEngineModeTrigger = 0,\n    CUEEngineModeMultiTrigger = 1,\n    CUEEngineModeLive = 2,\n    CUEEngineModeLL = 3,\n    CUEEngineModeData = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CUETrigger : NSObject\n\n@property int generation;\n@property CUEEngineMode mode;\n\n@property double latencyMs;\n@property double noise;\n@property double power;\n\n@property NSString *rawIndices;\n@property (nullable) NSArray<NSNumber *> *rawCalibrations;\n@property (nullable) NSArray<NSArray<NSNumber *>*> *rawTrigger;\n\n@property NSString *winnerIndices;\n@property long long triggerAsNumber;\n\n@property NSString *rawJsonString;\n\n@property (nullable) NSString *message;\n\n@property NSDictionary *payload;\n\n- (instancetype)initWithJsonString: (NSString *) jsonString;\n\n+ (NSString *) modeAsString: (CUEEngineMode) mode;\n+ (NSString *) formatFullData: (CUETrigger *) trigger;\n+ (NSString *) formatPartialData: (CUETrigger *) trigger;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>engine</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.cueaudio</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>MinimumOSVersion</key>\n\t<string>10.3</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.33.1</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.33.1</string>\n\t<key>CSResourcesFileMapped</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/consumer/engine.xcframework/ios-x86_64-simulator/engine.framework/Modules/module.modulemap",
    "content": "framework module engine {\n  module CUEEngine {\n    header \"CUEEngine.h\"\n  }\n\n  module AudioSession {\n    header \"AudioSession.h\"\n  }\n\n  module CUETrigger {\n    header \"CUETrigger.h\"\n  }\n\n  module CUEErrno {\n    header \"CUEErrno.h\"\n  }\n}\n"
  },
  {
    "path": "iOS/engine.framework/Headers/AudioSession.h",
    "content": "//\n//  AudioSession.h\n//  PiDetector\n//\n//  Created by Pi on 09/11/2010.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n\n#include <CoreAudio/CoreAudioTypes.h>\n// ^ for AudioStreamBasicDescription (digging thru AudioToolbox/AudioToolbox.h)\n\n// Must be power-of-2\n#define POT_AUDIOBUFLEN 256\n\n@interface AudioSession : NSObject\n\n+ (bool) setup;\n\n@end\n"
  },
  {
    "path": "iOS/engine.framework/Headers/CUEEngine.h",
    "content": "//\n//  CUEEngine.h\n//  objC_consumer\n//\n//  Created by π on 12/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n#import \"CUEErrno.h\"\n\n@interface CUEEngine : NSObject\n\ntypedef void(^ReceiverCallback)( NSString* _Nonnull json );\ntypedef void(^RefreshPayloadsCallback)( void );\n\n+ (nonnull CUEEngine*) sharedInstance;\n\n- (void) didEnterForeground;\n\n// you can set the tone callback at any moment in the life-cycle of the object\n- (void) setReceiverCallback: (nonnull ReceiverCallback) blk;\n\n// NOTE: If you don't have microphone permission before you setup,\n//         iOS will automatically request it.\n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey; \n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey \n           andWithConfig: (nonnull NSString*) config;\n\n// this will trigger an assertion failure if setup didn't complete\n- (void) startListening;\n\n- (void) feed:(null_unspecified float*) bufOfFloats\n   withNSamps:(int) nSamps\n andWithSRate:(double) sRate;\n\n- (void) stopListening;\n\n- (BOOL) isListening;\n\n- (BOOL) didSetup;\n\n- (CUE_ENGINE_ERROR) queueLive:                 (nonnull NSString*) live;\n- (CUE_ENGINE_ERROR) queueLL:                   (nonnull NSString*) message;\n- (CUE_ENGINE_ERROR) queueTrigger:              (nonnull NSString*) trigger;\n- (CUE_ENGINE_ERROR) queueTriggerAsNumber:      (unsigned long) n;\n- (CUE_ENGINE_ERROR) queueMultiTrigger:         (nonnull NSString*) multiTrigger;\n- (CUE_ENGINE_ERROR) queueMultiTriggerAsNumber: (const long long) n;\n- (CUE_ENGINE_ERROR) queueData:                 (nonnull NSString*) data;\n- (CUE_ENGINE_ERROR) queueMessage:              (nonnull NSString*) message;\n\n- (nonnull NSString*) getEngineDeviceId;\n\n- (void) setDefaultGeneration: (int) g;\n\n- (void) refreshPayloads: (nonnull RefreshPayloadsCallback) blk;\n- (nonnull NSDictionary*) getPayload: (nonnull NSString*) trigger;\n\n@end\n"
  },
  {
    "path": "iOS/engine.framework/Headers/CUEErrno.h",
    "content": "#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUE_ENGINE_ERROR) {\n    CUE_ENGINE_SUCCESS = 0,\n    CUE_ENGINE_ERR_UNKNOWN = -100,\n    CUE_ENGINE_ERR_QUEUE_TRIGGER_NO_ACTIVE_TRANSMITTER = -1,\n    CUE_ENGINE_ERR_QUEUE_MESSAGE_NO_ACTIVE_TRANSMITTER = -2,\n    CUE_ENGINE_ERR_NUMBER_OF_SYMBOLS_MISMATCH = -3,\n    CUE_ENGINE_ERR_SYMBOL_NOT_A_NUMBER = -5,\n    CUE_ENGINE_ERR_NO_ACTIVE_TRANSMITTER = -6,\n    CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -7,\n    CUE_ENGINE_ERR_INDEX_VALUE_EXCEEDED = -8,\n    CUE_ENGINE_ERR_UNSUPPORTED_ENGINE_GENERATION = -9,\n    CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -10,\n    CUE_ENGINE_ERR_GEN_LIVE_UNSUPPORTED = -11,\n    CUE_ENGINE_ERR_QUEUE_LIVE_UNSUPPORTED = -12,\n    CUE_ENGINE_ERR_G1_NUMBER_OF_SYMBOLS_EXCEEDED = -102,\n    CUE_ENGINE_ERR_G1_GEN_MESSAGE_UNSUPPORTED = -103,\n    CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED = -104,\n    CUE_ENGINE_ERR_G1_GEN_LL_UNSUPPORTED = -105,\n    CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED = -106,\n    CUE_ENGINE_ERR_G1_QUEUE_DATA_UNSUPPORTED = -107,\n    CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED = -108,\n    CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED = -201,\n    CUE_ENGINE_ERR_G2_QUEUE_DATA_UNSUPPORTED = -203,\n    CUE_ENGINE_ERR_G2_QUEUE_TRIGGER_NON_BASIC_MODE_IS_USED = -204,\n    CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -205,\n    CUE_ENGINE_ERR_G2_GEN_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -206,\n    CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE = -207\n};\n"
  },
  {
    "path": "iOS/engine.framework/Headers/CUETrigger.h",
    "content": "//\n//  CUETrigger.h\n//  engine\n//\n//  Created by Jameson Rader on 6/25/19.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUEEngineMode) {\n    CUEEngineModeUnknown = -1,\n    CUEEngineModeTrigger = 0,\n    CUEEngineModeMultiTrigger = 1,\n    CUEEngineModeLive = 2,\n    CUEEngineModeLL = 3,\n    CUEEngineModeData = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CUETrigger : NSObject\n\n@property int generation;\n@property CUEEngineMode mode;\n\n@property double latencyMs;\n@property double noise;\n@property double power;\n\n@property NSString *rawIndices;\n@property (nullable) NSArray<NSNumber *> *rawCalibrations;\n@property (nullable) NSArray<NSArray<NSNumber *>*> *rawTrigger;\n\n@property NSString *winnerIndices;\n@property long long triggerAsNumber;\n\n@property NSString *rawJsonString;\n\n@property (nullable) NSString *message;\n\n@property NSDictionary *payload;\n\n- (instancetype)initWithJsonString: (NSString *) jsonString;\n\n+ (NSString *) modeAsString: (CUEEngineMode) mode;\n+ (NSString *) formatFullData: (CUETrigger *) trigger;\n+ (NSString *) formatPartialData: (CUETrigger *) trigger;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "iOS/engine.framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>engine</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.cueaudio</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>MinimumOSVersion</key>\n\t<string>10.3</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.33.1</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.33.1</string>\n\t<key>CSResourcesFileMapped</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/engine.framework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/engine.framework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/engine.framework/Modules/module.modulemap",
    "content": "framework module engine {\n  module CUEEngine {\n    header \"CUEEngine.h\"\n  }\n\n  module AudioSession {\n    header \"AudioSession.h\"\n  }\n\n  module CUETrigger {\n    header \"CUETrigger.h\"\n  }\n\n  module CUEErrno {\n    header \"CUEErrno.h\"\n  }\n}\n"
  },
  {
    "path": "iOS/engine.xcframework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>AvailableLibraries</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>LibraryIdentifier</key>\n\t\t\t<string>ios-arm64</string>\n\t\t\t<key>LibraryPath</key>\n\t\t\t<string>engine.framework</string>\n\t\t\t<key>SupportedArchitectures</key>\n\t\t\t<array>\n\t\t\t\t<string>arm64</string>\n\t\t\t</array>\n\t\t\t<key>SupportedPlatform</key>\n\t\t\t<string>ios</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>LibraryIdentifier</key>\n\t\t\t<string>ios-x86_64-simulator</string>\n\t\t\t<key>LibraryPath</key>\n\t\t\t<string>engine.framework</string>\n\t\t\t<key>SupportedArchitectures</key>\n\t\t\t<array>\n\t\t\t\t<string>x86_64</string>\n\t\t\t</array>\n\t\t\t<key>SupportedPlatform</key>\n\t\t\t<string>ios</string>\n\t\t\t<key>SupportedPlatformVariant</key>\n\t\t\t<string>simulator</string>\n\t\t</dict>\n\t</array>\n\t<key>CFBundlePackageType</key>\n\t<string>XFWK</string>\n\t<key>XCFrameworkFormatVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/engine.xcframework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/engine.xcframework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Headers/AudioSession.h",
    "content": "//\n//  AudioSession.h\n//  PiDetector\n//\n//  Created by Pi on 09/11/2010.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n\n#include <CoreAudio/CoreAudioTypes.h>\n// ^ for AudioStreamBasicDescription (digging thru AudioToolbox/AudioToolbox.h)\n\n// Must be power-of-2\n#define POT_AUDIOBUFLEN 256\n\n@interface AudioSession : NSObject\n\n+ (bool) setup;\n\n@end\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Headers/CUEEngine.h",
    "content": "//\n//  CUEEngine.h\n//  objC_consumer\n//\n//  Created by π on 12/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n#import \"CUEErrno.h\"\n\n@interface CUEEngine : NSObject\n\ntypedef void(^ReceiverCallback)( NSString* _Nonnull json );\ntypedef void(^RefreshPayloadsCallback)( void );\n\n+ (nonnull CUEEngine*) sharedInstance;\n\n- (void) didEnterForeground;\n\n// you can set the tone callback at any moment in the life-cycle of the object\n- (void) setReceiverCallback: (nonnull ReceiverCallback) blk;\n\n// NOTE: If you don't have microphone permission before you setup,\n//         iOS will automatically request it.\n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey; \n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey \n           andWithConfig: (nonnull NSString*) config;\n\n// this will trigger an assertion failure if setup didn't complete\n- (void) startListening;\n\n- (void) feed:(null_unspecified float*) bufOfFloats\n   withNSamps:(int) nSamps\n andWithSRate:(double) sRate;\n\n- (void) stopListening;\n\n- (BOOL) isListening;\n\n- (BOOL) didSetup;\n\n- (CUE_ENGINE_ERROR) queueLive:                 (nonnull NSString*) live;\n- (CUE_ENGINE_ERROR) queueLL:                   (nonnull NSString*) message;\n- (CUE_ENGINE_ERROR) queueTrigger:              (nonnull NSString*) trigger;\n- (CUE_ENGINE_ERROR) queueTriggerAsNumber:      (unsigned long) n;\n- (CUE_ENGINE_ERROR) queueMultiTrigger:         (nonnull NSString*) multiTrigger;\n- (CUE_ENGINE_ERROR) queueMultiTriggerAsNumber: (const long long) n;\n- (CUE_ENGINE_ERROR) queueData:                 (nonnull NSString*) data;\n- (CUE_ENGINE_ERROR) queueMessage:              (nonnull NSString*) message;\n\n- (nonnull NSString*) getEngineDeviceId;\n\n- (void) setDefaultGeneration: (int) g;\n\n- (void) refreshPayloads: (nonnull RefreshPayloadsCallback) blk;\n- (nonnull NSDictionary*) getPayload: (nonnull NSString*) trigger;\n\n@end\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Headers/CUEErrno.h",
    "content": "#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUE_ENGINE_ERROR) {\n    CUE_ENGINE_SUCCESS = 0,\n    CUE_ENGINE_ERR_UNKNOWN = -100,\n    CUE_ENGINE_ERR_QUEUE_TRIGGER_NO_ACTIVE_TRANSMITTER = -1,\n    CUE_ENGINE_ERR_QUEUE_MESSAGE_NO_ACTIVE_TRANSMITTER = -2,\n    CUE_ENGINE_ERR_NUMBER_OF_SYMBOLS_MISMATCH = -3,\n    CUE_ENGINE_ERR_SYMBOL_NOT_A_NUMBER = -5,\n    CUE_ENGINE_ERR_NO_ACTIVE_TRANSMITTER = -6,\n    CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -7,\n    CUE_ENGINE_ERR_INDEX_VALUE_EXCEEDED = -8,\n    CUE_ENGINE_ERR_UNSUPPORTED_ENGINE_GENERATION = -9,\n    CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -10,\n    CUE_ENGINE_ERR_GEN_LIVE_UNSUPPORTED = -11,\n    CUE_ENGINE_ERR_QUEUE_LIVE_UNSUPPORTED = -12,\n    CUE_ENGINE_ERR_G1_NUMBER_OF_SYMBOLS_EXCEEDED = -102,\n    CUE_ENGINE_ERR_G1_GEN_MESSAGE_UNSUPPORTED = -103,\n    CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED = -104,\n    CUE_ENGINE_ERR_G1_GEN_LL_UNSUPPORTED = -105,\n    CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED = -106,\n    CUE_ENGINE_ERR_G1_QUEUE_DATA_UNSUPPORTED = -107,\n    CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED = -108,\n    CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED = -201,\n    CUE_ENGINE_ERR_G2_QUEUE_DATA_UNSUPPORTED = -203,\n    CUE_ENGINE_ERR_G2_QUEUE_TRIGGER_NON_BASIC_MODE_IS_USED = -204,\n    CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -205,\n    CUE_ENGINE_ERR_G2_GEN_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -206,\n    CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE = -207\n};\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Headers/CUETrigger.h",
    "content": "//\n//  CUETrigger.h\n//  engine\n//\n//  Created by Jameson Rader on 6/25/19.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUEEngineMode) {\n    CUEEngineModeUnknown = -1,\n    CUEEngineModeTrigger = 0,\n    CUEEngineModeMultiTrigger = 1,\n    CUEEngineModeLive = 2,\n    CUEEngineModeLL = 3,\n    CUEEngineModeData = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CUETrigger : NSObject\n\n@property int generation;\n@property CUEEngineMode mode;\n\n@property double latencyMs;\n@property double noise;\n@property double power;\n\n@property NSString *rawIndices;\n@property (nullable) NSArray<NSNumber *> *rawCalibrations;\n@property (nullable) NSArray<NSArray<NSNumber *>*> *rawTrigger;\n\n@property NSString *winnerIndices;\n@property long long triggerAsNumber;\n\n@property NSString *rawJsonString;\n\n@property (nullable) NSString *message;\n\n@property NSDictionary *payload;\n\n- (instancetype)initWithJsonString: (NSString *) jsonString;\n\n+ (NSString *) modeAsString: (CUEEngineMode) mode;\n+ (NSString *) formatFullData: (CUETrigger *) trigger;\n+ (NSString *) formatPartialData: (CUETrigger *) trigger;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>engine</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.cueaudio</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>MinimumOSVersion</key>\n\t<string>10.3</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.33.1</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.33.1</string>\n\t<key>CSResourcesFileMapped</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-arm64/engine.framework/Modules/module.modulemap",
    "content": "framework module engine {\n  module CUEEngine {\n    header \"CUEEngine.h\"\n  }\n\n  module AudioSession {\n    header \"AudioSession.h\"\n  }\n\n  module CUETrigger {\n    header \"CUETrigger.h\"\n  }\n\n  module CUEErrno {\n    header \"CUEErrno.h\"\n  }\n}\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/AudioSession.h",
    "content": "//\n//  AudioSession.h\n//  PiDetector\n//\n//  Created by Pi on 09/11/2010.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n\n#include <CoreAudio/CoreAudioTypes.h>\n// ^ for AudioStreamBasicDescription (digging thru AudioToolbox/AudioToolbox.h)\n\n// Must be power-of-2\n#define POT_AUDIOBUFLEN 256\n\n@interface AudioSession : NSObject\n\n+ (bool) setup;\n\n@end\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUEEngine.h",
    "content": "//\n//  CUEEngine.h\n//  objC_consumer\n//\n//  Created by π on 12/03/2018.\n//  Copyright © 2018 π. All rights reserved.\n//\n\n#pragma once\n\n#import <Foundation/Foundation.h>\n#import \"CUEErrno.h\"\n\n@interface CUEEngine : NSObject\n\ntypedef void(^ReceiverCallback)( NSString* _Nonnull json );\ntypedef void(^RefreshPayloadsCallback)( void );\n\n+ (nonnull CUEEngine*) sharedInstance;\n\n- (void) didEnterForeground;\n\n// you can set the tone callback at any moment in the life-cycle of the object\n- (void) setReceiverCallback: (nonnull ReceiverCallback) blk;\n\n// NOTE: If you don't have microphone permission before you setup,\n//         iOS will automatically request it.\n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey; \n\n- (void) setupWithAPIKey: (nonnull NSString*) apiKey \n           andWithConfig: (nonnull NSString*) config;\n\n// this will trigger an assertion failure if setup didn't complete\n- (void) startListening;\n\n- (void) feed:(null_unspecified float*) bufOfFloats\n   withNSamps:(int) nSamps\n andWithSRate:(double) sRate;\n\n- (void) stopListening;\n\n- (BOOL) isListening;\n\n- (BOOL) didSetup;\n\n- (CUE_ENGINE_ERROR) queueLive:                 (nonnull NSString*) live;\n- (CUE_ENGINE_ERROR) queueLL:                   (nonnull NSString*) message;\n- (CUE_ENGINE_ERROR) queueTrigger:              (nonnull NSString*) trigger;\n- (CUE_ENGINE_ERROR) queueTriggerAsNumber:      (unsigned long) n;\n- (CUE_ENGINE_ERROR) queueMultiTrigger:         (nonnull NSString*) multiTrigger;\n- (CUE_ENGINE_ERROR) queueMultiTriggerAsNumber: (const long long) n;\n- (CUE_ENGINE_ERROR) queueData:                 (nonnull NSString*) data;\n- (CUE_ENGINE_ERROR) queueMessage:              (nonnull NSString*) message;\n\n- (nonnull NSString*) getEngineDeviceId;\n\n- (void) setDefaultGeneration: (int) g;\n\n- (void) refreshPayloads: (nonnull RefreshPayloadsCallback) blk;\n- (nonnull NSDictionary*) getPayload: (nonnull NSString*) trigger;\n\n@end\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUEErrno.h",
    "content": "#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUE_ENGINE_ERROR) {\n    CUE_ENGINE_SUCCESS = 0,\n    CUE_ENGINE_ERR_UNKNOWN = -100,\n    CUE_ENGINE_ERR_QUEUE_TRIGGER_NO_ACTIVE_TRANSMITTER = -1,\n    CUE_ENGINE_ERR_QUEUE_MESSAGE_NO_ACTIVE_TRANSMITTER = -2,\n    CUE_ENGINE_ERR_NUMBER_OF_SYMBOLS_MISMATCH = -3,\n    CUE_ENGINE_ERR_SYMBOL_NOT_A_NUMBER = -5,\n    CUE_ENGINE_ERR_NO_ACTIVE_TRANSMITTER = -6,\n    CUE_ENGINE_ERR_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -7,\n    CUE_ENGINE_ERR_INDEX_VALUE_EXCEEDED = -8,\n    CUE_ENGINE_ERR_UNSUPPORTED_ENGINE_GENERATION = -9,\n    CUE_ENGINE_ERR_MULTI_TRIGGER_AS_NUMBER_MAX_NUMBER_EXCEEDED = -10,\n    CUE_ENGINE_ERR_GEN_LIVE_UNSUPPORTED = -11,\n    CUE_ENGINE_ERR_QUEUE_LIVE_UNSUPPORTED = -12,\n    CUE_ENGINE_ERR_G1_NUMBER_OF_SYMBOLS_EXCEEDED = -102,\n    CUE_ENGINE_ERR_G1_GEN_MESSAGE_UNSUPPORTED = -103,\n    CUE_ENGINE_ERR_G1_QUEUE_LL_UNSUPPORTED = -104,\n    CUE_ENGINE_ERR_G1_GEN_LL_UNSUPPORTED = -105,\n    CUE_ENGINE_ERR_G1_QUEUE_MULTI_TRIGGER_UNSUPPORTED = -106,\n    CUE_ENGINE_ERR_G1_QUEUE_DATA_UNSUPPORTED = -107,\n    CUE_ENGINE_ERR_G1_QUEUE_MESSAGE_UNSUPPORTED = -108,\n    CUE_ENGINE_ERR_G2_MESSAGE_STRING_SIZE_IN_BYTES_EXCEEDED = -201,\n    CUE_ENGINE_ERR_G2_QUEUE_DATA_UNSUPPORTED = -203,\n    CUE_ENGINE_ERR_G2_QUEUE_TRIGGER_NON_BASIC_MODE_IS_USED = -204,\n    CUE_ENGINE_ERR_G2_QUEUE_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -205,\n    CUE_ENGINE_ERR_G2_GEN_LL_MODE_LL_ONLY_OR_MODE_BASIC_SHOULD_BE_SET = -206,\n    CUE_ENGINE_ERR_G2_LL_IS_ON_IN_BASIC_CAN_NOT_QUEUE = -207\n};\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Headers/CUETrigger.h",
    "content": "//\n//  CUETrigger.h\n//  engine\n//\n//  Created by Jameson Rader on 6/25/19.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef NS_ENUM(NSInteger, CUEEngineMode) {\n    CUEEngineModeUnknown = -1,\n    CUEEngineModeTrigger = 0,\n    CUEEngineModeMultiTrigger = 1,\n    CUEEngineModeLive = 2,\n    CUEEngineModeLL = 3,\n    CUEEngineModeData = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CUETrigger : NSObject\n\n@property int generation;\n@property CUEEngineMode mode;\n\n@property double latencyMs;\n@property double noise;\n@property double power;\n\n@property NSString *rawIndices;\n@property (nullable) NSArray<NSNumber *> *rawCalibrations;\n@property (nullable) NSArray<NSArray<NSNumber *>*> *rawTrigger;\n\n@property NSString *winnerIndices;\n@property long long triggerAsNumber;\n\n@property NSString *rawJsonString;\n\n@property (nullable) NSString *message;\n\n@property NSDictionary *payload;\n\n- (instancetype)initWithJsonString: (NSString *) jsonString;\n\n+ (NSString *) modeAsString: (CUEEngineMode) mode;\n+ (NSString *) formatFullData: (CUETrigger *) trigger;\n+ (NSString *) formatPartialData: (CUETrigger *) trigger;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>engine</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.cueaudio</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>MinimumOSVersion</key>\n\t<string>10.3</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.33.1</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.33.1</string>\n\t<key>CSResourcesFileMapped</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/LICENSE/3rd_party/CREDITS-LIBC++.TXT",
    "content": "This file is a partial list of people who have contributed to the LLVM/libc++\nproject.  If you have contributed a patch or made some other contribution to\nLLVM/libc++, please submit a patch to this file to add yourself, and it will be\ndone!\n\nThe list is sorted by surname and formatted to allow easy grepping and\nbeautification by scripts.  The fields are: name (N), email (E), web-address\n(W), PGP key ID and fingerprint (P), description (D), and snail-mail address\n(S).\n\nN: Saleem Abdulrasool\nE: compnerd@compnerd.org\nD: Minor patches and Linux fixes.\n\nN: Dan Albert\nE: danalbert@google.com\nD: Android support and test runner improvements.\n\nN: Dimitry Andric\nE: dimitry@andric.com\nD: Visibility fixes, minor FreeBSD portability patches.\n\nN: Holger Arnold\nE: holgerar@gmail.com\nD: Minor fix.\n\nN: Ruben Van Boxem\nE: vanboxem dot ruben at gmail dot com\nD: Initial Windows patches.\n\nN: David Chisnall\nE: theraven at theravensnest dot org\nD: FreeBSD and Solaris ports, libcxxrt support, some atomics work.\n\nN: Marshall Clow\nE: mclow.lists@gmail.com\nE: marshall@idio.com\nD: C++14 support, patches and bug fixes.\n\nN: Jonathan B Coe\nE: jbcoe@me.com\nD: Implementation of propagate_const.\n\nN: Eric Fiselier\nE: eric@efcs.ca\nD: LFTS support, patches and bug fixes.\n\nN: Bill Fisher\nE: william.w.fisher@gmail.com\nD: Regex bug fixes.\n\nN: Matthew Dempsky\nE: matthew@dempsky.org\nD: Minor patches and bug fixes.\n\nN: Google Inc.\nD: Copyright owner and contributor of the CityHash algorithm\n\nN: Howard Hinnant\nE: hhinnant@apple.com\nD: Architect and primary author of libc++\n\nN: Hyeon-bin Jeong\nE: tuhertz@gmail.com\nD: Minor patches and bug fixes.\n\nN: Argyrios Kyrtzidis\nE: kyrtzidis@apple.com\nD: Bug fixes.\n\nN: Bruce Mitchener, Jr.\nE: bruce.mitchener@gmail.com\nD: Emscripten-related changes.\n\nN: Michel Morin\nE: mimomorin@gmail.com\nD: Minor patches to is_convertible.\n\nN: Andrew Morrow\nE: andrew.c.morrow@gmail.com\nD: Minor patches and Linux fixes.\n\nN: Michael Park\nE: mcypark@gmail.com\nD: Implementation of <variant>.\n\nN: Arvid Picciani\nE: aep at exys dot org\nD: Minor patches and musl port.\n\nN: Bjorn Reese\nE: breese@users.sourceforge.net\nD: Initial regex prototype\n\nN: Nico Rieck\nE: nico.rieck@gmail.com\nD: Windows fixes\n\nN: Jon Roelofs\nE: jonathan@codesourcery.com\nD: Remote testing, Newlib port, baremetal/single-threaded support.\n\nN: Jonathan Sauer\nD: Minor patches, mostly related to constexpr\n\nN: Craig Silverstein\nE: csilvers@google.com\nD: Implemented Cityhash as the string hash function on 64-bit machines\n\nN: Richard Smith\nD: Minor patches.\n\nN: Joerg Sonnenberger\nE: joerg@NetBSD.org\nD: NetBSD port.\n\nN: Stephan Tolksdorf\nE: st@quanttec.com\nD: Minor <atomic> fix\n\nN: Michael van der Westhuizen\nE: r1mikey at gmail dot com\n\nN: Larisse Voufo\nD: Minor patches.\n\nN: Klaas de Vries\nE: klaas at klaasgaaf dot nl\nD: Minor bug fix.\n\nN: Zhang Xiongpang\nE: zhangxiongpang@gmail.com\nD: Minor patches and bug fixes.\n\nN: Xing Xue\nE: xingxue@ca.ibm.com\nD: AIX port\n\nN: Zhihao Yuan\nE: lichray@gmail.com\nD: Standard compatibility fixes.\n\nN: Jeffrey Yasskin\nE: jyasskin@gmail.com\nE: jyasskin@google.com\nD: Linux fixes.\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/LICENSE/3rd_party/NOTICE",
    "content": "mbedtls -> https://github.com/ARMmbed/mbedtls\n----------------\nCopyright (C) 2006-2018, ARM Limited, All Rights Reserved\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n-------------------------------------------------------------------------------\n\n\nhttp-parser -> https://github.com/nodejs/http-parser\n----------------\nCopyright Joyent, Inc. and other Node contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE. \n\n-------------------------------------------------------------------------------\n\n\njson -> https://github.com/nlohmann/json\n----------------\nCopyright (c) 2013-2018 Niels Lohmann\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\nkissfft -> https://github.com/mborgerding/kissfft\n----------------\nCopyright (c) 2003-2010 Mark Borgerding . All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice,\nthis list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\nmay be used to endorse or promote products derived from this software without\nspecific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nlibsamplerate -> https://github.com/erikd/libsamplerate\n----------------\nCopyright (c) 2012-2016, Erik de Castro Lopo <erikd@mega-nerd.com>\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\n   notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n   notice, this list of conditions and the following disclaimer in the\n   documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-------------------------------------------------------------------------------\n\n\nzlib -> https://www.zlib.net \n----------------\nCopyright (C) 1995-2017 Jean-loup Gailly and Mark Adler\n\nThis software is provided 'as-is', without any express or implied\nwarranty.  In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\n claim that you wrote the original software. If you use this software\n in a product, an acknowledgment in the product documentation would be\n appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be\n misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nJean-loup Gailly        Mark Adler\njloup@gzip.org          madler@alumni.caltech.edu\n\n-------------------------------------------------------------------------------\n\n\nyahdlc -> https://github.com/bang-olufsen/yahdlc\n----------------\nCopyright (c) 2015 Bang & Olufsen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n-------------------------------------------------------------------------------\n\n\n==============================================================================\nlibc++ License\n==============================================================================\n\nThe libc++ library is dual licensed under both the University of Illinois\n\"BSD-Like\" license and the MIT license.  As a user of this code you may choose\nto use it under either license.  As a contributor, you agree to allow your code\nto be used under both.\n\nFull text of the relevant licenses is included below.\n\n==============================================================================\n\nUniversity of Illinois/NCSA\nOpen Source License\n\nCopyright (c) 2009-2017 by the contributors listed in CREDITS-LIBC++.TXT\n\nAll rights reserved.\n\nDeveloped by:\n\n    LLVM Team\n\n    University of Illinois at Urbana-Champaign\n\n    http://llvm.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal with\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimers.\n\n    * Redistributions in binary form must reproduce the above copyright notice,\n      this list of conditions and the following disclaimers in the\n      documentation and/or other materials provided with the distribution.\n\n    * Neither the names of the LLVM Team, University of Illinois at\n      Urbana-Champaign, nor the names of its contributors may be used to\n      endorse or promote products derived from this Software without specific\n      prior written permission.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\nCONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\nSOFTWARE.\n\n==============================================================================\n\nCopyright (c) 2009-2014 by the contributors listed in CREDITS-LIBC++.TXT\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "iOS/engine.xcframework/ios-x86_64-simulator/engine.framework/Modules/module.modulemap",
    "content": "framework module engine {\n  module CUEEngine {\n    header \"CUEEngine.h\"\n  }\n\n  module AudioSession {\n    header \"AudioSession.h\"\n  }\n\n  module CUETrigger {\n    header \"CUETrigger.h\"\n  }\n\n  module CUEErrno {\n    header \"CUEErrno.h\"\n  }\n}\n"
  }
]